Kubernetes 1.21正式发布 | 主要变化解读
我们很高兴地宣布 Kubernetes 1.21 的发布,这是我们 2021 年的第一个版本!这个版本包含 51 个增强功能:13 个增强功能升级为稳定版,16 个增强功能升级为 beta 版,20 个增强功能进入 alpha 版,还有 2 个功能已经弃用。
在这个发布周期中,我们看到了围绕发布团队的过程所有权的重大转变。我们从一种同步的交流模式(我们定期向社区请求输入)转变为一种社区选择的模式——在发布中加入特性和/或博客。这些变化导致了整个社区协作和团队合作的增加。所有这些结果都反映在 Kubernetes 1.21 中,在最近的时间里,它拥有最多的特性。
主题
CronJobs 毕业到稳定!
自 Kubernetes 1.8 以来,CronJobs一直是一个测试版功能!在 1.21 中,我们终于看到这个广泛使用的 API 毕业到稳定。
CronJobs 用于执行定期计划的操作,如备份、报告生成等。每个任务都应该被配置为无限期地重复出现(例如:一天/一周/一个月);你可以在该间隔内定义作业应该启动的时间点。
不可变的 Secrets 和 ConfigMaps
Immutable Secrets和ConfigMaps为这些资源类型添加了一个新字段,如果设置了该字段,将拒绝对这些对象的更改。默认情况下,Secrets 和 ConfigMaps 是可变的,这对能够使用更改的 pod 是有益的。如果将错误的配置推送给使用它们的 pod,可变的 Secrets 和 ConfigMaps 也会导致问题。
通过将 Secrets 和 ConfigMaps 标记为不可变的,可以确保应用程序配置不会改变。如果你希望进行更改,则需要创建一个新的、唯一命名的 Secret 或 ConfigMap,并部署一个新的 pod 来消耗该资源。不可变资源也有伸缩性优势,因为控制器不需要轮询 API 服务器来观察变化。
这个特性在 Kubernetes 1.21 中已经毕业到稳定。
IPv4/IPv6 双栈支持
IP 地址是一种可消耗的资源,集群操作人员和管理员需要确保它不会耗尽。特别是,公共 IPv4 地址现在非常稀少。双栈支持使原生 IPv6 路由到 pod 和服务,同时仍然允许你的集群在需要的地方使用 IPv4。双堆栈集群网络还改善了工作负载的可能伸缩限制。
Kubernetes 的双栈支持意味着 pod、服务和节点可以获得 IPv4 地址和 IPv6 地址。在 Kubernetes 1.21 中,双栈网络已经从 alpha 升级到 beta,并且已经默认启用了。
优雅的节点关闭
在这个版本中,优雅的节点关闭也升级到测试版(现在将提供给更大的用户群)!这是一个非常有益的特性,它允许 kubelet 知道节点关闭,并优雅地终止调度到该节点的 pod。
目前,当节点关闭时,pod 不会遵循预期的终止生命周期,也不会正常关闭。这可能会在许多不同的工作负载下带来问题。接下来,kubelet 将能够通过 systemd 检测到即将发生的系统关闭,然后通知正在运行的 pod,以便它们能够尽可能优雅地终止。
PersistentVolume 健康监测器
持久卷(Persistent Volumes,PV)通常用于应用程序中获取本地的、基于文件的存储。它们可以以许多不同的方式使用,并帮助用户迁移应用程序,而不需要重新编写存储后端。
Kubernetes 1.21 有一个新的 alpha 特性,允许对 PV 进行监视,以了解卷的运行状况,并在卷变得不健康时相应地进行标记。工作负载将能够对运行状况状态作出反应,以保护数据不被从不健康的卷上写入或读取。
减少 Kubernetes 的构建维护
以前,Kubernetes 维护了多个构建系统。这常常成为新贡献者和当前贡献者的摩擦和复杂性的来源。
在上一个发布周期中,为了简化构建过程和标准化原生的 Golang 构建工具,我们投入了大量的工作。这应该赋予更广泛的社区维护能力,并降低新贡献者进入的门槛。
重大变化
弃用 PodSecurityPolicy
在 Kubernetes 1.21 中,PodSecurityPolicy 已被弃用。与 Kubernetes 所有已弃用的特性一样,PodSecurityPolicy 将在更多版本中继续可用并提供完整的功能。先前处于测试阶段的 PodSecurityPolicy 计划在 Kubernetes 1.25 中删除。
接下来是什么?我们正在开发一种新的内置机制来帮助限制 Pod 权限,暂定名为“PSP 替换策略”。我们的计划是让这个新机制覆盖关键的 PodSecurityPolicy 用例,并极大地改善使用体验和可维护性。要了解更多信息,请阅读弃用 PodSecurityPolicy:过去、现在和未来。
弃用 TopologyKeys
服务字段 topologyKeys 现在已弃用;所有使用该字段的组件特性以前都是 alpha 特性,现在也已弃用。我们用一种实现感知拓扑路由的方法替换了 topologyKeys,这种方法称为感知拓扑提示。支持拓扑的提示是 Kubernetes 1.21 中的一个 alpha 特性。你可以在拓扑感知提示中阅读关于替换特性的更多细节;相关的KEP解释了我们替换的背景。
其他更新
毕业到稳定
EndpointSlice Add sysctl support PodDisruptionBudgets
显著特性更新
External client-go credential providers——1.21 是 beta 版 Structured logging——计划 1.22 升级到 beta 版 完成 Jobs 和 Pods 清理后的 TTL——升级到 beta
发布说明
你可以在发布说明中查看 1.21 版本的完整细节。
下载安装
Kubernetes 1.21 可在GitHub 上下载。Kubernetes 有一些很好的资源可供使用。你可以在 Kubernetes 站点上查看一些交互式教程,或者使用kind和 Docker 容器在你的机器上运行一个本地集群。如果你想尝试从头开始构建集群,请查看 Kelsey Hightower 编写的Kubernetes 艰难之路教程。
发布团队
这次发布是由一群非常专注的个人完成的,他们作为一个团队聚集在一起,在世界上发生了很多事情的时候。非常感谢发布负责人 Nabarun Pal,以及发布团队中所有相互支持、为向社区交付 1.21 发行版而努力工作的人。
版本标识
Kubernetes 1.21 发布标志描绘了发布团队的全球性质,发布团队成员居住在 UTC+8 到 UTC-8 的各个时区。发行团队的多样性带来了许多挑战,但团队通过采用更多的异步通信实践来解决这些问题。发行标志中的七角形球体表明了社区克服挑战的坚定决心。它庆祝发布团队在过去 3 个月里惊人的团队合作,带来了一个有趣的 Kubernetes 发布!
这个标志是由来自印度的独立设计师Aravind Sekar设计的。Aravind 帮助像 PyCon India 这样的开源社区进行设计工作。
- END -
公众号后台回复「加群」加入一线高级工程师技术交流群,一起交流进步。
推荐阅读 Kubernetes 运维架构师实战集训营 31天拿下K8s含金量最高的CKA证书! 搭建一套完整的企业级 K8s 集群(v1.20,二进制方式) 记一次 Kubernetes 机器内核问题排查 Shell 脚本进阶,经典用法及其案例 Kubernetes 集群网络从懵圈到熟悉 一个完整的、全面 k8s 化的集群稳定架构 JAVA应用运维,线上故障排查全套路 记一次 Linux服务器被入侵后的排查思路
点亮,服务器三年不宕机