这篇文章整理一下Kubernetes发展过程中的各个版本的主要特性,从2015年Kubernetes推出1.0版至今过去了4年,4年的一个Cycle,我们来看一下Kubernetes演进的程度。
Kubernetes 1.0
2015年7月,Kubernetes发布了1.0的版本,作为Google开源的容器编排系统,他的推出对市场引起了巨大的震动,Redhat的OpenShift退出了PaaS之争,宣称OpenShift 3将运行在Kubernetes之上,Kubernetes从它出现时就是容器编排的最为重要的选手,受到了大量开发者的喜爱。
Kubernetes 1.1
2015年11月,发布了Kubernetes 1.1版,主要在应用程序的构建和部署方面提供了更多的功能,包括
- 性能的改善:Kubernetes在设计之初就是按照Google规模的工作负荷来进行的,在这个版本中已经有了数千节点集群的使用样例,以及在单个集群上超过百万级别的QPS的性能表现。
- 网络吞吐:改进了系统架构,增强了可靠性,较好的消除了CPU的开销,确保了Kubernetes可以处理大规模网络吞吐量的能力。
- Pod横向自动伸缩:提供了Pod的横向自动伸缩功能的Beta版,使得Pod可以根据使用率进行扩展或者收缩
- HTTP负载均衡:提供内置的HTTP流量路由能力的Beta版本,可以通过不同的URL来获取不同的服务的Ingress的早期能力的雏型。
- 作业对象:提供了可集成的批处理作业能力的Beta版本。
- 滚动式更新:滚动式更新可以提供对现有正在运行的应用不造成影响的能力,在这个版本中已经可以确保更新的Pod在继续更新前是健康的。
- KubeCon开幕,400名左右的社区成员以及数十家供应商参与会议。
- 合作伙伴:CoreOS押注了他们“允许任何公司在任何地方部署、管理和保护其容器”的产品Tectonic,他们认为数据中心的未来是基于Kubernetes的,目前这一论断逐渐得到了证明。
Kubernetes 1.2
2016年3月,发布了Kubernetes 1.2版,主要特性增强包括:
- 性能提升:集群规模提升四倍,单个集群支持1000个节点,支撑30000个pod。单节点上的kubelet支撑的pod数达到100,整体性能也得到了较大提升。
- 动态配置管理:引入ConfigMap作为动态配置管理功能。
- pod控制器Deployments:提出了全新概念的Deployments,作为对于pod的控制,Deployments实现了声明式的应用发布和升级,保证了应用的高可用性和快速回滚的能力,支持版本化。
- 部署简化:使用DaemonSets简化了One-Pod-Per-Node的基础类应用的部署管理(在每个节点上有且只有一个应用),这种应用的场景最为常见的就是监控节点的日志收集相关的应用,每个节点必须有一个相关的应用存在做日志的时候作业。
- 节点维护:更加优雅的进行节点的维护,新增kubectl drain命令可以更好地适应节点的维护等日常维护行为
- 流量控制:通过ingress API支持TLS和七层网络,可以更加方便集成到网络环境中,使得service也更加容易部署。
- 可视化界面:dashbaord替代了1.1版之前的kube-ui,提供了对集群操作的可视化界面。
- 横向扩展:HPA(Horizontal Pod Autoscaling )进行进一步的完善,支持自定义的Autoscaling指标,HPA(Alpha版)支持自定义模版,允许用户指定应用级别的指标和伸缩相关的阈值。
Kubernetes 1.3
2016年7月,发布了Kubernetes 1.3版,主要特性增强包括:
- 对有状态应用的支持:在1.3版本中引入了PetSet作为有状态服务(Alpha版),此功能在1.5时重命名为StatefulSet(Beta版)
- 联邦(Ubernetes):为了解决跨区域或者云服务商的多集群服务管理能力,引入了名为Ubernetes的联邦功能,就是后续的Federation。Kubernetes分散地运行在多个数据