确保模块载入:
# 永久生效
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
标签:容器,cgroup,containerd,etc,引擎,io,config
From: https://www.cnblogs.com/juelian/p/17782027.html