Azure용 Anthos 클러스터는 Google Cloud와 이미 지원 관계를 맺고 있는 고객에게 제공됩니다. 액세스하려면 계정 담당자에게 문의하세요.

노드 풀 관리하기

이 페이지에서는 클러스터 자동 확장 처리에 대한 정보 및 노드 풀 생성 방법을 포함하여 노드 풀을 관리하는 방법을 설명합니다.

노드 풀 자동 확장

클러스터 자동 확장 처리는 워크로드 수요를 기준으로 지정된 노드 풀에서 노드 수 크기를 자동으로 조정합니다. 수동으로 노드를 추가, 삭제하거나 노드 풀을 과도하게 프로비저닝할 필요가 없습니다. 대신 노드 풀의 최소 및 최대 크기를 지정하면 나머지는 자동으로 지정됩니다.

클러스터를 자동 확장할 때 리소스를 삭제하거나 이동해야 할 경우 워크로드가 일시적으로 중단될 수 있습니다. 예를 들어 워크로드가 단일 복제본이 포함된 컨트롤러로 구성되었으면, 현재 노드가 삭제된 경우 해당 복제본의 Pod를 다른 노드에서 다시 예약할 수 있습니다. 따라서 클러스터 자동 확장 처리를 사용 설정하기 전에 잠재적인 중단을 견디도록 또는 중요한 Pod가 중단되지 않도록 워크로드를 설계해야 합니다.

클러스터 자동 확장 처리 작동 방식

클러스터 자동 확장 처리는 노드당 풀 기준으로 작동합니다. 클러스터 자동 확장 처리를 사용하여 노드 풀을 구성할 때는 노드 풀의 최소 및 최대 크기를 지정합니다.

클러스터 자동 확장 처리는 실제 리소스 사용률 대신 노드 풀에서 실행되는 Pod의 리소스 요청에 따라 자동으로 노드 풀의 크기를 늘리거나 줄입니다. Pod를 예약할 수 없고 노드 풀에 노드가 충분하지 않으면 클러스터 자동 확장 처리가 노드를 추가합니다.

또한 활용률이 낮고 모든 Pod를 더 적은 노드 수로 예약할 수 있으면 클러스터 자동 확장 처리가 노드를 삭제합니다. 10분 후에 노드를 정상적으로 드레이닝할 수 없으면 노드가 강제로 종료됩니다. 이 기간은 구성할 수 없습니다.

Pod가 너무 적은 리소스를 요청하는 경우(예: 기본값이 부족한 경우) 클러스터 자동 확장 처리는 이러한 상황을 해결하지 않습니다. 모든 워크로드에 적절한 리소스 요청을 만들어서 클러스터 자동 확장 처리가 가능한 한 정확하게 작동하도록 보장할 수 있습니다. 자세한 내용은 컨테이너에 대한 리소스 관리를 참조하세요.

작동 조건

클러스터 자동 확장 처리는 노드 풀 크기를 조절할 때 다음 가정을 따릅니다.

  • 복제된 모든 포드를 다른 일부 노드에서 다시 시작할 수 있으며, 결과적으로 일시적인 중단이 발생할 수 있습니다. 워크로드에서 중단이 허용되지 않으면 자동 확장이 사용 중지된 노드 풀에서 실행되도록 워크로드를 구성합니다. 자세한 내용은 노드 taint로 예약 관리를 참조하세요.

  • 클러스터 자동 확장 처리는 사용자가 수행하는 수동 노드 관리 작업을 재정의할 수 있습니다.

  • 단일 노드 풀의 모든 노드에 동일한 라벨 집합이 포함됩니다.

  • 클러스터 자동 확장 처리는 확장 후 유휴 CPU 또는 사용되지 않는 메모리가 가장 적은 노드 그룹을 선택합니다. 이 동작은 동일한 클러스터에서 노드 크기가 다를 때(예: 높은 CPU 또는 높은 메모리 노드) 확장되는 노드 풀에 영향을 줍니다.

최소 및 최대 노드 풀 크기

클러스터의 각 노드 풀에 대해 최소 및 최대 크기를 지정할 수 있습니다. 클러스터 자동 확장 처리는 이러한 경계 내에서 크기 조절을 결정합니다. 자동 확장을 사용 설정할 때 현재 노드 풀 크기가 지정된 최솟값보다 작거나 지정된 최댓값보다 크면, 자동 확장 처리는 노드 풀에 새 노드가 필요할 때까지 또는 노드 풀에서 노드를 안전하게 삭제할 수 있을 때까지 적용을 기다립니다.

네트워크 보안 그룹 맞춤설정

NSG(네트워크 보안 그룹)를 맞춤설정하려면 네트워크 보안 그룹을 참조하세요.

노드 풀 만들기

노드 풀을 만들려면 다음이 필요합니다.

  • az 명령줄 도구를 사용하여 Azure 서브넷 ID를 검색할 수 있는 권한
  • 사용자 클러스터의 SSH 공개 키에 대한 액세스 권한

노드 풀을 만들려면 다음 명령어를 실행합니다.

  1. Azure VNet 서브넷 ID와 SSH 공개 키를 환경 변수에 저장합니다.

    SUBNET_ID=$(az network vnet subnet show \
      --resource-group=VNET_RESOURCE_GROUP_NAME --vnet-name=VNET_NAME \
      --name default --query "id" -otsv)
    SSH_PUBLIC_KEY=$(cat KEY_PATH.pub)
    

    다음을 바꿉니다.

    • VNET_RESOURCE_GROUP_NAME: VNet이 포함된 리소스 그룹 이름입니다.
    • VNET_NAME: VNet의 이름입니다.
    • KEY_PATH: 키 쌍의 경로입니다.
  2. gcloud 명령줄 도구를 사용하여 노드 풀을 만듭니다.

    gcloud alpha container azure node-pools create NODE_POOL_NAME \
        --cluster=CLUSTER_NAME \
        --location GOOGLE_CLOUD_LOCATION \
        --node-version=1.20.10-gke.300 \
        --vm-size=VM_SIZE \
        --max-pods-per-node=110 \
        --min-nodes=MIN_NODES \
        --max-nodes=MAX_NODES \
        --ssh-public-key="${SSH_PUBLIC_KEY}" \
        --subnet-id="${SUBNET_ID}"
    

    다음을 바꿉니다.

    • NODE_POOL_NAME: 노드 풀의 고유한 이름입니다(예: node-pool-1).
    • CLUSTER_NAME: Anthos clusters on Azure 사용자 클러스터의 이름입니다.
    • GOOGLE_CLOUD_LOCATION: 사용자 클러스터를 관리하는 Google Cloud 위치입니다.
    • VM_SIZE: 지원되는 Azure VM 크기입니다.
    • MIN_NODES: 노드 풀의 최소 노드 수입니다. 자세한 내용은 노드 풀 자동 확장을 참조하세요.
    • MAX_NODES: 노드 풀의 최대 노드 수입니다.
  3. 노드 풀의 상태를 확인합니다.

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

    다음을 바꿉니다.

    • NODE_POOL_NAME: 노드 풀의 고유한 이름입니다(예: node-pool-1).
    • CLUSTER_NAME: Anthos clusters on Azure 사용자 클러스터의 이름입니다.
    • GOOGLE_CLOUD_LOCATION: 사용자 클러스터를 관리하는 Google Cloud 위치입니다.

    출력에는 PROVISIONING 또는 RUNNING을 포함하여 노드 풀의 상태가 포함됩니다.

특정 영역에 노드 풀 만들기

특정 Azure 가용성 영역에 노드 풀을 만들려면 노드 풀을 만들 때 --azure-availability-zone 플래그를 gcloud 명령줄 도구에 전달합니다.

gcloud 명령줄 도구를 사용하여 특정 Azure 가용성 영역에 노드 풀을 만들려면 다음 명령어를 실행합니다.

gcloud alpha container azure node-pools create NODE_POOL_NAME \
    --cluster=CLUSTER_NAME \
    --location GOOGLE_CLOUD_LOCATION \
    --node-version=1.20.10-gke.300 \
    --vm-size=VM_SIZE \
    --max-pods-per-node=110 \
    --min-nodes=MIN_NODES \
    --max-nodes=MAX_NODES \
    --azure-availability-zone=AZURE_ZONE \
    --ssh-public-key="${SSH_PUBLIC_KEY}" \
    --subnet-id="${SUBNET_ID}"

다음을 바꿉니다.

  • NODE_POOL_NAME: 노드 풀의 고유한 이름입니다(예: node-pool-1).
  • CLUSTER_NAME: Anthos clusters on Azure 사용자 클러스터의 이름입니다.
  • GOOGLE_CLOUD_LOCATION: 사용자 클러스터를 관리하는 Google Cloud 위치입니다.
  • VM_SIZE: 지원되는 Azure VM 크기입니다.
  • MIN_NODES: 노드 풀의 최소 노드 수입니다. 자세한 내용은 노드 풀 자동 확장을 참조하세요.
  • MAX_NODES: 노드 풀의 최대 노드 수입니다.
  • AZURE_ZONE: Anthos clusters on Azure가 노드 풀을 실행하는 Azure 가용성 영역입니다(예: 3).

노드 풀 삭제

노드 풀을 삭제하려면 다음 명령어를 실행합니다.

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

다음을 바꿉니다.

  • NODE_POOL_NAME: 삭제할 노드 풀의 이름
  • CLUSTER_NAME: 노드 풀이 연결된 클러스터의 이름
  • GOOGLE_CLOUD_LOCATION: 노드 풀을 호스팅하는 Google Cloud 위치

다음 단계

  • 빠른 시작으로 Anthos clusters on Azure에서 첫 번째 워크로드를 시작합니다.