Kubernetes1.24开始正式移除Dockershim

在疫情的重重包围之下,历时17周的匠心打磨,观星者Kubernetes 1.24终于在五一假期正式发布啦!

Kubernetes 1.24有来自全球1029家企业和1179位个人的贡献。每一位参与者都如同一颗星星,帮助Kubernetes在星辰大海中指引航行的方向。天文望远镜与遥远的七仙女星座的时空遐想,也正是1.24版本logo作者BritneeLaverack的所述之意。

Dockershim被移除

在Kubernetes 1.24,Dockershim组件正式从kubelet中移除。从Kubernetes 1.24开始,默认将无法使用Docker Engine作为容器运行。从下图的架构可以看出,Dockershim处于一个非常尴尬的地位,它扮演着Docker、containerd 和CRI之间的翻译官或代理角色,但事实上新版本的containerd 兼容CRI接口标准,可以绕开Docker直接与CRI对接。冤冤相报何时了,在双方较量与磨合了几年之后,Kubernetes 终究还是移除Dockershim。

在没有特殊需求的情况下,云君还是推荐大家使用containerd 或 CRI-O等受支持的容器运行时软件。如果您依赖Docker Engine,也可以使用cri-dockerd这样的软件来解决。不管您使用哪种方式,云君都建议您做好一些兼容性测试工作,以确保Kubernetes 1.24集群的正常运行。例如,云君在使用containerd 1.6.3及以下版本的时候,就遇到了“Incompatible CNIversions”或“Failed to destroy network for sandbox”等CNI插件相关的报错。按照containerd 官方的说法“containerd 1.6.4 修复了这两个问题”,后来云君进行多次版本兼容测试,升级调整之后解决了问题。

另外,云君要说的是如果你以前是docker的用户,现在转向使用containerd的话,系统中将没有Docker命令行,取而代之的是ctr命令行,这样你可能短时间难以适应。好在社区已经提供了“nerdctl”和“crlctl”这样的近乎兼容docker命令的小工具,下面云君列出docker、ctr、crictl、nerdctl命令行的部分对照表给大家感受一下:

命令功能

docker

ctr

crictl

nerdctl

查看容器运行状态

docker ps

ctr task ls/ctr container ls

crictl ps

nerdctl ps

查看镜像

docker images

ctr image ls

crictl images

nerdctl images

查看容器日志

docker logs

crictl logs

nerdctl logs

查看容器数据信息

docker inspect

ctr container info

crictl inspect

nerdctl inspect

查看容器资源

docker stats

crictl stats

nerdctl stats

运行一个新的容器

docker run

ctr run

nerdctl run

修改镜像标签

docker tag

ctr image tag

nerdctl tag

创建新容器

docker create

ctr container create

crictl create

nerdctl create

导入镜像

docker load

ctr image import

nerdctl load

导出镜像

docker save

ctr image export

nerdctl save

删除容器

docker rm

ctr container rm

crictl rm

nerdctl rm

删除镜像

docker rmi

ctr image rm

crictl rmi

nerdctl rmi

拉取镜像

docker pull

ctr image pull

ctictl pull

nerdctl pull

推送镜像

docker push

ctr image push

nerdctl push

在容器内部执行命令

docker exec

crictl exec

nerdctl exec

“nerdctl”和“crlctl”小工具安装非常方便,将官方的二进制文件拷贝到/usr/local/bin目录就可以直接使用了。如果您还对Docker比较怀旧的话,执行“alias docker=nerdctl”这样的命令后,您依然可以体验到与Docker相似的感觉。如果您觉得Dockershim被移除之后,Kubernetes 1.24集群的兼容以及适配变得难以适应,也可以使用类似“kube-install”这样的工具来一键部署Kubernetes 1.24集群,这样“kube-install”默认会自动部署上nerdctl工具配置docker别名映射以及相关的CNI插件兼容等工作,让您快速拥有一套生产可用的集群。

更多关键更新

Service ClusterIP预留功能

Kubernetes Service ClusterIP 服务是唯一的,如果您尝试使用已经分配的 ClusterIP 创建Service将会存在冲突。为了避免这个冲突问题,Kubernetes 1.24支持动态和静态两种ClusterIP配置方式:

  • 动态:Kubernetes集群将在配置的ClusterIP范围内自动选择一个空闲 IP地址。

  • 静态:这是Kubernetes 1.24引入的新特性,允许你为Service分配静态 IP 地址池。静态 IP 地址池最少有 16 个 IP 地址,最多不超过 256 个。手动启用此功能后,群集Service将从IP 地址池中自动分配,从而降低冲突风险。

Openstack和Azure存储插件迁移

将Openstack Cinder和Azure磁盘插件的相关代码移出Kubernetes 主库。在迁移In-Tree存储插件的内部,以调用CSI插件,同时维护原始API。

OpenAPI v3开启

Kubernetes 1.24为以OpenAPIv3发布,并默认开启 OpenAPI V3,新增端点  /openapi/v3/apis/{group}/{version},而且为其提供了测试版支持。

默认关闭新beta APIs

默认情况下,现有的 beta API会被启用,而新的beta API暂时仍然处于关闭状态。

Storage Capacity 和Volume Expansion 正式 GA

存储容量跟踪支持通过CSIStorageCapacity对象展示当前可用的存储容量,并增强对使用CSI卷对late binding的POD的进行调度。卷扩展增加了对调整现有永久卷大小的支持,另外CSI StorageCapacity.storage.k8s.io v1beta1 版本将在未来进行废弃。

NonPreemptingPriority功能稳定

此功能为PriorityClass添加了一个新选项,可以启用或禁用pod的抢占调度。

gRPC ContainerProbe升级至 Beta

在 Kubernetes 1.24 中,原生支持 gRPC 探针。gRPC ContainerProbe功能已经进入测试阶段,默认情况下是可用的。现在,您可以在 Kubernetes 中为 gRPC 应用程序配置startup、liveness和readiness探针,而无需暴露 HTTP endpoint或使用额外的可执行文件。

CredentialProvider 升级至 Beta

Kubelet CredentialProvider最初在Kubernetes 1.20中作为Alpha发布,在Kubernetes 1.24中已经升级到Beta版。这允许kubelet使用exec插件动态检索容器镜像注册表的凭据,而不是将凭据存储在节点的文件系统上。这样通过灵活可拓展的插件机制动态接入任何云提供商的镜像注册认证。

Contextual Logging为Alpha

Kubernetes 1.24 引入了ContextualLogging,使函数的调用者能够控制日志输出格式、详细程度、附加值等日志记录的所有方面。

Sigstore与软件供应链安全

 Kubernetes 1.24 是第一个正式使用 Sigstore 的版本。发布制品使用联合签名进行签发,并且支持验证镜像签名。发布制品的签发和验证是为了提高Kubernetes发布过程的软件供应链安全性。

部分功能废弃

下面列举出几个主要废弃的功能点:

  • Kube-controller-manager、Kube-scheduler和kube-apiserver均移除了—address和--port等一些非安全的flag参数。

  • Kube-apiserver 移除了对--master-count和--endpoint-reconciler-type=master-count 参数;

  • kubelet 移除了DynamicKubeletConfig功能,同时废弃 --pod-infra-container-image 参数。

  • Service 的annotation tolerate-unready-endpoints 被完全移除,替代方案为Service.spec.publishNotReadyAddresses。

  • RuntimeClass API 版本 node.k8s.io/v1Alpha1废弃,以后请使用 node.k8s.io/v1API接口。

参考文档:

  • https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.24.md

  • https://github.com/cloudnativer/kube-install/releases/tag/v0.8.0

  • https://github.com/kubernetes/kubernetes/releases/tag/v1.24.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值