Kubernetes/version upgrade

docker -> containerd 이관

babbeolicoding 2023. 10. 18. 22:03

#Worker Node 진행 kubeadm 1.24 설치

sudo apt-get install -y kubeadm=1.24.xx-00


#Master에서 진행 업그레이드할 워커노드 drain

kubectl 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 진행 kubelet 중지, 도커 제거, containerd 설치

sudo systemctl stop kubelet
sudo systemctl disable docker.service --now
sudo apt-get purge docker-ce docker-ce-cli
sudo apt-get install -y containerd
sudo mkdir -p /etc/containerd
containerd config default | sudo tee /etc/containerd/config.toml


#containerd config 수정

sudo vi /etc/containerd/config.toml

아래 내용 추가

#이미지 pull할때 http: server gave HTTP response to HTTPS client 발생하는 경우
   [plugins."io.containerd.grpc.v1.cri".registry.configs."{ip}:{port}".tls] 
        ca_file = ""
        cert_file = "" 
        insecure_skip_verify = true 
        key_file = ""
    [plugins."io.containerd.grpc.v1.cri".registry.mirrors."{ip}:{port}"] 
        endpoint = ["http://{ip}:{port}"] 
    
#해당 옵션 없으면 pod가 계속 재시작됨
#systemd를 cgroup driver로 사용
    [plugins."io.containerd.grpc.v1.cri".containerd.runtimes.runc.options]
        SystemdCgroup = true

 

#containerd 시작

sudo systemctl enable containerd
sudo systemctl restart containerd
sudo sed -i 's/--network-plugin=cni/--container-runtime=remote\ --container-runtime-endpoint=unix\:\/\/\/run\/containerd\/containerd.sock/g' /var/lib/kubelet/kubeadm-flags.env



#Master에서 진행 drain시킨 node edit

sudo kubectl edit no {node-name}
"kubeadhttp://m.alpha.kubernetes.io/cri-socket"
/var/run/dockershim.sock => unix:///run/containerd/containerd.sock


#Worker Node 진행 kubelet 재시작

sudo systemctl daemon-reload
sudo systemctl restart kubelet


#Master에서 진행 drain 시키 워커노드 활성

kubectl uncordon {node-name}