說說這個前提,就是k8s宣佈將dockershim給移除了這麼個點
爲什麼要移除
說白了,就是k8s是想建立標準的,通過的CRI,容器運行的接口,不僅僅可以支持docker,還可以支持其他的容器運行時,真正的實現插件化的
從哪裏移除
就是將dockershim的代碼,從kubelet中移除,不再有k8s維護了
dockershim移除後,還能繼續用docker嗎
當然是可以的,只是這部分的代碼,不在有k8s維護了,需要單獨的進行dockershim的安裝
docker移除前後,kubelet調用容器的關係發生了哪些的變化
1.20及之前的版本
dockershim內置於kubelet
1.20之後的版本
dockershim需要自行的安裝【cri-dockerd】
cri-dockerd安裝過程
1、下載cri-dockerd二進制文件
https://github.com/Mirantis/cri-dockerd/releases
2、安裝二進制文件
# 拷貝二進制文件
tar -xf cri-dockerd-0.2.6.amd64.tgz cp cri-dockerd/cri-dockerd /usr/bin/ chmod +x /usr/bin/cri-dockerd
3、配置cri-dockerd服務文件
# 配置啓動文件
cat <<"EOF" > /usr/lib/systemd/system/cri-dockerd.service [Unit] Description=CRI Interface for Docker Application Container Engine Documentation=https://docs.mirantis.com After=network-online.target firewalld.service docker.service Wants=network-online.target Requires=cri-docker.socket [Service] Type=notify ExecStart=/usr/bin/cri-dockerd --network-plugin=cni --pod-infra-container-image=registry.aliyuncs.com/google_containers/pause:3.7 ExecReload=/bin/kill -s HUP $MAINPID TimeoutSec=0 RestartSec=2 Restart=always StartLimitBurst=3 StartLimitInterval=60s LimitNOFILE=infinity LimitNPROC=infinity LimitCORE=infinity TasksMax=infinity Delegate=yes KillMode=process [Install] WantedBy=multi-user.target EOF # 生成socket 文件 cat <<"EOF" > /usr/lib/systemd/system/cri-dockerd.socket [Unit] Description=CRI Docker Socket for the API PartOf=cri-docker.service [Socket] ListenStream=%t/cri-dockerd.sock SocketMode=0660 SocketUser=root SocketGroup=docker [Install] WantedBy=sockets.target EOF
4、啓動cri-dockerd服務
systemctl daemon-reload systemctl start --now cri-dockerd systemctl status cri-docker