切换容器引擎为containerd

发布时间 2023-10-23 11:31:58作者: 蕝戀

确保模块载入:

# 永久生效
cat <<EOF | sudo tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF

#临时载入模块
sudo modprobe overlay
sudo modprobe br_netfilter

# 设置必需的 sysctl 参数,这些参数在重新启动后仍然存在。
# net.ipv4.ip_forward一般装完docker就是为1的。
cat <<EOF | sudo tee /etc/sysctl.d/99-kubernetes-cri.conf
net.bridge.bridge-nf-call-iptables  = 1
net.bridge.bridge-nf-call-ip6tables = 1
net.ipv4.ip_forward                 = 1
EOF

sudo sysctl --system

安装containerd容器引擎(一般之前装过就不需要装了)

yum install -y containerd.io
mkdir -p /etc/containerd



生成containerd配置文件

containerd config default > /etc/containerd/config.toml

containerd配置cgroup驱动

kubenrnetes从1.24版本开始不再支持dockershim,containerd作为一个替代docker的选项

结合 runc 使用 systemd cgroup 驱动,在 /etc/containerd/config.toml 中设置

# sandbox_image修改为如下:xx为你原来是什么版本,现在就是什么版本
sandbox_image = "registry.aliyuncs.com/google_containers/pause:xx"  

# 找到该选项(修改cgroup驱动)
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options] 
#其中的systemCgroup=false改为true
    SystemdCgroup = true


# 修改配置镜像加速的属性
[plugins."io.containerd.grpc.v1.cri".registry]
# 将config_path改为如下:
      config_path = "/etc/containerd/certs.d"  # 镜像地址配置目录

创建目录:

mkdir -pv /etc/containerd/certs.d/docker.io

cat >/etc/containerd/certs.d/docker.io/hosts.toml<<EOF
server = "https://docker.io"
[host."https://b9pmyelo.mirror.aliyuncs.com"]
  capabilities = ["pull", "resolve"]
EOF

重启containerd

systemctl restart containerd

配置kubelet使用containerd容器

编辑/etc/sysconfig/kubelet

KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd  

重启kubelet

systemctl restart kubelet

验证节点的容器是否为containerd容器引擎

kubectl get node -o wide