[Kubernetes] 쿠버네티스 노드(Node) 관리
Kubernetes Node 유지관리
Kubernetes 클러스터에서 Node는 애플리케이션을 실행하는 기본 단위입니다. Node는 일정한 주기로 유지보수가 필요하며, 관리되지 않으면 시스템 성능 저하나 장애가 발생할 수 있습니다. 이번 포스팅에서는 Kubernetes에서 Node를 유지관리하는 방법, 특히 Drain, Cordon, Uncordon, Node 문제 해결 및 Kubernetes 버전 업그레이드와 관련된 내용에 대해 살펴보겠습니다.
1. Node 관리: Drain, Cordon, Uncordon
1.1 Drain
Drain 명령은 특정 Node에서 실행 중인 Pod를 다른 Node로 옮길 때 사용됩니다. 이는 주로 Node가 유지보수 모드에 들어가거나 업그레이드가 필요할 때 수행됩니다.
Drain 명령어 예시
1
kubectl drain k8s-node1 --delete-emptydir-data --ignore-daemonsets --force
위 명령은 k8s-node1
Node에서 실행 중인 모든 Pod를 다른 Node로 옮기고, DaemonSet으로 관리되는 Pod는 무시하며, emptyDir
디렉토리도 삭제됩니다. --force
옵션을 사용하면 강제로 Pod를 종료할 수 있습니다.
1.2 Cordon
Cordon 명령은 Node를 예약 불가 상태로 만듭니다. 즉, 새로운 Pod는 해당 Node에 스케줄링되지 않으며, 이미 실행 중인 Pod는 계속해서 해당 Node에서 실행됩니다.
Cordon 명령어 예시
1
kubectl cordon k8s-node1
이 명령을 실행하면 k8s-node1
Node는 예약 불가 상태로 전환됩니다. 새로운 Pod가 스케줄링되지 않도록 제어할 때 사용됩니다.
1.3 Uncordon
Uncordon 명령은 cordon 상태를 해제하여 Node가 다시 예약 가능 상태가 되도록 합니다. 이 명령을 통해 Node에서 새로운 Pod가 다시 스케줄링될 수 있습니다.
Uncordon 명령어 예시
1
kubectl uncordon k8s-node1
위 명령어는 k8s-node1
Node를 다시 예약 가능 상태로 전환합니다.
2. Node Troubleshooting (문제 해결)
Kubernetes에서 Node가 정상적으로 작동하지 않으면 NotReady
상태로 나타날 수 있습니다. 이때 Node의 문제를 해결하기 위해 몇 가지 주요 단계가 필요합니다.
2.1 Node 상태 확인
Node 상태는 kubectl get no
명령을 통해 확인할 수 있습니다.
1
kubectl get no
만약 Node 상태가 NotReady
로 나타난다면, 추가적인 정보를 확인해야 합니다.
2.2 Node 문제 상세 정보 확인
kubectl describe
명령을 사용하여 문제의 원인을 자세히 확인할 수 있습니다.
1
kubectl describe no k8s-node2
이 명령을 통해 해당 Node의 상태 변화를 확인하고, 문제의 원인을 파악할 수 있습니다.
2.3 로그 확인
Node에서 발생한 문제는 kubelet
서비스 로그를 통해 확인할 수 있습니다.
1
journalctl -u kubelet
이 명령을 통해 kubelet의 로그를 확인하고 문제를 해결할 수 있습니다. 만약 문제가 kubelet과 관련된 것이라면 kubelet 서비스를 재시작하는 것이 필요할 수 있습니다.
1
sudo systemctl restart kubelet.service
이 명령은 k8s-node2
에서 kubelet 서비스를 재시작하여 문제가 해결될 수 있습니다.
3. Kubernetes 버전 업그레이드
Kubernetes 클러스터는 일정 주기로 버전 업그레이드를 통해 보안 패치와 새로운 기능을 제공받아야 합니다. 이때 kubeadm을 사용하여 클러스터의 업그레이드를 수행할 수 있습니다.
3.1 클러스터 버전 확인 및 업그레이드 준비
1
kubeadm upgrade plan
이 명령은 현재 클러스터의 버전과 업그레이드 가능한 버전을 보여줍니다. 클러스터의 모든 구성 요소에 대한 업그레이드 계획을 확인할 수 있습니다.
3.2 Control Plane 업그레이드
Control Plane의 구성 요소를 업그레이드하려면 다음 명령을 실행합니다.
1
kubeadm upgrade apply v1.28.5
이 명령은 Kubernetes Control Plane 구성 요소들을 새로운 버전으로 업그레이드합니다. 업그레이드가 완료되면 kubelet과 kubectl도 함께 업그레이드해야 합니다.
3.3 Kubelet 및 Kubectl 업그레이드
모든 Node에서 kubelet과 kubectl을 업그레이드하려면 다음 명령을 실행합니다.
1
2
apt-mark unhold kubeadm kubectl kubelet
apt install -y kubeadm=1.28.5-1.1 kubectl=1.28.5-1.1 kubelet=1.28.5-1.1
업그레이드 후, kubelet 서비스를 다시 시작합니다.
1
sudo systemctl restart kubelet.service
마지막으로 업그레이드가 완료된 후, 클러스터의 상태를 확인할 수 있습니다.
1
kubectl get no
모든 Node가 Ready
상태로 표시되면 업그레이드가 성공적으로 완료된 것입니다.
Comments powered by Disqus.