简单来说,Kubernetes是和Mesos Marathon类似的容器编排框架,它也是一个自动化、容器化的应用程序部署扩展和管理的开放源代码系统。
Kubernetes通过Master节点进行容器的统一编排决策和管理(类似人体的大脑),通过Worker节点(或者直接叫做Node节点)进行容器引擎(如Docker Engine)的配合和容器Container的实际操作(类似人体的手,但不止一双,可以有很多只手),真正实现了从单一容器的管理,向微服务应用的容器化落地的飞跃,提供了包含计算资源管理、存储资源管理、网络服务发现、系统和应用监控、软件升级回滚、安全认证等等主题的完整解决方案。
图片来自dzone.com,图片版权归属原作者
Kubernetes能做的内容很多,笼统起来看可以归结为以下几条问答题:
- 虚拟数据中心管理
狄仁杰:我有一个数据中心,既想能同时支持开发、测试、生产环境,又希望统一进行资源和容器的管理。元芳,此事你怎么看?
李元芳:回大人,可以通过Kubernetes的namespace实现逻辑集群,完成容器环境的隔离。 - 软件发布和回退
狄仁杰:我想把自己开发的软件像yum intall、pip install这样方便地进行安装管理,并且可以指定版本方便地进行回退,有没有好方法?
李元芳:回大人,您可以用Kubernetes进行代码发布和回退,还可以用配套的Helm和Jenkins进行软件包和CI/CD的整体控制,非常灵活方便。 - 网络和存储透明管理
狄仁杰:我的开发团队对于网络和存储的细节不太了解,但是现在流行devops文化,怎么让他们快速地学习网络和存储技术,独立完成应用的网络和存储配置呢?
李元芳:回大人,不需要他们专门学习存储和网络知识。Kubernetes容器技术的服务发现层抽象了网络访问,存储的PV/PVC两级管理技术抽象了存储的配置,只要他们能提出明确的需求,Kubernetes自动可以完成相应的资源分配。 - 弹性扩缩容
狄仁杰:我想让应用可以根据策略自动地增加资源或者释放资源,元芳,你怎么看?
李元芳:回大人,此事必定有蹊跷。我听说Kubernetes可以很方便地进行容器弹性扩缩容,应该可以解决问题。我们可以去听听张飞扬老师的Kubernetes章节和容器弹性扩缩容章节,说不定会有所收获。 - 高可用
狄仁杰:我还想让我的应用可以实现全链路高可用,元芳,你怎么看?
李元芳:大人,听说Kubernetes本身的集群是高可用的,同时上面发布的容器又可以通过负载均衡和Service功能实现容器高可用。
狄仁杰: 元芳,此工具甚好,还是你懂我啊。
Kubernetes好归好,但是它这个长长的名字的读音确实是吓坏了不少同学,为了方便大家记忆,我们通常将其中间的ubernete这8各字符用8来代替,这也就是K8S缩写的由来。K8S这个昵称,是不是很像NBA球场上大家熟悉的“字母哥”一样,叫起来特别亲切啊。
Kubernetes的发展
Kubernetes开源架构的源头来自于Google生产系统中运行的内部集群管理系统Borg。Google将在Borg中的10多年经验在2014年开源出来,开启了Kubernetes热潮的端倪。同年,微软、RedHat、IBM、Docker、CoreOS、Mesosphere和Saltstack等公司相继加入Kubernetes生态圈。次年,VMware、HP、Intel等公司也相继加入。也正是在2015年,随着Kubernetes 1.0正式发布,掀开了容器编排管理一发不可收拾的大幕。
Kubernetes在这场容器编排的大角逐中,从普通选手(当时Docker是容器技术的裁判,而Docker Swarm、Apache Mesos、Google Kubernetes分别是Docker容器编排的选手)逐步变成了领跑选手,进而升级为了裁判(由Kubernetes主导容器编排,而将Docker和CoreOS的Rkt等容器技术纳入容器隔离技术的角逐中),从而在容器届一骑绝尘。