Kubernetes v1.24发布,Dockershim弃用!

DevOps技术栈

共 3016字,需浏览 7分钟

 · 2022-04-27

原文链接:https://kubernetes.io/blog/2022/03/31/ready-for-dockershim-removal/
注:译文

早在 2020 年 12 月,Kubernetes 就宣布弃用 Dockershim[1]。在 Kubernetes 中,dockershim 是一个软件 shim,它允许您将 Docker 引擎用作 Kubernetes 中的容器运行时。在即将发布的 v1.24 版本中,我们将移除 Dockershim,弃用和移除之间的间隔,符合项目在弃用后至少一年支持功能的政策[2]。如果您是集群操作员,则本指南包含您在此版本中需要了解的实际情况。此外,您需要做些什么来确保您的集群不会倒塌!

首先,这对你有影响吗?

如果您正在滚动自己的集群或不确定此删除是否会影响您,请保持安全并检查您是否对 Docker Engine 有任何依赖关系[3]

请注意,使用 Docker Desktop 构建的应用程序容器,不是集群的 Docker 依赖项。由 Docker 创建的容器镜像符合开放容器倡议 (OCI)[4],这是一种 Linux 基金会治理结构,围绕容器格式和运行时定义行业标准。它们可以在 Kubernetes 支持的任何容器运行时上正常工作。

如果您使用来自云提供商的托管 Kubernetes 服务,并且您没有显式更改容器运行时,那么您可能不需要做任何事。Amazon EKS、Azure AKS 和 Google GKE 现在都默认使用 containerd,但如果您有任何节点自定义,您应该确保它们不需要更新。要检查节点的运行时,请遵循找出节点上使用的容器运行时[5]

无论您是滚动自己的集群还是使用来自云提供商的托管 Kubernetes 服务,您都可能需要迁移依赖于 Docker Engine 的遥测或安全代理[6]

我有一个 Docker 依赖项。现在怎么办?

如果您的 Kubernetes 集群依赖于 Docker Engine,并且您打算升级到 Kubernetes v1.24(出于安全和类似原因,您最终应该这样做),您需要将容器运行时从 Docker Engine 更改为其他内容或使用cri-dockerd[7] . 由于containerd[8]是一个毕业的 CNCF 项目和 Docker 本身的运行时,因此作为替代容器运行时是一个安全的选择。幸运的是,Kubernetes 项目已经记录了更改节点容器运行时[9]的过程,以 containerd 为例。切换到其他支持的运行时之一的说明类似。

我想升级 Kubernetes,我需要保持与 Docker 作为运行时的兼容性。我有哪些选择?

不要害怕,您不会被冷落,也不必冒着停留在旧版本 Kubernetes 上的安全风险。Mirantis 和 Docker 联合发布并正在维护 dockershim 的替代品。该替换称为cri-dockerd[10]。如果您确实需要保持与 Docker 作为运行时的兼容性,请按照项目文档中的说明安装 cri-dockerd。

总结

只要您在进入此版本时了解所做的更改和您自己的集群的详细信息,并确保与您的开发团队进行清晰的沟通,出现问题的概率就会降到最低。您可能需要对集群、应用程序代码或脚本进行一些更改,但所有这些要求都已记录在案。从使用 Docker Engine 作为您的运行时切换到使用其他受支持的容器运行时之一[11],实际上意味着删除中间人,因为 dockershim 的目的是访问 Docker 本身使用的容器运行时。从实际的角度来看,从长远来看,这种删除对您和 Kubernetes 维护者都更好。

如果您仍有疑问,请先查看Dockershim 移除常见问题解答[12]

或评论区交流~

参考资料

[1]

弃用 Dockershim: https://kubernetes.io/blog/2020/12/02/dont-panic-kubernetes-and-docker/

[2]

政策: https://kubernetes.io/docs/reference/using-api/deprecation-policy/

[3]

检查您是否对 Docker Engine 有任何依赖关系: https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/check-if-dockershim-deprecation-affects-you/

[4]

开放容器倡议 (OCI): https://opencontainers.org/

[5]

找出节点上使用的容器运行时: https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/find-out-runtime-you-use/

[6]

迁移依赖于 Docker Engine 的遥测或安全代理: https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/migrating-telemetry-and-security-agents/

[7]

cri-dockerd: https://github.com/Mirantis/cri-dockerd

[8]

containerd: https://containerd.io/

[9]

更改节点容器运行时: https://kubernetes.io/docs/tasks/administer-cluster/migrating-from-dockershim/change-runtime-containerd/

[10]

cri-dockerd: https://github.com/Mirantis/cri-dockerd

[11]

其他受支持的容器运行时之一: https://kubernetes.io/docs/setup/production-environment/container-runtimes/

[12]

Dockershim 移除常见问题解答: https://kubernetes.io/blog/2022/02/17/dockershim-faq/


- END -
 推荐阅读 






31天拿下K8s CKA+CKS证书,转岗K8s运维必备! 
新手必须知道的 Kubernetes 架构
Shell分析日志文件,全面解锁新姿势!
大型网站技术架构设计
这篇文章带你全面掌握 Nginx !
Linux 根分区快满了,这个方法快速定位!
一文搞懂 Kubernetes 网络通信原理
Shell 编程的经典十三问!老司机也会翻车
SRE本质就是一个懂运维的资深开发
Kubernetes 4000节点运维经验分享
从网管到架构师,给你分享这10年的成长感悟
Kubernetes 的高级部署策略,你不一定知道!
9个常用的Shell脚本,面试也常问!
基于Nginx实现灰度发布与AB测试
搭建一套完整的企业级 K8s 集群(kubeadm方式)


点亮,服务器三年不宕机
浏览 47
点赞
评论
收藏
分享

手机扫一扫分享

举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

举报