K8S從1.24版本起不再支持docker容器引擎,可選的替代品有containerd
、cri-o
、podman
。下面演示將單個(gè)node節(jié)點(diǎn)的容器引擎從docker切換為containerd的過(guò)程。
檢查內(nèi)核參數(shù)與模塊
overlay和br_netfilter
檢查是否已經(jīng)加載內(nèi)核模塊overlay
和br_netfilter
。
lsmod | grep overlay
lsmod | grep br_netfilter
如果沒(méi)有,手動(dòng)加載內(nèi)核模塊:
cat <<EOF | tee /etc/modules-load.d/containerd.conf
overlay
br_netfilter
EOF
# 加載內(nèi)核模塊
modprobe overlay
modprobe br_netfilter
內(nèi)核網(wǎng)絡(luò)參數(shù)
檢查系統(tǒng)內(nèi)核參數(shù):
sysctl -a | grep bridge
sysctl -a | grep ip_forward
如果沒(méi)有開啟,手動(dòng)調(diào)整:
cat <<EOF | 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
sysctl --system
containerd安裝配置
安裝containerd
安裝containerd相關(guān)依賴包:
yum install -y yum-utils device-mapper-persistent-data lvm2
配置docker源(如果已配置,跳過(guò)此步驟):
ls /etc/yum.repos.d | grep docker-ce
yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
安裝containerd:
ls /etc | grep containerd
# 如果沒(méi)有安裝
yum install -y containerd.io
修改containerd為獨(dú)立運(yùn)行時(shí)的默認(rèn)配置:
containerd config default > /etc/containerd/config.toml
修改鏡像倉(cāng)庫(kù)地址
修改containerd配置文件:
vim /etc/containerd/config.toml
#pause鏡像地址修改為阿里云鏡像倉(cāng)庫(kù)地址
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "registry.aliyuncs.com/google_containers/pause:3.2"
#cgroups驅(qū)動(dòng)引擎修改為systemd
[plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
SystemdCgroup = true
#Dcoker Hub鏡像倉(cāng)庫(kù)地址修改為阿里云鏡像倉(cāng)庫(kù)地址(非必須)
[plugins."io.containerd.grpc.v1.cri".registry.mirrors."docker.io"]
endpoint = ["https://b9pmyelo.mirror.aliyuncs.com"]
保存退出后,重啟服務(wù)生效:
systemctl restart containerd
# 啟用開機(jī)自啟
systemctl enable containerd
切換容器運(yùn)行時(shí)
修改kubelet配置,將當(dāng)前節(jié)點(diǎn)的默認(rèn)容器運(yùn)行時(shí)修改為containerd:
vim /etc/sysconfig/kubelet
KUBELET_EXTRA_ARGS=--container-runtime=remote --container-runtime-endpoint=unix:///run/containerd/containerd.sock --cgroup-driver=systemd
# 保存退出,重啟生效
systemctl restart kubelet
在k8s-master檢查:
[root@k8s-master1 ~]# kubectl get nodes -o wide
NAME STATUS ROLES AGE VERSION INTERNAL-IP EXTERNAL-IP OS-IMAGE KERNEL-VERSION CONTAINER-RUNTIME
k8s-master1 Ready control-plane,master 3d11h v1.23.0 192.168.x.x <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 containerd://1.6.18
k8s-master2 Ready control-plane,master 3d10h v1.23.0 192.168.x.x <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 containerd://1.6.18
k8s-master3 Ready control-plane,master 3d10h v1.23.0 192.168.x.x <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 containerd://1.6.18
k8s-worker1 Ready <none> 3d10h v1.23.0 192.168.x.x <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 containerd://1.6.18
k8s-worker2 Ready <none> 3d10h v1.23.0 192.168.x.x <none> CentOS Linux 7 (Core) 3.10.0-1160.el7.x86_64 containerd://1.6.18
輸出中,CONTAINER-RUNTIME
一列,k8s-node2的容器運(yùn)行時(shí)已變成containerd,其余節(jié)點(diǎn)還是docker。
最后停用docker服務(wù):
systemctl disable docker && systemctl stop docker
crictl管理工具
Containerd可以通過(guò)crictl命令來(lái)管理容器。
配置crictl管理containerd:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-489923.html
vi /etc/crictl.yaml
runtime-endpoint: unix:///run/containerd/containerd.sock
image-endpoint: unix:///run/containerd/containerd.sock
timeout: 10
debug: false
查看crictl常用命令:文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-489923.html
crictl --help
到了這里,關(guān)于K8S容器運(yùn)行時(shí)從Docker切換為Containerd的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!