Operating System Upgrade

Yu Sang Min·2025년 6월 11일

CKA

목록 보기
40/110
post-thumbnail

📌 OS Upgrades

  • 유지보수 목적으로 노드를 제거해야 하는 시나리오에 관해 논의
  • 소프트웨어 기반 업그레이드나 패치 적용, 보안 패치등을 클러스터에 적용할 때

💡 tips

  • 노드가 5분 이상 다운되면 죽은것으로 간주하고 pod가 해당 노드에서 종료되고 ReplicaSet 에 소속되어 있다면 다른 노드에 재현될 것이다.
kube-controller-manager --pod-eviction-timeout=5m0s

🔎 drain

$ kubectl drain node-1
  • 해당 노드를 일시적으로 클러스터에서 제외하고 pod들을 정상적으로 종료하고 다른 노드에 재현됨
  • 이제 node-1은 안전하니 재부팅이 가능
  • 다시 온라인이 되어도 스케줄링 되지 않음
$ kubectl uncordon node-1
  • 위 명령어로 다시 드레인된 노드에 스케줄링을 정상적으로 동작시킬 수 있다.
  • 하지만 다른 노드에 배치된 pod가 자동으로 돌아가진 않는다
  • 해당 pod가 삭제되거나 클러스터에 새 pod가 생성되면 원래 노드에 생성이 된다.
$ kubectl cordon node-2
  • 기존 노드에서 pod를 종료시키거나 이동시키지 않음
  • 단순히 해당 노드에 새 pod가 스케줄링 되지 않음

결론

번역에 약간의 어색함이 있는데 결론적으로 워커노드를 일시적으로 클러스터에서 제외 하되 생성된 Pod들에 영향을 받지 않으면서 패치 등을 수행하기 위한 방법 이었다고 생각한다.

profile
React, Node.js, AWS, Git, Github, Github Action, Docker, K8S

0개의 댓글