01.认识Kubernetes
什么是Kubernets
套用官方文档对Kubernetes的定义,翻译成中文的意思是:
Kubernetes,也称为k8,是一个用于自动化部署、扩展和管理容器化应用程序的开源系统。
它将组成应用程序的容器分组为逻辑单元,以便于管理和发现。Kubernetes建立在15年在b谷歌运行生产工作负载的经验之上,结合了来自社区的最佳想法和实践。
为什么是K8S
K8S的特点:自我修复、弹性伸缩、自动部署和回滚、服务发现和负载均衡、机密和配置管理、存储编排、批处理
技术选型:Apache Mesos VS Docker Swarm VS Google Kubernetes
Mesos的特点和优势
Mesos是一个分布式调度系统内核,早于Docker产生,Mesos作为资源管理器,从DC/OS(数据中心操作系统)的角度提供资源视图。主/从结构工作模式,主节点分配任务,并用从节点上的Executor负责执行,通过Zokeeper给主节点提供服务注册、服务发现功能。通过Framework Marathon提供容器调度的能力。
经过时间的检验,作为资源管理的Apache Mesos在容器之前就已经出现很久了,支持运行容器化和非容器化的工作负载,可以支持应用程序的健康检查,开放的架构,支持多个框架和多个调度器,通过不同的Framework可以运行Haddop/Spark/MPI等多种不同的任务。支持超大型规模的节点管理,模拟测试支持超过5w+节点,在大规模上用有较大优势。
Swarm的特点和优势
Docker Swarm是一个由Docker开发的调度框架.由Docker自身开发的好处之一就是标准Docker API的使用,Swarm由多个代理(Agent)组成,把这些代理称之为节点(Node)。这些节
点就是主机,这些主机在启动Docker Daemon的时候就会打开相应的端口,以此支持Docker远程API,这些机器会根据Swarm调度器分配给它们的任务,拉取和运行不同的镜像。
从Docker1.12版本开始,Swarm随Docker一起默认安装发布。由于随Docker引擎一起发布,无需额外安装,配置简单,支持服务注册、服号发现,内置Overlay Network以及Load
Balancer。与Docker CL非常类似的操作,对熟悉Docker的人非常容易上手学习。入门门槛、学习成本较低,使用更便捷,适用于中小型系统。
Kubernetes的特点和优势
Kubenetes是基于Google在过去十五年来大量生产环境中运行工作负载的经验,Kubernetes的实现参考了Google内的资源调度框架。但并不是Borg的内部容器编排系统的开源,而是借鉴Google从运行Borg获得的经验教训,形成了Kubernetes项目。
它使用Label和Pod的概念来将容器划分为逻辑单元。Pods是同地协作(co-located)容器的集合,这些容器被共同部署和调度,形成了一个服务,这是Kubernetes和其他两个框架的主要
区别。相比于基于相似度的容器调度方式(就像Swarm和Mesos),这个方法简化了对集群的管理。
最流行的容器编排解决方案框架,基于Google庞大的生态圈及社区产生的产品。通过Pods这一抽象的概念,解决Container之间的依赖于通信问题。Pods,Services,Deployments是独立
部署的部分,可以通过Selector提供更多的灵活性。内置服务注册表和负载平衡。适用度更广,功能更强大,相较于Mesos来说节点规模校小。