目录

k8s v1.24.3更换容器运行时为containerd

环境

  • CentOS 7.9
  • k8s 1.24.3
  • containerd 1.6.6

背景

  • k8s从1.20开始逐步放弃使用docker作为容器运行时环境,1.24开始已经删除dockershim,如果还希望使用docker,就要安装cri-docker来进行调用,无疑是需要多一个调用链。所以不如放弃docker,直接调用containerd。
image.png

步骤

  • 首先在master节点上将要更换的节点清空:kubectl drain k8s-node01 --ignore-daemonsets
  • 在要更换的节点上停止kubeletdocker服务
  • 如果未安装containerd的需要安装,已安装的将原有配置文件替换containerd config default | tee /etc/containerd/config.toml
    • 在配置文件中,注意sandbox_image项,默认为"k8s.gcr.io/pause:3.7",可以替换成你想要使用的pause镜像。
  • 重启containerd服务
  • 在节点的kubelet配置文件里,将crisocket更换成containerd.sock的文件路径。
    • 一般在/var/lib/kubelet/kubeadm-flags.env中修改--container-runtime-endpoint项即可
  • 重启kubelet服务
  • 在master节点上恢复节点状态:kubectl uncordon k8s-node01,并观察节点状态。
  • 节点状态恢复正常,即可卸载docker组件:yum remove docker-ce docker-ce-cli
    • 注意不要将containerd连带删除