1、什么是 Kubernetes?
Kubernetes 是一个开源的,用于管理云平台中多个主机上的容器化的应用,
Kubernetes 的目标是让部署容器化的应用简单并且高效(powerful),
Kubernetes 提供了应用部署,规划,更新,维护的一种机制。
Kubernetes 这个名字源于希腊语,意为“舵手”或“飞行员”。k8s 这个缩写是因为k 和 s 之间有八个
字符的关系。 Google 在 2014 年开源了 Kubernetes 项目。
Kubernetes 建立在 Google 大规模运行生产工作负载十几年经验的基础上,结合了社区中最优秀的
想法和实践。
2、为什么需要 Kubernetes?
程序员/运维工程师手动操作部署应用,直接将应用部署在目标机器上,
由于资源不隔离,容易出现资源争抢、依赖冲突等各方面问题。
利用 OpenStask / VMware 等虚拟化技术,将一台目标机器虚拟化为多个虚拟机器,
按照需求将应用部署到不同的虚拟机中,对虚拟机进行动态的水平扩容等管理操作。
相对传统部署自动化、资源隔离的能力提升了,带来的问题是虚拟化的逻辑过重,导致效率不高,
且耗费资源较多。
可以理解为轻量级的虚拟化,完美弥补虚拟化技术过重的问题,且由于直接共享主机硬件资源,
只是通过系统提供的命名空间等技术实现资源隔离,损耗更小,且效率更高。
自我修复
弹性伸缩
自动部署和回滚
服务发现和负载均衡
机密和配置管理
存储编排
批处理
3、企业级容器调度平台对比
Mesos 是一个分布式调度系统内核,早于 Docker 产生,Mesos 作为资源管理器,
从 DC/OS (数据中心操作系统)的角度提供资源视图。主/从结构工作模式,主节点分配任务,
并用从节点上的 Executor 负责执行,通过 Zookeeper 给主节点提供服务注册、服务发现功能。
通过 Framework Marathon 提供容器调度的能力。
经过时间的检验,作为资源管理器的 Apache Mesos 在容器之前就已经出现很久了,
支持运行容器化化和非容器化的工作负载。可以支持应用程序的健康检查,开放的架构。
支持多个框架和多个调度器,通过不同的 Framework 可以运行 Haddop/Spark/MPI等多种不同的任务。
支持超大型规模的节点管理,模拟测试支持超过 5w+ 节点,在大规模上拥有较大优势。
Docker Swarm 是一个由 Docker 开发的调度框架。由 Docker 自身开发的好处之一就是标准
Docker API 的使用,Swarm 由多个代理(Agent)组成,把这些代理称之为节点(Node)。
这些节点就是主机,这些主机在启动 Docker Daemon 的时候就会打开相应的端口,
以此支持 Docker 远程 API。这些机器会根据 Swarm 调度器分配给它们的任务,拉取和运行不同的镜像。
从 Docker1.12 版本开始,Swarm 随 Docker 一起默认安装发布。由于随 Docker 引擎一起发布,
无需额外安装,配置简单。支持服务注册、服务发现,内置 Overlay Network 以及 Load Balancer。
与 Docker CLI 非常类似的操作命令,对熟悉 Docker 的人非常容易上手学习。
入门门槛、学习成本较低,使用更便捷,适用于中小型系统。
Kubernetes 是基于 Google 在过去十五年来大量生产环境中运行工作负载的经验。
Kubernetes 的实现参考了 Google 内部的资源调度框架,但并不是 Borg 的内部容器编排系统的开源,
而是借鉴 Google 从运行 Borg 获得的经验教训,形成了 Kubernetes 项目。
它使用 Label 和 Pod 的概念来将容器划分为逻辑单元。Pods 是同地协作(co-located)容器的集合,
这些容器被共同部署和调度,形成了一个服务,这是 Kubernetes 和其他两个框架的主要区别。
相比于基于相似度的容器调度方式(就像 Swarm 和Mesos),这个方法简化了对集群的管理。
最流行等容器编排解决方案框架,基于 Google 庞大的生态圈及社区产生的产品。
通过 Pods 这一抽象的概念,解决 Container 之间的依赖于通信问题。
Pods,Services,Deployments 是独立部署的部分,可以通过 Selector 提供更多的灵活性。
内置服务注册表和负载平衡。
适用度更广,功能更强大,相较于 Mesos 来说节点规模较小,