| 为 | 容 | 器 | 技 | 术 | 而 | 生 |
技术翻译/评论:stonesfour、七九天 编辑:夏天、小君君
9 月 27 日,2018 年的第三个版本 Kubernetes 1.12 正式发布。为进一步提升 Kubernetes 的稳定性,此次版本关注对内部功能地改进和 Kubernetes 已有功能改善。最新版本在安全性和 Azure 等关键功能作出改进。另外,此版本新增了两个备受期待的功能,并已达到稳定(GA)阶段:Kubelet TLS Bootstrap 和对 Azure 虚拟机规模集(简称 VMSS)支持。 这些新功能的加入意味着 Kubernetes 具有更高的安全性、可用性、弹性和易用性,可以更快地将生产应用程序推向市场。该版本也表明 Kubernetes 开发者团队已经日趋成熟。
在 Kubernetes 1.12 版本发布的第一时间,「K8sMeetup 中国社区」邀请了来自才云 Caicloud 的一线研发工程师对 GitHub 权威 Release Notes 和 Kubernetes.io 版本发布文章进行技术解读和评论,希望能为大家使用 Kubernetes 带来一些有益参考。
两大功能更新
Kubelet TLS Bootstrap 达到 GA 阶段
Kubelet TLS Bootstrap 的稳定版本发布。在 Kubernetes 1.4 中,Kubernetes 引入了一个 API,用于从集群级证书颁发机构(CA)获取请求证书。引入 API 的初衷是为 kubelet 启用 TLS 客户端证书的配置。 kubelet 可通过这个功能自行引导至 TLS 安全集群。最重要的是,该功能可实现签名证书的自动提供与分发。
之前,kubelet 首次运行时,它需要在集群启动期间在其他进程中为其提供客户端凭据。这些工作为操作人员带来了负担。由于这个任务的手动执行非常繁重,因此许多操作人员为全部 kubelet 部署一套具有单个凭证和单一身份的集群,但这样的设置阻止了节点锁定功能的部署,如 Node authorizer 和 NodeRestriction admission controller。 为了缓解这种情况,SIG Auth 为 kubelet 引入了一种生成私钥和 CSR 的方法,可将其提交到集群级证书签名过程中。目前,v1(GA)标识代表已达到生产级别的稳定性,并具有长期向下兼容的保证。
除此之外,Kubelet server certificate bootstrap 和轮询已发布 beta 版。目前,当 kubelet 首次启动时,会生成一个自签名证书/密钥对,用于接收传入的 TLS 连接。该功能引入了一个在本地生成密钥,然后向集群 API 服务器发出证书签名请求,以获取由集群的根证书颁发机构签名的关联证书的过程。此外,当证书临近过期时,可使用相同的机制来请求更新证书。
对 Azure 虚拟机规模集(VMSS)和 Cluster-Autoscaler 的支持现已稳定
用户可以通过 Azure 虚拟机规模集(VMSS)创建和管理同类虚拟机资源池,它可以根据需求或预设计划自动增加或减少。用户可以实现轻松管理、扩展和负载均衡多套虚拟机,从而提供高可用性和应用程序弹性。这个功能非常适合为 Kubernetes workload 运行的大型应用程序。
借助这一新的稳定功能,Kubernetes 支持使用 Azure VMSS 扩展容器化应用程序,另外将其与 cluster- autoscaler 集成,还具备根据相同条件,自动调整 Kubernetes 集群大小的功能。
Release Note 15 个重要更新
SIG API 在此版本中开发了 “dry run” 功能,该功能使用户能够预览特定命令结果而无需真正使其生效。
SIG Autoscaling 专注于改进 HPA (Horizontal Pod Autoscaling)API 和算法:
Sig Azure 主要精力放在了两个新的 alpha 功能:
SIG CLI 专注于实现新的插件机制,作者为插件提供了一个通用 CLI 工具库,并进一步重构了代码。
这是 SIG Cloud Provider 的第一个 Kubernetes 版本。在 v1.12 中,SIG Cloud Provider 专注于构建流程和基础架构,以更好地支持现有和新的云提供商。 其中一些举措(其中许多仍在进行中)是:
除此之外,SIG Cloud Provider 一直致力于从 kubernetes / kubernetes 中删除云提供商代码。
在 1.12 中,SIG Cluster Lifecycle 通过修复一些 bugs 并添加一些新的重要功能,专注于改善 kubeadm 中的用户体验。
以下列出了对 kubeadm 所做的一些更改:
新增 ibmcloud 支持,SIG-ibmcloud 开始关注 SIG 的建立并与 SIG 成员共享 IBM Clouds 正在进行的 Kubernetes 工作,如可伸缩性测试、Kubernetes 升级策略等,并开始处理将云提供程序代码移动到公共 GitHub repo 的过程。
没有实现新的功能,主要在原功能基础上对 metrics-server 内部结构大量重构,以及对一些错误进行修复。
Node 方面推动了一些特性开发,并且在一些关键功能点上做了额外的提升。
Node 将 PoStActoPrimeNAMSePosits 配置特性从 alpha 转换为 beta。该特性允许 Pod 规范请求 Pod 中的所有容器共享公共进程 Namespace。
其中添加了两个 alpha 特征:
同时,SIG 继续致力于通过修复 bug 来提高可靠性,同时制定未来特性的设计和实现。
OpenStack 继续在修复 bug 和不断完善自身功能。新功能主要在 OpenStack 自身开发完成,并继续推动 OpenStack 与 Kubernetes 之间集成。
内部错误修复和改进包括:
OpenStack bug 修复和新功能:
Scheduling 方面主要集中提高调度器性能和可靠性方面开发,主要体现在以下几方面:
service-catalog 方面推动了一些特性开发,并且在一些关键特性上做了额外的提升。
我们将 Kubernetes volume topology 特性提升为 beta 版,该功能使 Kubernetes 能够理解并智能化处理 volume 可访问信息。(如: the “zone” a cloud volume is provisioned in, the “rack” that a SAN array is accessible from, 等等)
dynamic maximum volume count 升级为 beta 版。该功能指定每个节点的给定卷类型的最大数量作为节点特征的函数(如:较大节点的较大限制,较小节点的较小限制)。
我们本季度还做了许多容器存储接口(CSI)功能,预计在下一个 Kubernetes 版本中将 CSI 从 beta 升级到 GA。这包括将依赖的 “mount namespace propagation” 功能逐渐转换为 GA,将 Kubelet 插件注册机制转移到 beta,为新的 CSI 驱动程序注册表添加 alpha 支持以及拓扑,并添加一些 alpha 功能以支持使用 “local ephemeral volumes” 的 CSI(即,在 Pod 的生命周期中存在的卷,包含一些注入的信息,如 token 或 secret)。
Kubernetes v1.12 版本还为 volume snapshotting 引入了 alpha 支持。此功能引入了使用 Kubernetes API 创建/删除卷快照和从快照创建新卷的功能。
VMware 开发主要致力于修复 in-tree cloud provider 中的 bug,开始 external cloud provider 的开发,以及获取 vSphere 中 cluster-api 的拥有权。
In-tree cloud provider 错误修复与改进包括:
The external cloud provider 已经建立并与 in-tree 在一定程度上开始特性验证,我们期望稳定它并将其作为首选部署模型 1.13。我们也开始在 CSI 插件中外部化 vSphere 卷功能,以完全重现当前 in-tree 内存储功能。
Cluster API 工作目前正在对现有代码库进行全面改造,将 Terraform 移除并直接使用 govmomi。
Windows 在继续完善现有功能的稳定性和可靠性。主要修复错误和充分测试工作,在不久将来会提供一个稳定发行版。
新版本技术评论
「K8sMeetup 中国社区」特别邀请 Caicloud(才云科技) 工程师,第一时间为 Kubernetes 1.12 做了一个简短评论:
Kubernetes 1.12 版本在安全性、稳定性、扩展性以及灵活性方面做了很多工作,也取得了很多成果。比如安全方面,初衷是为 kubelet 启用 TLS 客户端证书的配置,更为重要的是可实现签名证书的自动提供与分发;同时关于 Kubernetes 支持使用 Azure VMSS 扩展容器化应用程序,另外将其与 cluster-autoscaler 集成,还具备在相同条件下自动调整 Kubernetes 集群大小的功能。
Kubernetes 1.12 中,存储团队继续对 CSI 特性做了很多工作,比如:Kubernetes volume topology 与 dynamic maximum volume count 特性提升为 beta 版,同时将 volume snapshotting 引入 alpha 支持等,让 Kubernetes 的存储更加好用。
同样在其它方面 Kubernetes 也有很多重要的更新,比如:SIG-Cloud-Provider 专注于构建流程和基础架构,使得 Kubernetes 的架构更加的合理,对支持云服务商的扩展性和灵活性都能得到很大的提高;SIG-Cloud-Scheduling 对调度器中算法、图像、节点优化与性能提升等;“dry-run” 功能,使用户能够在命令不生效的情况下预览特定命令的结果。在各个公司的贡献下,Kubernetes1.12 版本在原来的基础上有了很大的提升。我们(Caicloud)也会持续对它进行贡献,欢迎关注。
参考文献:
[1]https://kubernetes.io/blog/
[2] https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG-1.12.md#major-themes
推荐阅读:
华为云在 K8S 大规模场景下的 Service 性能优化实践
Kubernetes 1.9 |可扩展准入机制进入 Beta 阶段
如何用 Kubernetes 管理超过 2500 个节点的集群
END