kubernetes 1.24 버전에서 docker 런타임 중단에 따른 기존 docker에서 containerd 및 CRI-O로 전환하는 방법에 대해 안내합니다.
$ kubectl cordon <Node name>
$ kubectl drain <Node Name> --ignore-daemonsets
$ systemctl stop kubelet
$ systemctl stop docker
apt purge docker-ce docker-ce-cli
또는
yum remove docker-ce docker-ce-cli
Docker에서 containerd로 마이그레이션
/etc/containerd/config.toml에서 disabled_plugins 라인을 비활성화하여 CRI 인터페이스를 활성화합니다.
#disabled_plugins = ["cri"]
참고: 아직 없는 경우 새 기본 containerd 구성 파일을 만들 수 있습니다.
containerd config default > /etc/containerd/config.toml
그런 다음 containerd를 다시 시작하십시오.
systemctl restart containerd
--container-runtime=remote
--container-runtimeendpoint=unix:///run/containerd/containerd.sock"
systemctl start kubelet
kubectl get nodes -o wide
이제 노드를 해제할 수 있습니다.
kubectl uncordon node
$ add-apt-repository ppa:projectatomic/ppa
$ apt update
$ apt install -y cri-o-1.15
vi /etc/sysctl.d/99-kubernetes-crio.conf
net.bridge.bridge-nf-call-iptables = 1
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-ip6tables = 1
sysctl -a
vim /etc/crio/crio.conf
which conmon
# Path to the conmon binary, used for monitoring the OCI runtime.
conmon = "/usr/bin/conmon"
registries = [
"quay.io",
"docker.io",
]
$ systemctl enable crio
$ systemctl start crio
KUBELET_EXTRA_ARGS=--feature-gates="AllAlpha=false" --container-runtime=remote --cgroup-driver=systemd --container-runtime-endpoint='unix:///var/run/crio/crio.sock' --runtime-request-timeout=5m
systemctl start kubelet
kubectl uncordon <Node>
결론적으로, 쿠버네티스에서 도커를 런타임으로 지원하지 않는다는 것이 도커를 사용할 수 없다는 것을 의미하는 것이 아닙니다.
단지 도커가 쿠버네티스에서 기본 엔진으로 사용되지 않는다는 것을 의미합니다.
자세한 내용은 Kubernetes의 공식 문서에서 확인이 가능합니다.