今天,我们很高兴地向大家宣布,Kubernetes 1.24暨2022年的首个版本已经正式发布!
1.24版本涉及46项增强功能:其中14项已升级为稳定版,15项进入beta阶段,13项则刚刚进入alpha阶段。此外,另有2项功能被弃用、2项功能被删除。
— 1 —
要点汇总
从kubelet中移除dockershim
自1.20版本被弃用之后,dockershim组件终于在1.24的kubelet中被删除。从1.24开始,大家需要使用其他受到支持的运行时选项(例如containerd或CRI-O);如果您选择Docker Engine作为运行时,则需要使用cri-dockerd。关于dockershim移除的更多详细信息,请参阅本指南[1]。
各beta API默认关闭
在默认情况下,新的各beta API不会在集群内得到启用。但全部原有beta API及其新版本将在1.24中继续默认启用。
签名发布工件
在1.24版本中,发布工件将使用cosign进行签名,同时提供实验性的镜像签名验证支持。发布工件的签名与验证属于Kubernetes软件发布供应链的安全性改进举措之一。
OpenAPI v3
Kubernetes 1.24开始为API的OpenAPI v3发布格式提供beta支持。
存储容量与存储卷扩展双双迎来通用版本
存储容量跟踪通过CSIStorageCapacity对象公开当前可用的存储容量,并对使用后续绑定的CSI存储卷的pod进行调度增强。
存储卷扩展则新增对现有持久卷的重新调整功能。
NonPreemptingPriority迎来稳定版
此功能为PriorityClasses添加了新的选项,可开启或关闭Pod抢占机制。
存储插件迁移
目前Kubernetes开发团队正在迁移树内存储插件,希望在实现CSI插件的同时、保持原有API的正常起效。Azure Disk与OpenStack Cinder等插件已经完成了迁移。
gRPC探针升级至beta版
在1.24版本中,gRPC探针功能已经进入beta阶段且默认启用。现在,大家可以在Kubernetes中为自己的gRPC应用程序原生配置启动、活动与就绪探测,而且无需公开HTTP商战或者使用额外的可执行文件。
Kubelet证书提供程序升级至beta版
最初在Kubernetes 1.20版本中以alpha版亮相的kubelet镜像证书提供程序现已升级至beta版。现在,kubelet将使用exec插件动态检索容器镜像注册表的凭证,而不再将凭证存储在节点文件系统之上。
上下文日志记录进入alpha阶段
Kubernetes 1.24还引入了上下文日志记录功能,允许函数调用方能够控制日志记录的各项细则(包括输出格式、详尽程度、附加值和名称)。
避免为服务分配IP时发生冲突
Kubernetes 1.24引入了一项新的选择性功能,允许用户为服务的静态IP分配地址保留一个软范围。通过手动启用此项功能,集群将从您指定的服务IP池中自动获取地址,从而降低冲突风险。
也就是说,服务的ClusterIP能够以下列方式分配:
- 动态分配,即集群将在配置的服务IP范围内自动选择一个空闲IP。
- 静态分配,意味着用户需要在已配置的服务IP范围内指定一个IP。
服务ClusterIP是唯一的;因此若尝试使用已被分配的ClusterIP进行服务创建,则会返回错误结果。
从kubelet中移除动态kubelet配置
在Kubernetes 1.22版本中被弃用后,动态kubelet配置现已从kubelet中正式移除。在未来的1.26版本中,此功能还将从API服务器中删除。
— 2 —
关于CNI版本的重要变更
在升级至1.24之前,请确认并测试你所使用的容器运行时能够在新版本中正常工作。
例如,以下容器运行时已经或即将全面兼容Kubernetes 1.24:
- containerd v1.6.4及更高,v1.5.11及更高
- CRI-O 1.24及更高
若CNI插件尚未升级且/或CNI配置文件中未声明CNI配置版本时,则containerd v1.6.0-v1.6.3版本将导致Pod CNI网络setup及tear down发生问题。containerd团队报告称,“这些问题已经在containerd v1.6.4中得到解决。”
在containerd v1.6.0-v1.6.3时,如果你未升级CNI插件且/或声明CNI配置版本,则可能遇到“CNI版本不兼容”或“无法为沙箱删除网络”等错误。
— 3 —
其他更新
毕业至稳定版
在1.24版本中,共有14项增强功能迎来稳定版:
- 容器存储接口(CSI)存储卷扩展
- Pod Overhead:统计绑定至Pod沙箱、但未绑定至指定容器的资源。
- 向PriorityClasses添加非抢占选项
- 存储容量跟踪
- OpenStack Cinder In-Tree迁移至CSI Driver
- Azure Disk In-Tree迁移至CSI Driver
- 高效watch恢复:可在kube-apiserver重启后,对watch进行高效恢复
- 服务类型=负载均衡器类字段:引入一种新的服务注释service.kubernetes.io/load-balancer-class,允许在同一集群中实现多种type: LoadBalancer服务。
- 索引作业:为具有固定完成计数的作业Pod添加完成索引。
- 为Jobs API添加暂停字段:为Jobs API添加暂停字段,这样编排程序即可创建作业、从而更好地控制Pod创建时间。
- Pod Affinity NamespaceSelector:为Pod亲和性/反亲和性规范添加namespaceSelector字段。
- 面向控制器管理器的leader迁移:kube-controller-manager与cloud-controller-manager现可在HA控制平面中使用新的控制器到控制器管理器分配功能,全程无需停机。
- CSR持续时间:为CertificateSigningRequest API提供新的扩展机制,允许客户端为已颁发的证书请求特定持续时长。
重要变更
1.24版本包含2项重要变更:
- 移除Dockershim
- 默认关闭各Beta APIs
发布说明
关于Kubernetes 1.24版本的更多详细信息,请参阅我们的发布说明[2]。
发布情况
Kubernetes 1.24现已在GitHub[3]上开放下载。要开始使用Kubernetes,请参阅各交互式教程[4],或在kind[5]中使用容器作为“节点”运行您的本地Kubernetes集群。你也可以通过kubeadm[6]轻松安装Kubernetes 1.24。
发布团队
如果没有Kubernetes发布团队中各位成员的共同努力,1.24版本将无法与大家见面。开发团队团结一致、共同带来了Kubernetes各个版本中的所有代码、文档、发布说明等宝贵成果。
这里要特别感谢发布负责人James Laverack为了Kubernetes的稳定更新做出的指导,也感谢每位团队成员为1.24版本投入的时间和精力。
发布主题与Logo
Kubernetes 1.24的主题为Stargazer,即观星者。
从古代天文学家到如今建造詹姆斯·韦伯太空望远镜的科学家,人类世世代代怀着敬畏与好奇仰望着星空。繁星启发了我们、激发着我们的想象力,也在一个又一个漂泊的夜晚为船员们指示着前进的方向。
通过此版本,我们再次将目光投向星空,象征着整个社区齐聚一堂、遥望前路。Kubernetes社区聚集着全球数百名贡献者和成千上万的最终用户,并最终支撑起数以百万计的运行服务。每一位参与者都如同一颗星斗,在夜空中帮助我们规划航向。
1.24版本的发行logo由Britnee Laverack制作,图中一架望远镜遥指空中的昴宿星团,也就是神话中的七仙女星。数字“七”也是Kubernetes的幸运数,毕竟最早我们曾把项目定名为“Project Seven”。
所以我们决定在1.24版本中回归初心,找回探索寰宇的项目使命。今天,我们都是“观星者”✨
项目进度
CNCF K8s DevStats[7]项目汇总了Kubernetes及下辖各个子项目的进度数据点,包括做出贡献的个人及企业数量等等。感兴趣的朋友可以点击查看,了解Kubernetes生态系统是在怎样的支持下才发展到如今的深度和广度。
1.24版本的开发和发布周期为17周(1月10日至5月3日),期间我们共收到来自1029家企业和1179位个人的贡献。
相关链接:
- https://kubernetes.io/blog/2022/03/31/ready-for-dockershim-removal/
- https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md
- https://github.com/kubernetes/kubernetes/releases/tag/v1.24.0
- https://kubernetes.io/docs/tutorials/
- https://kind.sigs.k8s.io/
- https://kubernetes.io/docs/setup/independent/create-cluster-kubeadm/
- https://k8s.devstats.cncf.io/d/12/dashboards?orgId=1&refresh=15m