Kubernetes/version upgrade

kubernetes v1.23 to v1.24(docker-shim -> cri-docker 전환)

babbeolicoding 2023. 9. 14. 22:37

kubernetes v1.24부터 docker-shim은 제거된다.

docker-shim이 제거 됐을 때 해결할 수 있는 방법이 2가지가 있다.

 

1. docker-shim -> cri-docker로 전환하는 방법

2. docker -> containerd로 전환하는 방법

 

이번 포스팅에선 1번 방법에 대해서 알아보도록 하자.

 

#Worker Node 진행 kubeadm 1.24 설치
sudo apt-get install -y kubeadm=1.24.xx-00

#Master에서 진행 해당 노드 drain
k drain {node-name}  --ignore-daemonsets --delete-emptydir-data

#Worker Node 진행  kubectl, kubelet 1.24 설치
sudo apt-get install kubectl=1.24.xx-00 kubelet=1.24.xx-00 -y

#Worker Node 진행 

#cri-dockerd 설치
sudo git clone https://github.com/Mirantis/cri-dockerd.git
cd cri-dockerd
sudo apt-get install golang
make cri-dockerd
mkdir -p /usr/local/bin
install -o root -g root -m 0755 cri-dockerd /usr/local/bin/cri-dockerd
install packaging/systemd/* /etc/systemd/system
sed -i -e 's,/usr/bin/cri-dockerd,/usr/local/bin/cri-dockerd,' /etc/systemd/system/cri-docker.service

 

 

 
#서비스 재시작
systemctl daemon-reload
systemctl enable --now cri-docker.socket

#kubeadm-flags.env 수정
sudo vi /var/lib/kubelet/kubeadm-flags.env
#추가
--container-runtime-endpoint=unix:///run/containerd/containerd.sock

#해당 부분을 삭제하지 않으면 parse 오류가 발생함
--network-plugin=cni

kubeadm-flags.env 파일을 수정해 주면 된다.

--network-plugin=cni 부분을 제거하지 않으면 kubelet 실행 시 아래 오류가 발생함.

 

#Master에서 진행 node edit
sudo kubectl edit no {node-name}
"kubeadm.alpha.kubernetes.io/cri-socket" 값을 바꿔준다.
/var/run/dockershim.sock => unix:///var/run/cri-dockerd.sock

sudo kubectl edit no node-virtual-machine 부분을 바꿔주면 된다.

#Worker Node 진행 재시작
sudo systemctl start cri-docker
sudo systemctl restart kubelet

#Master Node 진행
kubectl uncordon node-virtual-machine

 

참고로 아래는 kubernetes v1.24부터 완전히 제거되는 kubelet 플래그 항목이다.

--experimental-dockershim-root-directory
--docker-endpoint
--image-pull-progress-deadline
--network-plugin
--cni-conf-dir
--cni-bin-dir
--cni-cache-dir
--network-plugin-mtu