본문 바로가기

리눅스

쿠버네티스 클러스터에서 노드를 재기동하는 방법

반응형

쿠버네티스(Kubernetes) 클러스터에서 노드를 재기동하는 방법

Control Plane 재기동

Control Plane은 클러스터의 핵심 구성 요소로 kube-apiserver, etcd, kube-scheduler, kube-controller-manager 등의 컴포넌트가 실행됩니다. Control Plane을 재기동할 때는 주의가 필요하며 클러스터의 가용성을 보장하기 위해 HA(High Availability) 구성이 권장됩니다.

 

1. Control Plane의 상태 확인

  • Ready 상태를 확인합니다.
  • Control Plane에서 중요한 워크로드가 실행되고 있는지 확인합니다.
kubectl get nodes
$ kubectl get nodes
NAME      STATUS   ROLES           AGE   VERSION
node111   Ready    control-plane   43h   v1.30.3
node112   Ready    control-plane   43h   v1.30.3
node113   Ready    control-plane   43h   v1.30.3
worker1   Ready    <none>          18m   v1.27.16

2. Control Plane 노드 재기동

  • Control Plane(node112)을 재기동합니다.
sudo reboot

노드 상태 확인

$ kubectl get nodes
NAME      STATUS     ROLES           AGE   VERSION
node111   Ready      control-plane   43h   v1.30.3
node112   NotReady   control-plane   43h   v1.30.3
node113   Ready      control-plane   43h   v1.30.3
worker1   Ready      <none>          23m   v1.27.16

3. Control Plane의 상태 확인

  • 노드가 재기동된 후 클러스터 상태가 정상인지 확인합니다.
  • 모든 Control Plane 컴포넌트가 정상적으로 실행되고 있는지 확인합니다.
kubectl get nodes
NAME      STATUS   ROLES           AGE   VERSION
node111   Ready    control-plane   43h   v1.30.3
node112   Ready    control-plane   43h   v1.30.3
node113   Ready    control-plane   43h   v1.30.3
worker1   Ready    <none>          25m   v1.27.16
kubectl get pods -n kube-system

4. HA 구성 시

  • HA 구성된 Control Plane에서는 노드를 하나씩 재기동하는 것이 중요합니다.
  • 모든 Control Plane을 동시에 재기동하면 안 됩니다.
728x90

Worker Node 재기동

Worker 노드는 애플리케이션의 실제 파드를 실행하는 노드입니다. Worker 노드를 재기동할 때는 해당 노드에서 실행 중인 파드를 다른 노드로 안전하게 옮기는 절차가 필요합니다.

 

1. 노드 상태 확인

  • 노드의 상태와 파드의 상태를 확인합니다.
kubectl get nodes
$ kubectl get nodes
NAME      STATUS   ROLES           AGE   VERSION
node111   Ready    control-plane   43h   v1.30.3
node112   Ready    control-plane   43h   v1.30.3
node113   Ready    control-plane   43h   v1.30.3
worker1   Ready    <none>          9s    v1.27.16

2. 노드 Draining (노드 비우기)

  • 노드를 재기동하기 전에 해당 노드에서 실행 중인 파드를 안전하게 다른 노드로 이동시키기 위해 노드를 drain합니다.
  • DaemonSet으로 관리되지 않는 모든 파드를 다른 노드로 이동시킵니다.
kubectl drain <노드 이름> --ignore-daemonsets --delete-emptydir-data
kubectl drain worker1 --ignore-daemonsets --delete-emptydir-data
$ kubectl drain worker1 --ignore-daemonsets --delete-emptydir-data
node/worker1 cordoned
Warning: ignoring DaemonSet-managed Pods: kube-system/cilium-7jffh, kube-system/cilium-envoy-dlx4n, kube-system/kube-proxy-lhmmq
node/worker1 drained

노드 상태 확인

$ kubectl get nodes
NAME      STATUS                     ROLES           AGE     VERSION
node111   Ready                      control-plane   43h     v1.30.3
node112   Ready                      control-plane   43h     v1.30.3
node113   Ready                      control-plane   43h     v1.30.3
worker1   Ready,SchedulingDisabled   <none>          7m40s   v1.27.16

3. 노드 재기동

  • 노드를 drain한 후 SSH를 통해 노드에 접속하여 재기동할 수 있습니다.
sudo reboot

노드 상태 확인

$ kubectl get nodes
NAME      STATUS                        ROLES           AGE   VERSION
node111   Ready                         control-plane   43h   v1.30.3
node112   NotReady                      control-plane   43h   v1.30.3
node113   Ready                         control-plane   43h   v1.30.3
worker1   NotReady,SchedulingDisabled   <none>          10m   v1.27.16

4. 노드 Uncordon

  • 노드가 다시 올라오면 해당 노드를 클러스터에 다시 참여시킵니다.
kubectl uncordon <노드 이름>
kubectl uncordon worker1
$ kubectl uncordon worker1
node/worker1 uncordoned

노드 상태 확인

  • 재기동된 후 노드의 상태와 파드의 상태를 확인합니다.
kubectl get nodes
NAME      STATUS   ROLES           AGE   VERSION
node111   Ready    control-plane   43h   v1.30.3
node112   Ready    control-plane   43h   v1.30.3
node113   Ready    control-plane   43h   v1.30.3
worker1   Ready    <none>          15m   v1.27.16
kubectl get pods --all-namespaces -o wide

 

쿠버네티스 클러스터에서 Control Plane과 Worker 노드를 안전하게 재기동할 수 있습니다.

 

728x90
반응형