Certified Kubernetes Administration - 39

2024-06-22

  • Kubernetes
  • Cloud

노드 유지 보수 시나리오

  1. 유지 보수 필요 상황

    • 클러스터의 노드를 점검해야 하는 상황: 소프트웨어 업그레이드, 보안 패치 등.
  2. 노드 다운 시의 영향

    • 노드가 다운되면 해당 노드의 포드는 접근 불가.

    • 예: 블루 포드의 경우 여러 복제본이 있으므로 사용자 영향 없음.

    • 그린 포드의 경우 단일 복제본만 있으므로 사용자 영향 큼.

  3. 쿠버네티스의 동작

    • 노드가 바로 다시 온라인 상태가 되면, kubelet 프로세스가 포드를 재시작.

    • 노드가 5분 이상 다운되면 포드는 해당 노드에서 삭제됨.

    • ReplicaSet에 속한 포드는 다른 노드에서 재생성.

    • ReplicaSet에 속하지 않은 포드는 복구되지 않음.

  4. Pod-Eviction-Timeout

    • 노드가 오프라인되면 마스터 노드는 최대 5분 동안 노드의 복귀를 기다림.

    • pod-eviction-timeout 이후에 노드가 복귀하면 포드가 없는 상태로 돌아옴.

  5. 안전한 유지 보수 방법

    • 노드의 작업을 안전하게 처리하려면 해당 노드에서 모든 워크로드를 다른 노드로 옮김.

    • 'drain' 명령어를 사용하여 포드를 우아하게 종료하고 다른 노드에서 재생성.

    • 노드를 'cordon'하여 스케줄링을 막음.

    • 노드가 다시 온라인 상태가 되면 'uncordon'하여 스케줄링을 허용.

  6. 기타 명령어

    • 'cordon': 노드를 스케줄링 불가 상태로 표시.

    • 'drain': 노드를 스케줄링 불가 상태로 표시하고 포드를 다른 노드로 이동.

요약본

  • 유지 보수를 위해 노드를 다운시킬 경우, 쿠버네티스는 기본적으로 5분 동안 노드의 복귀를 기다리고, 그 후 포드를 다른 노드에서 재생성합니다.

  • 그러나 더 안전한 방법은 'drain' 명령어를 사용하여 노드에서 모든 워크로드를 다른 노드로 옮기고, 노드를 'cordon'하여 스케줄링을 막는 것입니다.

  • 유지 보수가 끝나면 'uncordon'을 사용하여 노드를 다시 스케줄링 가능 상태로 만듭니다.

Certified ...

Certified ...