发布网友 发布时间:2024-10-24 13:31
共1个回答
热心网友 时间:2024-11-08 20:46
作者:张攀(豫哲) 来源:尔达 Erda
Erda 作为云原生 PaaS 平台的领导者,已完成超过70万行核心代码开源,旨在帮助开发者构建更强大的平台。作为开源活动的一部分,我们计划发布《基于 K8s 的云原生 PaaS 平台基础架构》系列文章,分享我们的经验。本文是系列的第一篇,探讨 Kubernetes 对 Docker 的新动态。
自 Kubernetes 1.20 版本起,官方宣布将不再直接支持 Docker 运行时,虽然在 v1.20 版本中只会收到警告,但预计在2021年底的 v1.22 版本将正式弃用。这为 Docker 用户提供了约一年的过渡期,如 containerd 或 CRI-O 等替代方案。
Kubernetes 选择弃用 Docker 是因为 CRI(Container Runtime Interface)的设计初衷是降低对容器运行时的依赖,而 Docker 与 CRI 的不兼容导致维护复杂。Dockershim 的存在曾是为兼容 Docker,但随着 Kubernetes 的发展,这个负担变得不可持续。
当 Docker 被弃用,用户需要注意的问题包括:依赖 docker.sock 的应用程序、特权 Pod 中的 Docker 命令、外部节点上运行的脚本和应用,以及对 dockershim 的间接依赖。为了应对这一变化,可以考虑 Containerd 或 CRI-O 作为替代。
Containerd 是 Docker 公司捐献给 CNCF 的开源项目,与 Kubernetes 通过 CRI 接口紧密集成。部署 Containerd 时,需确认 CRI 插件的使用,并更新 kubelet 的配置。CRI-O 作为 Kubernetes CRI 标准实现,同样适用于替换 Docker。
对于现运行的 K8s 集群,切换到 cri-o 的步骤包括更改 registry 仓库、迁移 Pod,以及对 kubelet 参数的调整。例如,逐出节点上的 Pod、卸载 Docker、安装 cri-o、修改 kubelet 设置,并在恢复节点后验证集群运行状态。
Erda 的开源社区欢迎所有开发者参与,共同推动云原生技术的进步。通过我们的开源平台,你可以探索 DevOps、微服务治理、多云管理及数据治理等技术,期待您的加入和贡献!