在K8S集群中部署容器運行時:Containerd
一、Containerd簡介

containerd?實現了 kubernetes 的 Container Runtime Interface (CRI) 接口,提供容器運行時核心功能,如鏡像管理、容器管理等,相比 dockerd 更加簡單、健壯和可移植。
而且由于kubernetes官方社區在發布的v1.20版本中聲明將棄用 Dockershim,即 Docker 容器運行時接口(CRI),這意味著不再支持 Docker,并將在后續版本中刪除。
二、Containerd部署
1、下載分發二進制文件
一、Containerd簡介
containerd?實現了 kubernetes 的 Container Runtime Interface (CRI) 接口,提供容器運行時核心功能,如鏡像管理、容器管理等,相比 dockerd 更加簡單、健壯和可移植。
而且由于kubernetes官方社區在發布的v1.20版本中聲明將棄用 Dockershim,即 Docker 容器運行時接口(CRI),這意味著不再支持 Docker,并將在后續版本中刪除。
二、Containerd部署
1、下載分發二進制文件
所需組件-:下載最新的二進制包
https://github.com/kubernetes-sigs/cri-tools/releases/
https://github.com/opencontainers/runc/releases/
https://github.com/containernetworking/plugins/releases/
https://github.com/containerd/containerd/releases/
如果下載太慢,那么下載到本地電腦然后上傳至服務器
[root@k8s-master1 ~]# mkdir -p /opt/k8s/work/
[root@k8s-master1 ~]# cd /opt/k8s/work/
[root@k8s-master1 work]# wget https://github.com/kubernetes-sigs/cri-tools/releases/download/v1.19.0/crictl-v1.19.0-linux-amd64.tar.gz \
https://github.com/opencontainers/runc/releases/download/v1.0.0-rc92/runc.amd64 \
https://github.com/containernetworking/plugins/releases/download/v0.9.0/cni-plugins-linux-amd64-v0.9.0.tgz \
https://github.com/containerd/containerd/releases/download/v1.4.3/containerd-1.4.3-linux-amd64.tar.gz
[root@k8s-master1 work]# mkdir containerd
[root@k8s-master1 work]# tar -xvf containerd-1.4.3-linux-amd64.tar.gz -C containerd
[root@k8s-master1 work]# tar -xvf crictl-v1.19.0-linux-amd64.tar.gz
[root@k8s-master1 work]# mkdir cni-plugins
[root@k8s-master1 work]# tar -xvf cni-plugins-linux-amd64-v0.9.0.tgz -C cni-plugins
[root@k8s-master1 work]# mv runc.amd64 runc
2、分發二進制程序
將程序包分發給Worker節點
NODE_IPS變量可以在profile中定義worker節點的IP地址數組
[root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /opt/k8s/bin"
scp containerd/bin/* crictl cni-plugins/* runc root@${node_ip}:/opt/k8s/bin
ssh root@${node_ip} "chmod a+x /opt/k8s/bin/* && mkdir -p /etc/cni/net.d"
done
3、創建和分發 containerd 配置文件
[root@k8s-master1 work]# cat << EOF | sudo tee containerd-config.toml
version = 2
root = "/data/k8s/containerd/root"
state = "/data/k8s/containerd/state"
[plugins]
[plugins."io.containerd.grpc.v1.cri"]
sandbox_image = "registry.cn-hangzhou.aliyuncs.com/hu279318344/pause-amd64:3.1"
[plugins."io.containerd.grpc.v1.cri".cni]
bin_dir = "/opt/k8s/bin"
conf_dir = "/etc/cni/net.d"
[plugins."io.containerd.runtime.v1.linux"]
shim = "containerd-shim"
runtime = "runc"
runtime_root = ""
no_shim = false
shim_debug = false
EOF
分發配置文件至集群各個worker節點
NODE_IPS變量我是在/etc/profile中定義的各個Worker節點IP數組
CONTAINERD_DIR同樣也是在/etc/profile中定義的,這里我定義的路徑為/data/k8s/containerd
[root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]}
do
echo ">>> ${node_ip}"
ssh root@${node_ip} "mkdir -p /etc/containerd/ ${CONTAINERD_DIR}/{root,state}"
scp containerd-config.toml root@${node_ip}:/etc/containerd/config.toml
done
4、創建 containerd systemd模板文件
[root@k8s-master1 work]# cat < [Unit] Description=containerd container runtime Documentation=https://containerd.io After=network.target [Service] Environment="PATH=/opt/k8s/bin:/bin:/sbin:/usr/bin:/usr/sbin" ExecStartPre=/sbin/modprobe overlay ExecStart=/opt/k8s/bin/containerd Restart=always RestartSec=5 Delegate=yes KillMode=process OOMScoreAdjust=-999 LimitNOFILE=1048576 LimitNPROC=infinity LimitCORE=infinity [Install] WantedBy=multi-user.target EOF 5、分發 systemd文件并啟動服務 [root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp containerd.service root@${node_ip}:/etc/systemd/system ssh root@${node_ip} "systemctl enable containerd && systemctl restart containerd" done 三、部署crictl命令行工具 [root@k8s-master1 work]# cat << EOF | sudo tee crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock image-endpoint: unix:///run/containerd/containerd.sock timeout: 10 debug: false EOF 分發到所有 worker 節點: [root@k8s-master1 work]# for node_ip in ${NODE_IPS[@]} do echo ">>> ${node_ip}" scp crictl.yaml root@${node_ip}:/etc/crictl.yaml done 2、crictl命令使用 Docker Nginx 容器
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。