Kubernetes 1.26稳定支持Windows特权容器并弃用CRI v1alpha2

Kubernetes开发团队发布最新1.26版本,这版本主要新功能,包括容器镜像文件注册表变更、容器执行时接口(Container Runtime Interface,CRI)支持更新,以及稳定支持Windows特权容器等。

在之前的版本,Kubernetes改变容器注册表,使负载能够分散到多个云计算供应商和区域,这个变化减少了对单一实体的依赖,使大量用户能够更快地下载容器镜像文件。而官方现在将注册表k8s.gcr.io移动到了registry.k8s.io,Kubernetes 1.26则是在registry.k8s.io发布的第一个版本,registry.k8s.io将不会发布Kubernetes 1.26以后的容器镜像文件标签,但会继续更新之前旧版本标签。

由于Kubernetes对CRI的采用,以及在Kubernetes 1.24移除dockershim,因此CRI是Kubernetes目前唯一受支持与不同容器Runtime互动的方法,Kubelet需要和节点容器Runtime沟通想要使用的CRI版本。在之前的版本,虽然Kubernetes推荐使用CRI v1版本,但是Kubelet仍然可以协商使用CRI v1alpha2,而目前这个版本已经被弃用。

Kubernetes 1.26已经不再支持CRI v1alpha2,因此当容器Runtime不支持CRI v1,则将导致Kubelet无法注册节点,官方提到,这代表Kubernetes 1.26不支持containerd 1.5以及之前版本,因此如果用户想使用containerd,就需要先更新到containerd 1.6.0或更高版本,再将节点升级到Kubernetes 1.26。

在Kubernetes 1.26,用户也能够在Windows上稳定执行特权容器,特权容器是指容器能以类似主机程序的主机权限运行。在Windows节点这项功能称为HostProcess容器,现在已经升级到了稳定版本,允许特权容器访问包括网络等主机资源。

Windows HostProcess供用户在Windows主机上执行容器化工作负载,微软解释,这些容器以一般的程序运行,但是在给予适当用户特权时,能够访问主机网络命名空间、存储和设备等。HostProcess容器能够让用户在Windows上部署网络扩展组件、设备扩展组件、kube-proxy等组件,但不需要专用代理或直接安装主机服务。