노드 풀 업데이트

이 주제에서는 노드 풀 업데이트 방법을 설명합니다. 노드 풀을 업데이트할 수 있는 이유에는 다음 경우가 포함됩니다.

  • 노드 풀 버전을 업그레이드하는 경우
  • 노드 풀의 노드 수를 변경하려는 경우
  • 노드 풀 주석을 변경하려는 경우(API를 통해서만 업데이트 가능)

위에 나열되지 않은 노드 풀에서 추가 매개변수를 변경할 수도 있습니다. 업데이트할 수 있는 매개변수의 전체 목록은 gcloud container azure node-pools updateprojects.locations.azureNodePools.patch 문서를 참조하세요.

프로세스 업데이트

이 섹션에서는 Azure용 GKE가 노드 풀을 업데이트하는 프로세스를 설명합니다. 프로세스는 노드 풀에 필요한 변경사항의 범위에 따라 다릅니다.

구성 전용 업데이트

Azure용 GKE가 리소스를 다시 시작하거나 다시 만들지 않고 노드 풀을 업데이트할 수 있는 경우, 변경이 수행합니다. 예를 들어 노드 풀 주석을 업데이트해도 인스턴스가 다시 시작되지 않습니다.

순차적 업데이트

노드 풀을 변경하려면 기존 가상 머신을 다시 시작해야 하는 경우(예: Kubernetes 버전을 업데이트할 때) Azure용 GKE에서 다음 단계를 수행합니다.

  1. 노드 풀의 가상 머신 확장 집합을 새 구성으로 수정합니다.
  2. 업데이트할 한 노드의 기본 인스턴스를 선택합니다.
  3. Azure용 GKE가 노드를 차단하고 드레이닝합니다. 이때는 대상 노드에서 새 포드를 예약할 수 없습니다. 대상 노드의 기존 포드 객체는 다른 노드로 다시 예약됩니다. 다른 기존 노드로 다시 예약할 수 없는 포드는 예약될 때까지 대기중 단계로 유지됩니다.
  4. 가상 머신 확장 집합에서 최신 구성을 가져오도록 인스턴스를 업데이트합니다.
  5. 인스턴스 이미지를 다시 만들고 재부팅합니다.
  6. 이 노드 풀의 모든 노드가 정상이 될 때까지 기다립니다.
  7. 이 노드 풀의 모든 노드가 정상이면 모든 노드가 업데이트될 때까지 다른 노드를 선택합니다. 노드가 비정상이면 Azure용 GKE가 노드 풀을 DEGRADED 상태에 배치합니다. 자세한 내용은 실패한 업데이트를 참조하세요.

노드 풀 순차적 업데이트 중 워크로드 보호

노드 풀 순차적 업데이트 중에 Azure용 GKE는 노드 드레이닝이 시작된 후 최대 1시간 동안 PodDisruptionBudget
구성을 적용합니다. 1시간 후에 Azure용 GKE가 노드에서 나머지 포드 모두를 삭제합니다.

순차적 업데이트 중에 Azure용 GKE는 최대 2시간 동안 최선을 다해 다시 시작하거나 삭제할 노드를 단계적으로 종료합니다. 2시간 후에 노드에 남은 포드 객체가 있으면 Azure용 GKE가 노드를 삭제하고 기본 가상 머신 인스턴스를 다시 이미지화합니다.

노드 풀 크기 조절

Azure용 GKE 노드 풀은 클러스터 자동 확장 처리가 기본적으로 사용 설정됩니다. 클러스터 자동 확장 처리는 워크로드의 수요를 기준으로 노드 풀 크기를 자동으로 조절합니다. 클러스터 자동 확장 처리에 대한 자세한 내용은 클러스터 자동 확장 처리를 참조하세요.

노드 풀에서 최대 및 최소 노드 수를 변경하면 Azure용 GKE가 새로운 구성 및 노드 풀의 현재 노드 수에 따라 서로 다른 작업을 수행합니다. 이러한 작업에는 다음이 포함됩니다.

  • 노드 풀의 현재 노드 수가 이미 새 범위 내에 있으면 Azure용 GKE가 풀에서 노드 수를 변경하지 않습니다.

  • 새로운 최소 노드 수가 노드 풀의 현재 노드 수보다 많으면 Azure용 GKE는 노드 풀이 새 최소 크기에 도달할 때까지 노드를 더 추가합니다.

  • 새로운 최대 노드 수가 노드 풀의 현재 노드 수보다 작으면 Azure용 GKE가 다음 작업을 수행하여 노드 풀 크기를 줄입니다.

    1. 자동 확장 구성을 노드 풀에 설정된 가상 머신 확장으로 업데이트합니다.
    2. 삭제할 노드를 선택합니다.
    3. 노드를 차단하고 드레이닝합니다.
    4. 기본 가상 머신 인스턴스를 삭제합니다.
    5. 삭제된 가상 머신이 완전히 사라질 때까지 기다립니다.
    6. 전체 노드 풀에서 상태 확인을 수행합니다.
    7. 노드 수가 원하는 수에 도달할 때까지 반복합니다.

Azure용 GKE가 노드 풀 크기 조절 중에 워크로드를 보호하는 방법

노드 풀 크기 조절 중에 Azure용 GKE는 노드 드레이닝이 시작된 후 최대 1시간 동안 PodDisruptionBudget 구성을 적용합니다. 1시간 후에 Azure용 GKE가 노드에서 나머지 포드 객체를 삭제합니다.

노드 풀 크기 조절 중에 Azure용 GKE는 다시 시작하거나 삭제할 모든 노드를 단계적으로 종료하고 최대 2시간 동안 기다립니다. 2시간 후에 노드에 남은 포드 객체가 있으면 Azure용 GKE가 기본 가상 머신 인스턴스를 삭제합니다.

실패한 업데이트 상태 확인

업데이트 후 Azure용 GKE가 상태 점검을 수행하고 상태 점검이 실패하면 노드 풀이 DEGRADED로 표시됩니다. 다음 Google Cloud CLI 명령어를 사용하여 클러스터에서 상태 정보를 찾을 수 있습니다.

gcloud container azure node-pools describe NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION

다음을 바꿉니다.

  • NODE_POOL_NAME: 노드 풀의 이름입니다.
  • CLUSTER_NAME: 클러스터 이름입니다.
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 Google Cloud 리전입니다.

출력에 노드 풀의 상태 및 구성에 대한 정보가 포함됩니다.

기본 요건

노드 풀을 업데이트하려면 gkemulticloud.googleapis.com/azureNodePools.update Identity and Access Management 권한이 있어야 합니다.

노드 풀 업데이트

Google Cloud CLI로 노드 풀을 업데이트할 수 있습니다. 노드 풀을 업데이트하려면 다음을 실행합니다.

gcloud container azure node-pools update NODE_POOL_NAME \
    --cluster CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version NODE_POOL_VERSION \
    --min-nodes MIN_NODES \
    --max-nodes MAX_NODES     

다음을 바꿉니다.

  • NODE_POOL_NAME: 업데이트할 노드 풀의 이름입니다.
  • CLUSTER_NAME: 노드 풀을 연결할 클러스터의 이름입니다.
  • GOOGLE_CLOUD_LOCATION: 클러스터를 관리하는 지원되는 Google Cloud 리전(예: us-west1)
  • NODE_POOL_VERSION: 새로운 지원되는 노드 풀 버전입니다.
  • MIN_NODES: 노드 풀에 포함할 수 있는 최소 신규 노드 수입니다. 0개 이상이어야 합니다.
  • MAX_NODES: 노드 풀에 포함할 수 있는 최대 신규 노드 수입니다. 최소 1개 이상이고 MIN_NODES 값이어야 합니다.

업데이트 작업 취소

진행 중인 노드 풀 업데이트 작업을 취소하려면 다음 명령어를 실행합니다.

gcloud container azure operations cancel OPERATION_NAME

OPERATION_NAME을 업데이트 작업의 이름으로 바꿉니다.

진행 중인 노드 풀 업데이트 작업을 취소해도 이미 완료된 노드 업데이트는 취소되지 않습니다. 이 경우 부분적으로 업데이트된 노드 풀이 발생할 수 있습니다.

다음 단계