Exercise 4.1: Basic Node Maintenance

  1. CP 노드에 연결된 터미널로 이동

  2. ETCD 데이터가 저장되는 경로 확인

    sudo grep data-dir /etc/kubernetes/manifests/etcd.yaml
  3. ETCD 데이터베이스 헬스체크

    kubectl exec -it etcd-cp -n kube-system -- \
    etcdctl endpoint health --key /etc/kubernetes/pki/etcd/server.key --cert /etc/kubernetes/pki/etcd/server.crt --cacert /etc/kubernetes/pki/etcd/ca.crt
  4. ETCD 데이터베이스 클러스터 멤버 확인

    kubectl exec -it etcd-cp -n kube-system -- \
    etcdctl member list --write-out=table --key /etc/kubernetes/pki/etcd/server.key --cert /etc/kubernetes/pki/etcd/server.crt --cacert /etc/kubernetes/pki/etcd/ca.crt
  5. ETCD 스냅샷(백업) 생성

    kubectl exec -it etcd-cp -n kube-system -- \
    etcdctl snapshot save /var/lib/etcd/snapshot.db --key /etc/kubernetes/pki/etcd/server.key --cert /etc/kubernetes/pki/etcd/server.crt --cacert /etc/kubernetes/pki/etcd/ca.crt
  6. 위에서 생성한 스냅샷 확인

    sudo ls -l /var/lib/etcd
  7. 쿠버네티스 클러스터 복구에 필요한 파일 백업

    {
        mkdir $HOME/backup
        sudo cp /var/lib/etcd/snapshot.db $HOME/backup/snapshot.db-$(date +%m-%d-%y)
        sudo cp /root/kubeadm-config.yaml $HOME/backup/
        sudo cp -r /etc/kubernetes/pki/etcd $HOME/backup/
    }
  8. 설치 가능한 kubeadm 버전 확인

    sudo apt update && sudo apt-cache madison kubeadm
  9. kubeadm 1.28.1 버전 설치

    {
        sudo apt-mark unhold kubeadm
        sudo apt install -y kubeadm=1.28.1-00
        sudo apt-mark hold kubeadm
    }
  10. 설치된 kubeadm 버전 확인

    sudo kubeadm version --output short
  11. 업그레이드를 진행할 노드(CP)에 배포된 Pod를 다른 Node로 이전

    kubectl drain cp --ignore-daemonsets
  12. 노드 상태 확인

    kubectl get node
  13. 업그레이드 계획 확인

    sudo kubeadm upgrade plan
  14. 업그레이드 진행

    sudo kubeadm upgrade apply v1.28.1
  15. 노드 상태 확인

    kubectl get node
  16. 쿠버네티스 클러스터 버전 확인

    kubectl version --short
  17. kubelet 및 kubectl 1.28.1 버전 설치

    {
        sudo apt-mark unhold kubelet kubectl
        sudo apt install -y kubelet=1.28.1-00 kubectl=1.28.1-00
        sudo apt-mark hold kubelet kubectl
    }
  18. kubelet 데몬 재시작

    {
        sudo systemctl daemon-reload
        sudo systemctl restart kubelet
    }
  19. 노드 상태 확인

    kubectl get node
  20. 쿠버네티스 클러스터 버전 확인

    kubectl version
  21. CP 노드에 Pod가 배포 가능하도록 변경

    kubectl uncordon cp
  22. 노드 상태 확인

    kubectl get node
  23. Worker 노드에 연결된 터미널로 이동

  24. kubeadm 1.28.1 버전 설치

    {
        sudo apt-mark unhold kubeadm
        sudo apt update && sudo apt install -y kubeadm=1.28.1-00
        sudo apt-mark hold kubeadm
    }
  25. CP 노드에 연결된 터미널로 이동

  26. 업그레이드를 진행할 노드(Worker)에 배포된 Pod를 다른 Node 이전

    kubectl drain worker --ignore-daemonsets
  27. Worker 노드에 연결된 터미널로 이동

  28. 업그레이드 진행

    sudo kubeadm upgrade node
  29. kubelet 및 kubectl 1.28.1 버전 설치

    {
        sudo apt-mark unhold kubelet kubectl
        sudo apt install -y kubelet=1.28.1-00 kubectl=1.28.1-00
        sudo apt-mark hold kubelet kubectl
    }
  30. kubelet 데몬 재시작

    {
        sudo systemctl daemon-reload
        sudo systemctl restart kubelet
    }
  31. CP 노드에 연결된 터미널로 이동

  32. 노드 상태 확인

    kubectl get node
  33. Worker 노드에 Pod가 배포 가능하도록 변경

    kubectl uncordon worker
  34. 노드 상태 확인

    kubectl get node

Last updated