小言_互联网的博客

Kubernetes主要特性回顾

250人阅读  评论(0)


这篇文章整理一下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分散地运行在多个数据中心中,集群联邦就是为了解决这个问题对分散的集群进行统一的管理,提供跨数据中心的支持相关的特性。主要的挑战就是:本地亲和性、跨集群的服务发现、调度、迁移等需求。
  • 支持GPU:支持NVDIA GPU,在高性能运算和人工智能等方向提供基础支撑能力
  • 容器标准:Kubernetes从提出时就没有绑定Docker的想法和意愿,它提供的是一个通用的容器编排平台,而不是Docker编排平台,虽然目前阶段的事实就是Docker编排平台。在1.3版本中推出了Rktnetes 1.0,主要的功能就是支持CoreOS下当时快速发展的rkt项目,这个版本是第一个整合rkt运行环境的稳定版本,可以用来替换Docker。

Kubernetes 1.4

2016年9月,发布了Kubernetes 1.4版,主要特性增强包括:

  • 简化集群部署:引入了kubeadm,集群的部署也可以像swarm那样通过init和join两条命令来轻松创建了。
  • 对有状态应用的支持:提供了Init-Container beta版,在启动主容器之前运行一个或者多个容器以完成相关依赖的能力;动态PVC升至Beta版,允许用户通过API与存储提供商进行关联;
  • 联邦:为了在复杂的多云环境中更好地推进应用的构建与部署,提供了联邦ReplicaSets的Beta版,副本可以在联邦的环境下创建,提供了联邦Services的Beta版以,提供了联邦Ingress的Alpha版,可与GCP进行很好的互动。
  • 容器安全:提供了Pod安全策略,管理员可以使用service acount、group以及特定权限的用户结合起来,提供一个安全的使用环境; 增加了AppArmor的支持,提供了更好的审计和系统监控。
  • 可视化界面:使用dashbaord可完成90%的命令行操作才能完成的作业
  • 引入了pod间亲和性和反亲和性的Alpha版的功能

Kubernetes 1.5

2016年12月,发布了Kubernetes 1.5版,主要特性增强包括:

  • 联邦:增加了联邦对于DaemonSets、Deployments和ConfigMaps等特性的支持。
  • 简化集群部署:继续强化kubeadm的功能,引入kubefed以简化联邦相关操作。
  • Windows支持:增加了对于Windows容器的支持,另外微软月宣称将Kubernetes整合至Azure之上。
  • CRI(容器运行时接口):发布了插件化、可插拔的容器运行时接口。以卷插件为例,此版本中共支持23种卷插件,含括GCE、AWS、Azure等公有云以及集运Openstack和VMware的私有云,同时提供了对于WMware Photon持久卷的支持。

Kubernetes 1.6

2017年3月,发布了Kubernetes 1.6版,主要特性增强包括:

  • 简化集群部署: kubefed与kubeadm升至Beta版
  • 状态存储:使用etcd v3进行状态存储
  • 亲和性增强: 节点亲和性/反亲和性调度、Pod亲和性/反亲和性调度升至Beta版
  • 基于角色的访问控制RBAC:RBAC升至Beta版,
  • 多调度器: 多调度器功能升至Beta版
  • DaemonSets: 可以使用滚动更新方式更新DaemonSets
  • 预装StorageClass:默认为Aure、AWS、GCE、OpenStack和VMware vSphere安装系统预置的StorageClass对象
  • 多GPU支持: 相较于1.3中只能利用节点上一个NVidia的GPU,在Kubernetes 1.6中会自动识别节点上所有的NVidia GPU并进行调度

Kubernetes 1.7

2017年6月28日,发布了Kubernetes 1.7版,主要特性增强包括:

  • 性能:支持单集群5000节点和15万Pod,这种负载规模之下,仍满足API调用延迟的SLO为1秒(99%),在镜像已经拉取的情况下Pod及容器的启动在5秒之内完成(99%)完成。当然超过5000节点也是支持的,只是SLO可能有所下降。
  • 安全: 网络策略API(Network Policy API)升至稳定版本;新增节点授权器Node authorizer和准入控制插件(admission control plugin)来限制kubelet对于节点、Pod和其对象的访问;提供了kubelet TLS bootstrap相关功能;审计日志(Audit log)增强了定制化和可扩展性,支持事件过滤和webhook。
  • 对有状态应用的支持:StatefulSet Update升至Beta版,可使用包括滚动升级的多种升级策略;通过Pod管理策略(Pod Management Policy),StatefulSet支持更快的伸缩和启动,很好地提升了性能;提供了Alpha版的本地存储特性,用户可通过标准的PVC/PV接口来访问本地存储卷;DaemonSet添加了智能回滚和历史记录功能。
  • 扩展性:用户可以向集群添加自制的具有Kubernetes风格的API;容器运行时接口(CRI)与containerd 1.0的整合至Alpha版,已支持基本的Pod生命周期管理和镜像管理。
  • 联邦: 引入了基于策略的联合资源放置(Policy-based Federated Resource Placement),升至Alpha版
  • TPR: 废弃第三方资源(Third Party Resource,TPR),使用自定义资源定义(Custom Resource Definition,CRD)取而代之,TPR将在1.9正式废弃,

Kubernetes 1.8

2017年9月,发布了Kubernetes 1.8版,主要特性增强包括:

  • 集群部署: kubeadm提供了self-hosted的自举功能,并在kubeadm中提供一个新的升级命令,对组件的自举提供Alpha版功能的支持;
  • API迁移: 将应用相关的一部分API诸如DaemonSet、Deployment、ReplicaSet和StatefulSet等移至 apps/v1beta2
  • 安全与认证:基于角色的访问控制RBAC功能升至v1;Advanced Auditing高级审计功能升至Beta版
  • 网络: 增强了Network Policy API,支持Pod的流量策略,相关特性升至Beta版;改进了kube-proxy,在iptabless和userspace模式基础之上,引入了Alpha版的IPVS模式。
  • 存储: 扩展了Kubernetes的存储API,新生了卷扩容和快照的功能;用户能够更好地控制存储,包括可以设置临时存储requests和limits,可以指定挂载选项,可以暴露更多存储指标信息等。
  • 调度: 引入Pod优先级和抢占特性,扩展了共享集群的概念,允许在单一集群中混合运行不同类型的应用与任务,提高了集群的利用率,特性升至Alpha版
  • 横向扩缩容: HPA的功能进一步稳定和提升,HPA支持自定义指标,Cluster Autoscaler提升了性能与错误报告能力; 支持新版的HPA API,相关的API和组件升至稳定版本,比如: resource Metrics API、custom metrics API和metrics-server等。

Kubernetes 1.9

2017年12月,发布了Kubernetes 1.9版,主要特性增强包括:

  • API: apps/v1 Workloads API升至GA版,将DaemonSet、Deployment、ReplicaSet和Stateful API进行了整合,此次发布的v1版本拥有长期的向下兼容性的保证。
  • Windows支持: Kubernetes最初是专门针对Linux系统开发的,Kubernetes对于Windows的workloads的支持已经升至Beta版
  • 存储: CSI容器存储接口作为一项跨行业标准提议,能够降低云原生存储开发的门槛,确保兼容性水平。CSI升至Alpha版,允许第三方存储供应商无需接触核心Kubernetes代码的前提执行开发自己的解决方案。
  • CRD: 定制化资源定义CRD开始Beta版测试;
  • CPU: Node硬件加速仅需人Alpah测试阶段,可利用GPU资源实现机器学习以提高性能
  • DNS: CoreDNS的Alpha版本允许用户利用标准工具进行安装
  • IPVS模式: kube-proxy的IPVS模式进入了Beta模式

Kubernetes 1.10

2018年3月,发布了Kubernetes 1.10版,主要特性增强包括:

  • 存储: CSI的Kubernetes实现升至Beta版,卷插件的安装变得像部署Pod一样简单,使得三方存储厂商能够在核心Kubernetes代码库之外提供其解决方案;持久化本地存储升至Beta版本
  • 安全: 提供了可扩展的认证,升至Alpha版;用户可以发布二进制插件来处理特定云服务提供商服务的身份验证。
  • 网络:CoreDNS升至Beta版本。

Kubernetes 1.11

2018年6月,发布了Kubernetes 1.11版,主要特性增强包括:

  • 集群内负载均衡: 基于IPVS的集群内负载均衡功能已经趋于稳定,编程接口比iptables更简单的IPVS能够提供高性能的负载均衡功能,但此版本中IPVS并不是默认设置。
  • DNS: CoreDNS正式上线,在用户使用kubeadm时默认生效。
  • 动态kubelet配置:由于Kubelet需要需要命令行标记进行配置,对于运行中的集群进行kubelet进行配置更新较为困难,动态kubelet的配置功能升至Beta版,解决了这一问题。
  • CRD: CRD不在局限与对于点一版本的定制化资源作出定义。
  • 存储: CSI继续增强,提供了对于原始数据块分卷的能力,生孩子Alpha版,降低了向CSI插件传递密件的难度。
  • 新的存储支持:对于持久化分卷的在线大小调整功能升至Alpha版,用户能够增加持久分卷的大小无需终止Pod并卸载相应的分卷。
  • 拓扑感知: 随着有状态的应用的广泛使用,作为一个稳定框架为集群提供存储,CSI得到了持续的改进,存储物理上相对于Pod的位置意味着可能会引起延迟和可靠性问题,因此CSI引入了拓扑感知的概念,此功能升至Alpha版。

Kubernetes 1.12

2018年9月,发布了Kubernetes 1.12版,主要特性增强包括:

  • 安全: TLS得到了较好的改善,简化了向集群添加和删除节点的方式。由于考虑到集群维护时TLS的持续更新与轮换,通过将CSR(Certificate Signing Request)提交给集群内CA(Certificate Authority)的机制来完成证书的生成和认证的过程。
  • 多租户: 隔离和控制是多租户方式的重要内容,在此版中可以通过新的ResourceQuotaScopeSelector功能对资源配额的优先级分配进一步增强;在网络策略(Network Policy)组件egress和ipblock已升至GA版,egress使得管理员能够对流量进行控制,而ipblock则提供了在网络策略中定义CIDR范围的能力
  • 横向扩缩:HPA和VPA(Vertical Pod Autoscaler)已逐渐趋于成熟,HPA算法改进,确保了容器数量能够更加快速地达到适当的大小,HPA API达到v2beta2阶段,增强了在更为广泛的情况下对自定义指标的支持,以确定合适需要增减Pod的数量。VPA作为集群的可选插件,已升至Beta版。
  • 存储:拓扑感知功能升至Beta版。引入持久性卷快照功能,升至Alpha版,允许用户在任何CSI存储提供商支持的特定时点创建和恢复快照,并添加了VolumeSnapshot等三个API资源;
  • Azure增强:Azure集群自动伸缩器趋于问题,允许全局资源自动扩展集群中的Azure节点数,此功能升至稳定版;引入了可用区AZ的支持,升至Alpha版,并可添加拓扑感知配置。

Kubernetes 1.13

2018年12月,发布了Kubernetes 1.13版,主要特性增强包括:

  • 集群部署: kubeadm终于升至GA版,为管理集群提供了稳定的工具,实现便利的升级。
  • 存储: 容器存储接口CSI升至GA版,通过CSI的使用,卷变得真正地可扩展,为第三方存储厂商实现插件功能而无需触及Kubernetes核心代码提供了可能,此规范也升至1.0阶段。
  • DNS: CoreDNS在1.11中已达到一般可用性,在此版中CoreDNS代替kube-dns称为Kubernetes默认的DNS服务器,为Kubernetes提供向后兼容且可扩展的集成服务。使用go编写的CoreDNS管理更加容易,因为它是单个可执行文件和单个进程来提供服务,同时支持创建自定义DNS条目来满足灵活性的需求。
  • 拓扑感知:拓扑感知调度(Topology Aware Volume Scheduling )已达稳定版,这使得调度器能够识别到诸如可用区或者节点等相关的卷的拓扑信息

Kubernetes 1.14

2019年3月,发布了Kubernetes 1.14版,主要特性增强包括:

  • 存储: 主要使用场景在于数据库和分布式文件系统的持久化本地存储,在这个版本中升至GA版,
  • Windows支持:改进了Pod、服务类型、指标与配额、工作负载控制器等,功能与Linux已相近,提供了Windows节点的生产级别支持
  • PID限制: 缺乏限制容器内进程创建PID的能力一直是导致系统资源存在不稳定的可能性因素,此项功能的引入使得管理员可以为每个Pod的PID数设置默认值,并可预留可供分配的多个PID
  • 优先级与抢占: 可以更好地进行Pod的管理,为Pod分配优先级,从而为Kubernetes的控制器在集群资源不足时的决策提供支持。
  • 安全: 因为存在未经身份证明可以进行访问的API,从RBAC基础架构中删除了Discovery API以提高隐私和安全性。
  • 集成kustomize: kustomize提供了声明式的资源配置能力,在这个版本中与kubecl进行了集成,只需要使用-k或者kustomize子命令即可使用这些功能。
  • kubectl插件机制: kubectl插件机制作为独立的二进制文件,可以用于向kubectl添加子命令,已升至稳定版

Kubernetes 1.15

2019年6月,发布了Kubernetes 1.15版,主要特性增强包括:

  • 可扩展性: CRD的Webhook转换(CustomResourceDefinition Webhook Conversion)功能升至Beta、CustomResourceDefinition OpenAPI Publishing升至Beta、CustomResourceDefinitions Pruning升至Beta版,引入了CRD默认值支持(CustomResourceDefinition Defaulting)功能,升至Alpha版
  • 集群部署: 作为集群部署和管理的工具,kubeadm的功能稳定性得到进一步提升,kubeadm的HA部署方式升至Beta版,证书管理更加强大,可以轻松实现证书升级,配置文件API从v1beta1升至v1beta2阶段。另外,kubeadm提出自己单独的logo。
  • 存储: CSI得到了持续的改善,引入了卷克隆等功能
  • 整体的持续性改进: 提升测试覆盖率、改善核心功能级的稳定水平,提高基础小苏的稳定性,完善功能的同时解决挤压的技术债务。

Kubernetes 1.16

2019年9月,发布了Kubernetes 1.16版,在此版中,包含了31项改善,8项功能升级至Beta版,引入15项功能至Alpha版,主要特性增强包括:

  • CRD: 作为扩展Kubernetes资源类型的有效方式,CRD从1.7版可用(Beta版)之后,在1.16版中达到了稳定阶段,升至GA版。
  • Admission webhooks: 作为Kubernetes的扩展机制,Admission webooks从1.9版可用(Beta版)以来,在1.16版中达到了稳定阶段,升至GA版。
  • 指标注册: Kubernetes之前就可以通过使用全局性的指标注册的方式来实现扩展性,在这个版本中得到了进一步的改善,指标能够以一种更为透明的方式进行注册。
  • 卷扩展: 在这个版本中发布了几处与卷和卷变更有关的功能增强,在CSI specs中,卷的大小变更支持(Volume resizing support)升至Beta版,使得任何CSI规格的卷插件的大小都是可以调整的。
  • 拓扑管理器: 引入了一个新的Kubelet组件,其目的在于协调资源分配决策以提供更加优化的资源分配方式。
  • API Server Netwrok Proxy升至Alpha版
  • IPv4/IPv6 双栈协议提供了对Pod和Service的IPv4与IPv6地址的支持。
  • 继续废弃extensions/v1beta1、apps/v1beta1以及apps/v1beta2 相关的APIs,在1.16中弃用这些相关的API。

参考内容

https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.XX.md


转载:https://blog.csdn.net/liumiaocn/article/details/100973103
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场