AKS(Azure Kubernetes Service) 노드 자동 복구

AKS(Azure Kubernetes Service)는 작업자 노드의 상태를 지속적으로 모니터링하고 비정상 상태가 되면 자동 노드 복구를 수행합니다. Azure VM(가상 머신) 플랫폼은 문제가 발생한 VM에서 유지 관리를 수행합니다. AKS와 Azure VM은 함께 작동하여 클러스터에 대한 서비스 중단을 최소화합니다.

이 문서에서는 Windows 및 Linux 노드에서 자동 노드 복구 기능이 어떻게 작동하는지 알아봅니다.

AKS에서 NotReady 노드를 확인하는 방법

AKS는 다음 규칙을 사용하여 노드가 비정상이고 복구가 필요한지 여부를 확인합니다.

  • 노드가 10분 이내에 연속 확인하여 NotReady 상태를 보고합니다.
  • 노드가 10분 내에 상태를 보고하지 않습니다.

kubectl get nodes 명령을 사용하여 노드의 상태를 수동으로 확인할 수 있습니다.

자동 복구 작동 방법

참고 항목

AKS는 사용자 계정 aks-remediator로 복구 작업을 시작합니다.

AKS가 5분 동안 비정상 상태로 유지되는 비정상 노드를 식별하는 경우 AKS는 다음 작업을 수행합니다.

  1. 노드를 다시 시작하려고 시도합니다.
  2. 노드가 다시 시작되지 않는 경우 AKS는 노드를 이미지로 다시 설치합니다.
  3. 이미지로 다시 설치가 실패하고 Linux 노드인 경우 AKS는 노드를 다시 배포합니다.

AKS 엔지니어는 자동 복구에 실패한 경우 대체 수정을 조사합니다.

참고 항목

노드에 node.cloudprovider.kubernetes.io/shutdownToBeDeletedByClusterAutoscaler taint가 있으면 자동 복구가 트리거되지 않습니다.

전체 자동 복구 프로세스를 완료하는 데 최대 1시간이 걸릴 수 있습니다. AKS는 각 단계에 대해 최대 3회 재시도합니다.

노드 자동 드레이닝

예약된 이벤트는 노드 풀의 기본 VM에서 발생할 수 있습니다. 스폿 노드 풀의 경우 예약된 이벤트로 인해 노드에 대한 선점 노드 이벤트가 발생할 수 있습니다. ‘선점’과 같은 특정 노드 이벤트는 AKS 노드 자동 드레인에서 영향을 받는 노드의 코돈 및 드레인을 시도하게 합니다. 이 프로세스에서는 해당 노드에서 영향을 받는 워크로드를 정상적으로 다시 예약할 수 있습니다. "kubernetes.azure.com/scalesetpriority: spot" 때문에 노드가 "remediator.kubernetes.azure.com/unschedulable"의 taint를 수신하는 것을 볼 수 있습니다.

다음 표에서는 노드 이벤트 및 AKS 노드 자동 드레인에 대해 발생하는 작업을 보여 줍니다.

이벤트 설명 작업
중지 VM이 몇 초간 일시 중지되도록 예약됩니다. CPU와 네트워크 연결이 일시 중단될 수 있지만 메모리나 열려 있는 파일에는 영향을 미치지 않습니다. 작업이 필요 없습니다.
Reboot VM이 다시 부팅되도록 예약됩니다. VM의 비영구적 메모리가 손실됩니다. 작업이 필요 없습니다.
재배포 VM이 다른 노드로 이동되도록 예약됩니다. VM의 임시 디스크가 손실됩니다. 차단 및 드레이닝
Preempt 스폿 VM이 삭제되고 있습니다. VM의 임시 디스크가 손실됩니다. 차단 및 드레이닝
Terminate VM이 삭제되도록 예약됩니다. 차단 및 드레이닝

제한 사항

대부분의 경우 AKS는 노드가 비정상인지 확인하고 문제를 복구하려고 시도할 수 있습니다. 그러나 AKS가 문제를 복구할 수 없거나 문제가 있음을 검색할 수 없는 경우가 있습니다. 예를 들어 AKS는 다음 예제 시나리오에서 문제를 검색할 수 없습니다.

  • 네트워크 구성 오류로 인해 노드 상태가 보고되지 않습니다.
  • 노드가 처음에 정상 노드로 등록하지 못했습니다.

노드 자동 드레이닝은 최상의 서비스이며 모든 시나리오에서 완벽하게 작동하도록 보장할 수 없습니다.

다음 단계

가용성 영역을 사용하여 AKS 클러스터 워크로드를 통해 고가용성을 개선합니다.