k8s各个版本的更新和改进
3月28日,Kubernetes 1.6正式发布。此次1.6共发布29个新特性,包括9个stable特性,8个alpha特性以及12个beta特性。该版本重点关注集群扩展规模和自动化。目前最多可以支持5000个节点的集群。动态存储配置特性已经进入stable。基于角色的访问控制(RBAC)、kubefed、kubeadm和一些调度特性进入beta。 扩展和联邦: 目前,Kubernetes已经能够支持5000节点的集群(150000 pod),致力于寻求规模效应的大企业将非常乐于看到这一点。在总集群规模上实现150%的扩展,主要由CoreOS的新版本etcd v3 驱动,如果你在部署像搜索或者游戏这样不断增长消费集群的应用,相信这对你来说是个振奋的消息。
对于那些扩展需求超过5000节点或者跨多个区域、云部署的用户,联合功能能够实现多个Kubernetes集群的连接并通过单个API终端通信。在最新版本中,命令行kubefed功能已经入beta——该功能将提升对本地集群的支持。当前,kubefed支持在连接集群时自动配置kube-dns,并传递参数给联合组件。
安全和设置:关心安全的用户会发现RBAC,目前beta版本通过严格限定系统组件的默认角色,极大的增强了安全保护。新版本中默认的RBAC策略给予控制面板组件、节点和控制器限定的权限。RBAC支持集群管理员基于单个命名空间,有选择的给予特定用户或者服务账户更细粒度的权限,以访问特定的资源。
很多用户想要一种简单的方式安全配置物理机或者云服务器上的集群,现在他们可以应用kubeadm,当前在beta状态。通过一系列的命令行标志和包含RBAC设置、引导标志系统应用和增强认证API在内的基础特性集,kubeadm功能实现了极大的增强。
高级调度:新版本增加了一系列强大且通用的调度结构,将实现pods调度的控制,包括在异构集群中限制pods到特定的节点的规则,跨故障域如节点、机架或者区域分布或打包pods。
节点亲和性/反亲和性:目前进入beta状态,该功能支持用户基于节点标签将pod调度限制于某个特定节点。内建或者定制节点标签能够选择特定的区域、主机名、硬件架构、操作系统版本、专有硬件等等。该调度规则可根据用户对于调度器的控制实施。 污点(taint)/耐受(toleration),是一个相关的特性,它支持将pods排除在特定节点之外,该特性当前也在beta状态,一旦完全实现,将支持节点集合归于特定用户集合,或者将拥有专有硬件的节点对需要该专有硬件的pod可用,而在不需要的时候可以排除pod。
有时候,用户需要协同调度服务,例如最优化南北或东西通信。Pod亲和性/反亲和性也在beta阶段,它通过用户设置任意拓扑结构中分布或者打包pod的软硬需求实现上述功能。
最后,为了最终的调度灵活性,你可以运行自己定制的调度器,或者Kubernetes默认调度器。每一种调度器都支持不同集的pod。该版本中多调度器正在beta阶段。
动态存储配置:新版本Kubernetes中扩展的存储自动化特性将对部署有状态应用的用户大有裨益。
很早的时候,Kubernetes已经支持自动连接和分离存储、格式化磁盘、按照pod规格安装和卸载卷以及实现pod在节点间平滑的迁移。除此之外,PersistentVolumeClaim (PVC)和PersistentVolume (PV) 对象将存储需求与特性存储实现分离开来,实现跨一系列云和本地环境的pod规格的可移植性。在新版本中,存储类和动态卷配置趋于稳定,通过实现按需创建和删除存储、消除预配置需求实现了自动化。
该设计支持集群管理员定义和公开集群内多种存储方式,每一种都带有定制的参数集合。终端用户不用再担心存储配置的复杂性和差异性,尽管他们还是要在多种存储选项中做出选择。
新版本的Kubernetes,带来了一整套内建默认的实现完整存储配置的生命周期过程。特别指出的是,面向AWS、Azure、GCP、OpenStack和VMware vSphere,Kubernetes当前预安装了系统定义的存储类对象。这让Kubernetes用户脱离了手动设置存储类对象。这是PVC对象在以上云中实现的一种默认行为的转变。默认行为指的是通过删除再生策略动态配置卷。这意味着一旦PVC被删除,该动态配置的卷将自动删除,因此用户不必再做任何的清理。
除此之外,我们扩展支持的存储还包括:
ScaleIO Kubernetes卷插件支持pod无缝访问和应用存储于ScaleIO 卷上的数据。 Portworx Kubernetes卷插件增加了新特性,支持Portworx作为Kubernetes集群存储供应商。 Portworx能够池化用户服务器或将服务器、云实例转变为融合的、高度可用的计算和存储节点。 对于使用COS节点镜像的集群,支持 NFSv3、NFSv4、 GlusterFS 。 支持用户写和运行动态PV配置。 Beta版本支持对持久卷的挂载选项
容器运行时接口, etcd v3 和Daemon set 更新:
- 尽管用户可能不会直接与容器运行时环境或者API数据库服务器交互,但它们是使用户面向Kubernetes功能的基础组件。
- Docker-CRI实现已进入beta,在kubelet中默认支持,Alpha支持其他运行时环境,cri-o、frakti、 rkt也已经实现。 API服务器的默认后端存储已经对新集群默认升级使用etcd v3了。如果你正从1.5版本集群升级,应该注意保证数据迁移窗口的连续性。 随着Kubelet公布了一个管理员可配置的节点分配特性,保留新系统后台进程的计算资源,使得节点可靠性得到了增强。 后台程序集更新支持在后台程序集上执行滚动更新。