본문 바로가기
Kubernetes

[Kubernetes] Kubernetes 버전 업그레이드 시 주의사항

by worldcenter 2025. 1. 20.

Cordon

  • 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 합니다.
  • 기존에 노드에 배포된 파드는 그대로 남아있습니다.
  • 노드의 status에 Ready외에 SchedulingDisabled가 추가됩니다.
kubectl cordon <Node이름>
kubectl uncordon <Node이름>

 

 

Drain

  • 특정 노드를 스케줄러에서 제외시켜 파드가 할당되지 않도록 하고, 기존에 배포된 파드를 다른 노드로 이동시킵니다.
  • 노드를 업데이트 하는 경우 활용 가능합니다.
  • 노드의  status에 Ready외에 SchedulingDisabled가 추가됩니다.
kubectl drain <Node이름>
or
kubectl drain <Node이름> --ignore-daemonsets --force

 

 

주의 사항

1. Pod가 emptyDir을 사용하여 Local Data를 저장하는 경우

  • emptyDir를 사용하여 local data를 저장하는 파드가 해당 워커 노드에 있는 경우, 이 파드를 삭제 시 해당 데이터 또한 삭제되므로 수행되지 않습니다. 해당 파드가 제거되어도 문제가 없는 경우에는 --delete-local-data 플래그를 drain 명령어에 추가하여 수행합니다.

2. 해당 워커 노드에 데몬셋(daemonset)이 구동되고 있는 경우

  • 데몬셋에 속한 파드가 해당 워커 노드에 구동되고 있는 경우, kubectl drain 명령이 수행되지 않습니다. 데몬셋 컨트롤러는 노드가 unschedulable 상태에 있더라도 이를 무시하고 해당 노드에 파드를 스케줄하여 배치할 수 있습니다. 데몬셋에 속한 파드가 있는 경우에는, --ignore-daemonsets 플래그를 추가하여 해당 파드를 축출 대상에서 제외할 수 있습니다.

3. Kubernetes의 컨트롤러에서 관리되지 않는 파드가 구동되고 있는 경우

  • Kubernetes에서는 Deployment, Statefulset, DaemonSet, ReplicaSet, Job을 제외한 컨트롤러가 관리하지 않는 파드가 해당 워커 노드 상에 있는 경우, kubectl drain 명령어는 이를 보호하기 위해서 동작하지 않습니다. --force 플래그를 추가하여 kubectl drain 명령어를 실행하는 경우, 이러한 파드는 클러스터에서 제거되며 재스케줄링되지 않습니다.
  • 대표적인 예로는 Static Pod, Pod(바로 Pod로 생성한 경우)가 있습니다.
  • 이 때 주의해야 하는 점으로는 Pod가 Dynamic PV와 연결되어 있는 경우 Pod가 삭제될 때 PVC와의 연결이 끊어지면서 PV도 재사용이 불가합니다.
  • 이를 해결하기 위한 방법으로는 크게 2가지 정도가 있습니다.
    1) drain 전 Pod, PV 생성 후 PV에 데이터 마이그레이션
    2) Kasten과 같은 백업 솔루션 사용

4. 자동 업데이트 시 pdb 보유 여부 확인

 

 

참고 링크

https://velog.io/@_zero_/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4-%EC%BB%A4%EB%93%A0Cordon-%EB%B0%8F-%EB%93%9C%EB%A0%88%EC%9D%B8Drain-%EA%B0%9C%EB%85%90%EA%B3%BC-%EC%84%A4%EC%A0%95

 

쿠버네티스 커든(Cordon) 및 드레인(Drain) 개념과 설정

쿠버네티스 커든(Cordon) 및 드레인(Drain) 개념과 설정

velog.io

https://arisu1000.tistory.com/27845

 

쿠버네티스 cordon, drain

쿠버네티스 클러스터를 사용하다 보면 특정 노드에 있는 포드들을 모두 다른 곳으로 옮기거나 아니면 특정 노드에는 포드들이 스케쥴링 되지 않도록 제한을 걸어둘 필요가 있습니다. 이런한 기

arisu1000.tistory.com

https://guide.ncloud-docs.com/docs/nks-nks-drain-1