在不破坏集群的情况下更改容器运行时

Change Container Runtime without destroying cluster

我们是 运行 多个 kubespray 部署的集群,具有 10-100 个节点。

1.20 kubernetes 弃用 dockershim 支持 -> https://github.com/kubernetes/kubernetes/blob/ab32085bf36fc7af1ded30456e2f09399dc1115f/CHANGELOG/CHANGELOG-1.20.md#deprecation

如何将容器运行时更​​改为 containerd - 不删除节点且不销毁 master。

请将此回答视为友好建议。

首先,如昨天的新鲜文章Don't Panic: Kubernetes and Docker所建议:

你不必恐慌:)

Kubernetes 在 v1.20 之后仅弃用 Docker 作为容器运行时。他们目前只计划在 2021 年底(将近一年!)的 1.22 版本中删除 Docker 运行时支持,所以在工作解决方案出现之前请不要中断你的 100 节点集群:)

我不是恐慌,只是不想做好准备我们已经在 1.19,所以 1.22 也不会太远。

无论如何,我用一个较小的集群测试了它,它比预期的要容易得多。

更改:container_managercontainerd

运行 kubespray cluster.yml 所有节点和繁荣的剧本。 只需要做一个简单的 ansible 剧本来卸载 docker 等,但它也适用于安装 docker。