2021年8月4日,星期三
我们很高兴地宣布Kubernetes 1.22
的发布,这是2021年的第二个版本!
这个版本包括53个增强功能。13项增强功能已经升级到稳定版,24项增强功能进入测试版,16项增强功能进入alpha版。另外,有三个功能已经被废弃。
今年4月,Kubernetes的发布周期已经正式由每年4次调整为每年3次。而1.22版本正是调整之后的首个长周期发布版本。随着Kubernetes的逐渐成熟,每个发布周期中包含的增强功能数量一直在持续增加。这意味着贡献者社区及发布工程团队需要在两个版本之间完成更多开发工作,而新版本中的大量全新功能也会给最终用户社区带来一定的学习压力。
今年4月,Kubernetes的发布周期正式从每年四次改为三次。这是与该变化相关的第一个较长周期的版本。随着Kubernetes项目的成熟,每个周期的改进数量也在增加。这意味着贡献者社区和发布工程团队要做更多的工作,从一个版本到另一个版本,这也会给终端用户社区带来压力,使他们不得不与包含越来越多功能的版本保持同步。
将发布周期从每年四次改为三次,可以平衡项目的许多方面,包括如何管理贡献和发布,也包括社区计划升级和保持最新的能力。
Kubernetes发布周期改变:你需要了解的情况
版本要点
Server-side Apply 迎来GA通用版本
Server-side Apply是一种面向Kubernetes API
服务器的全新字段所有权及对象合并算法。Server-side Apply
通过声明式配置帮助用户及控制器管理其资源,包括以声明方式创建及/或修改对象、发送明确指定的意图等等。经过数个版本的测试之后,Server-side Apply
现已正式进入GA通用版阶段。
外部证书提供者现在很稳定
对Kubernetes客户端凭证插件的支持自1.11
以来一直处于测试阶段,随着Kubernetes 1.22的发布,现在已经毕业到稳定阶段。GA功能集包括改进对提供交互式登录流程的插件的支持,以及一些错误的修复。有抱负的插件作者可以看一下sample-exec-plugin来开始。
etcd更新至3.5.0
Kubernetes的默认后端存储,etcd,有一个新的版本。3.5.0. 新版本在安全、性能、监控和开发者体验方面都有改进。有大量的错误修复和一些关键的新功能,如迁移到结构化日志和内置的日志旋转。该版本带有一个详细的未来路线图,以实现流量过载的解决方案。你可以在3.5.0版本的公告中阅读完整而详细的变化清单。
内存资源服务质量(Quality of Service,QoS)
早期,Kubernetes使用的是v1 cgroups API。在这种设计下,一个Pod的QoS类只适用于CPU资源(如cpu_shares
)。作为一个alpha功能,Kubernetes v1.22现在可以使用cgroups v2 API来控制内存分配和隔离。该功能旨在提高工作负载和节点的可用性,当存在内存资源的竞争时,并提高容器生命周期的可预测性。
节点系统swap支持
关于设置和使用Kubernetes,每个系统管理员或Kubernetes用户都有同样的困扰:禁用交换空间。随着Kubernetes 1.22的发布,alpha支持用交换内存运行节点。这一变化让管理员选择在Linux节点上配置交换,将一部分块存储作为额外的虚拟内存。
Windows增强与功能
为了继续支持不断增长的开发者社区,SIG Windows已经发布了他们的开发环境。这些新工具支持多个CNI供应商,可以在多个平台上运行。还有一种新的方法,即通过编译Windows kubelet和kube-proxy,然后与其他Kubernetes组件的日常构建一起使用,从头开始运行出血性的Windows功能。
CSI对Windows节点的支持在1.22版本中转为GA。在Kubernetes v1.22中,Windows特权容器是一个alpha功能。为了允许在Windows节点上使用CSI存储,CSIProxy使CSI节点插件可以作为非特权pod部署,使用代理在节点上执行特权存储操作。
seccomp默认profiles配置
kubelet中加入了默认seccomp配置文件的alpha功能,以及一个新的命令行标志和配置。当使用时,这个新功能提供了集群范围内的seccomp默认值,使用RuntimeDefault seccomp配置文件,而不是默认的Unconfined。这增强了Kubernetes部署的默认安全性。安全管理员现在可以睡得更好,因为他们知道工作负载在默认情况下更加安全。要了解该功能的更多信息,请参考官方seccomp教程。
使用kubeadm提升管理节点的安全
一个新的alpha特性允许以非root用户身份运行kubeadm控制平面组件。这是在kubeadm中长期要求的安全措施。要尝试它,你必须启用kubeadm特定的RootlessControlPlane功能门。当你使用这个alpha功能部署集群时,你的控制平面会以较低的权限运行。
对于kubeadm,Kubernetes 1.22
也带来了新的v1beta3
配置API。这次迭代增加了一些长期要求的功能,并废除了一些现有的功能。现在,v1beta3版本是首选的API版本;v1beta2版本的API也仍然可用,并且尚未被废弃。
主要变化
删除了几个已弃用的beta API
在1.22版本中,一些废弃的测试版API已经被删除,而采用GA版本的相同API。所有现有的对象都可以通过稳定的API进行交互。这种删除包括Ingress
、IngressClass
、Lease
、APIService
、ValidatingWebhookConfiguration
、MutatingWebhookConfiguration
、CustomResourceDefinition
、TokenReview
、SubjectAccessReview
和CertificateSigningRequest
等API的beta版本。
关于完整清单,请参阅已弃用API迁移指南以及博文1.22版本中的Kubernetes API与功能删除:你需要了解的一切。
临时容器的API变更与改进
用于创建Ephemeral Containers的API在1.22中有所改变。Ephemeral Containers功能是alpha,默认情况下是禁用的,新的API与试图使用旧API的客户端不兼容。
对于稳定的功能,kubectl工具遵循Kubernetes的版本倾斜政策;然而,kubectl v1.21和更早的版本不支持新的短暂容器的API。如果你打算使用kubectl debug
来创建短暂的容器,而你的集群正在运行Kubernetes v1.22,你不能用kubectl v1.21或更早的版本来创建。如果你想在混合的集群版本中使用kubectl debug
,请将kubectl更新到1.22。
更新至稳定版
- 绑定服务账户令牌数量
- CSI 服务账户令牌
- Windows对CSI插件的支持
- 对于在操作中使用已弃用API的警告机制
- PodDisruptionBudget驱逐
重要功能更新
- 引入了一个新的PodSecurity接纳alpha功能,旨在替代PodSecurityPolicy。
- 内存管理器转为测试版
- 启用API服务器追踪的新alpha功能
- 一个新的v1beta3版本的kubeadm配置格式
- 用于PersistentVolumes的通用数据填充器现在有了alpha版本。
- Kubernetes管理节点现在只使用CronJobs v2控制器
- 所有Kubernetes节点组件(包括kubelet、kube-proxy和容器运行时)都可以作为非root用户运行(alpha功能)。
发布说明
请点击此处查看kubernetes 1.22版本完整发布说明。
Kubernetes 1.22版本下载
Kubernetes 1.22 可通过这里下载,也可在GitHub上下载。
版本Logo
在持续的大流行病、自然灾害和永远存在的倦怠阴影中,Kubernetes的1.22版本包括53项增强功能。这使得它成为迄今为止最大的版本。这一成就的取得要归功于辛勤工作、充满激情的发布团队成员和Kubernetes生态系统中了不起的贡献者。发布会的标志提醒我们要不断达到新的里程碑,创造新的记录。这也是献给所有发布团队成员、徒步旅行者和观星者的。
这个标志是由Boris Zotkin设计的。Boris是MathWorks公司的一名Mac/Linux管理员。他喜欢生活中简单的事情,喜欢和他的家人在一起。这个精通技术的人总是愿意接受挑战,并乐于帮助朋友!
原文地址参考:https://kubernetes.io/blog/2021/08/04/kubernetes-1-22-release-announcement/