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
'Kubernetes > version upgrade' 카테고리의 다른 글
docker -> containerd 이관 (2) | 2023.10.18 |
---|---|
Amazon EKS, 네트워킹 추가 기능 upgrade (0) | 2023.06.07 |
EBS CSI Driver 설치 방법 (0) | 2023.05.28 |
AWS EKS Kubernetes 버전 1.22 to 1.23 upgrade (0) | 2023.05.27 |