AKS(Azure Kubernetes Service)에서 클러스터에 대한 노드 풀 만들기

AKS(Azure Kubernetes Service)에서 동일한 구성의 노드는 노드 풀로 그룹화됩니다. 이러한 노드 풀에는 애플리케이션을 실행하는 기본 VM이 포함됩니다. AKS 클러스터를 만들 때 시스템 노드 풀을 만드는 초기 노드 수와 해당 크기(SKU)를 정의합니다.

컴퓨팅 또는 스토리지 요구 사항이 다른 애플리케이션을 지원하려면 사용자 노드 풀을 만들 수 있습니다. 시스템 노드 풀은 CoreDNS 및 konnectivity. 사용자 노드 풀의 기본 목적은 애플리케이션 Pod를 호스트하는 것입니다. 예를 들어 더 많은 사용자 노드 풀을 사용하여 계산 집약적 애플리케이션에 대한 GPU를 제공하거나 고성능 SSD 스토리지에 액세스할 수 있습니다. 그러나 AKS 클러스터에 하나의 풀만 포함하려는 경우 시스템 노드 풀에서 애플리케이션 Pod를 예약할 수 있습니다.

참고 항목

이 기능을 사용하면 여러 노드 풀을 만들고 관리할 수 있으며 CRUD(만들기/업데이트/삭제) 작업을 위한 별도의 명령이 필요합니다. 이전에는 managedCluster API를 통해 az aks create 클러스터 작업을 수행하거나 az aks update 사용했으며 컨트롤 플레인과 단일 노드 풀을 변경하는 유일한 옵션이었습니다. 이 기능은 agentPool API를 통해 에이전트 풀에 대한 별도의 작업 집합을 노출하며 개별 노드 풀에서 작업을 실행하려면 명령 집합을 사용해야 az aks nodepool 합니다.

이 문서에서는 AKS 클러스터에서 하나 이상의 노드 풀을 만드는 방법을 보여 줍니다.

시작하기 전에

제한 사항

여러 노드 풀을 지원하는 AKS 클러스터를 만들 때 적용되는 제한 사항은 다음과 같습니다.

  • AKS(Azure Kubernetes Service)의 할당량, 가상 머신 크기 제한 및 지역 가용성을 참조하세요.
  • AKS 클러스터에서 대신 사용할 다른 시스템 노드 풀이 있는 경우 시스템 노드 풀을 삭제할 수 있습니다. 그렇지 않으면 시스템 노드 풀을 삭제할 수 없습니다.
  • 시스템 풀은 하나 이상의 노드를 포함해야 하며 사용자 노드 풀에는 0개 이상의 노드가 포함될 수 있습니다.
  • AKS 클러스터는 표준 SKU 부하 분산 장치를 사용하여 여러 노드 풀을 사용해야 합니다. 이 기능은 기본 SKU 부하 분산 장치에서 지원되지 않습니다.
  • AKS 클러스터는 노드에 대해 Virtual Machine Scale Sets를 사용해야 합니다.
  • 노드 풀의 이름은 영숫자 소문자만 포함할 수 있고 소문자 문자로 시작해야 합니다.
    • Linux 노드 풀의 경우 길이는 1-12자 사이여야 합니다.
    • Windows 노드 풀의 경우 길이는 1~6자 사이여야 합니다.
  • 모든 노드 풀은 동일한 가상 네트워크에 있어야 합니다.
  • 클러스터를 만들 때 여러 노드 풀을 만들 때 노드 풀에 대한 Kubernetes 버전은 컨트롤 플레인의 버전 집합과 일치해야 합니다.

AKS 클러스터 만들기

Important

프로덕션 환경에서 AKS 클러스터에 대해 단일 시스템 노드 풀을 실행하는 경우 노드 풀에 대해 3개 이상의 노드를 사용하는 것이 좋습니다. 한 노드가 다운되면 컨트롤 플레인 리소스가 손실되고 중복성이 손상됩니다. 더 많은 컨트롤 플레인 노드를 사용하여 이 위험을 완화할 수 있습니다.

  1. az group create 명령을 사용하여 Azure 리소스 그룹을 만듭니다.

    az group create --name myResourceGroup --location eastus
    
  2. 명령을 사용하여 단일 노드 풀이 있는 AKS 클러스터를 만듭니다 az aks create .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --vm-set-type VirtualMachineScaleSets \
        --node-count 2 \
        --generate-ssh-keys \
        --load-balancer-sku standard
    

    클러스터를 만드는 데 몇 분이 걸립니다.

  3. 클러스터가 준비되면 명령을 사용하여 클러스터 자격 증명을 가져옵니다 az aks get-credentials .

    az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
    

노드 풀 추가

이전 단계에서 만든 클러스터에는 단일 노드 풀이 있습니다. 이 섹션에서는 클러스터에 두 번째 노드 풀을 추가합니다.

  1. 명령을 사용하여 새 노드 풀을 만듭니다 az aks nodepool add . 다음 예제에서는 세 개의 노드를 실행하는 mynodepool이라는 노드 풀을 만듭니다.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 3
    
  2. 명령을 사용하여 az aks node pool list 노드 풀의 상태 확인하고 리소스 그룹 및 클러스터 이름을 지정합니다.

    az aks nodepool list --resource-group myResourceGroup --cluster-name myAKSCluster
    

    다음 예제 출력은 3개의 노드를 사용하여 mynodepool이 성공적으로 생성되었음을 보여 줍니다. 이전 단계에서 AKS 클러스터를 만들 때 노드 수가 2인 기본 nodepool1이 만들어졌습니다.

    [
      {
        ...
        "count": 3,
        ...
        "name": "mynodepool",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      },
      {
        ...
        "count": 2,
        ...
        "name": "nodepool1",
        "orchestratorVersion": "1.15.7",
        ...
        "vmSize": "Standard_DS2_v2",
        ...
      }
    ]
    

ARM64 노드 풀

ARM64 프로세서는 Kubernetes 워크로드에 대해 저전력 컴퓨팅을 제공합니다. ARM64 노드 풀을 만들려면 Dpsv5, Dplsv5 또는 Epsv5 시리즈 Virtual Machine을 선택해야 합니다.

제한 사항

  • ARM64 노드 풀은 Defender 지원 클러스터에서 지원되지 않습니다.
  • FIPS 사용 노드 풀은 ARM64 SKU에서 지원되지 않습니다.

ARM64 노드 풀 추가

  • 를 사용하여 기존 클러스터에 ARM64 노드 풀을 az aks nodepool add추가합니다.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name armpool \
        --node-count 3 \
        --node-vm-size Standard_D2pds_v5
    

Azure Linux 노드 풀

AKS용 Azure Linux 컨테이너 호스트는 AKS 컨테이너 호스트로 사용할 수 있는 오픈 소스 Linux 배포판입니다. 높은 안정성, 보안 및 일관성을 제공합니다. 여기에는 부팅 시간과 전반적인 성능을 향상시키는 컨테이너 워크로드를 실행하는 데 필요한 최소한의 패키지 집합만 포함됩니다.

Azure Linux 노드 풀 추가

  • 명령을 사용하여 기존 클러스터에 Azure Linux 노드 풀을 az aks nodepool add 추가하고 지정 --os-sku AzureLinux합니다.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name azlinuxpool \
        --os-sku AzureLinux
    

Ubuntu 노드를 Azure Linux 노드로 마이그레이션

다음 방법 중 하나를 사용하여 기존 Ubuntu 노드를 Azure Linux로 마이그레이션할 수 있습니다.

고유한 서브넷이 있는 노드 풀

논리 격리를 위해 워크로드에 클러스터 노드를 별도의 풀로 분할해야 할 수 있습니다. 클러스터의 각 노드 풀 전용 서브넷은 이 격리를 지원하는 데 도움이 될 수 있으며, 이는 노드 풀 간에 분할할 연속되지 않은 가상 네트워크 주소 공간을 갖는 것과 같은 요구 사항을 해결할 수 있습니다.

참고 항목

Azure CLI 버전 2.35.0 이상을 사용해야 합니다.

제한 사항

  • 노드 풀에 할당된 모든 서브넷은 동일한 가상 네트워크에 속해야 합니다.
  • 시스템 Pod는 DNS 확인 및 kubectl 로그/exec/포트 전달 프록시 터널링과 같은 중요한 기능을 제공하려면 클러스터의 모든 노드 및 Pod에 액세스할 수 있어야 합니다.
  • 클러스터를 만든 후 VNET을 확장하는 경우 원래 CIDR 블록 외부에 서브넷을 추가하기 전에 클러스터를 업데이트해야 합니다. 에이전트 풀에서 AKS 오류 출력이 추가 aks-preview 되는 동안 Azure CLI 확장(버전 0.5.66 이상)은 이제 필요한 -g <resourceGroup> -n <clusterName> 인수만 있는 실행 az aks update 명령을 지원합니다. 이 명령은 변경하지 않고 업데이트 작업을 수행하므로 실패한 상태에서 클러스터를 복구할 수 있습니다.
  • Kubernetes 버전이 1.23.3 미만인 클러스터에서 kube-proxy SNAT는 새 서브넷에서 트래픽을 생성하므로 Azure 네트워크 정책에서 패킷을 삭제할 수 있습니다.
  • Windows 노드는 노드 풀이 이미지로 다시 설치될 때까지 새 서브넷에 대한 SNAT 트래픽을 처리합니다.
  • 내부 부하 분산 장치는 기본적으로 노드 풀 서브넷 중 하나로 설정됩니다.

고유한 서브넷을 사용하는 노드 풀 추가

  • 명령을 사용하여 고유한 서브넷이 있는 노드 풀을 기존 클러스터에 az aks nodepool add 추가하고 지정합니다 --vnet-subnet-id.

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name mynodepool \
        --node-count 3 \
        --vnet-subnet-id <YOUR_SUBNET_RESOURCE_ID>
    

FIPS 사용 노드 풀

AKS 클러스터에 FIPS(Federal Information Process Standard)를 사용하도록 설정하는 방법에 대한 자세한 내용은 AKS(Azure Kubernetes Service) 노드 풀에 대해 FIPS(Federal Information Process Standard) 사용하도록 설정를 참조하세요.

Windows Server 노드 풀 containerd

Kubernetes 버전 1.20 이상부터 Windows Server 2019 노드 풀의 컨테이너 런타임으로 지정할 containerd 수 있습니다. Kubernetes 1.23 containerd 부터는 Windows용 기본 컨테이너 런타임만 사용할 수 있습니다.

Important

Windows Server 2019 노드 풀과 함께 사용하는 containerd 경우:

  • 컨트롤 플레인과 Windows Server 2019 노드 풀 모두 Kubernetes 버전 1.20을 사용해야 합니다.
  • Windows Server 컨테이너를 실행하도록 노드 풀을 만들거나 업데이트하는 경우 기본값 --node-vm-sizeStandard_D2s_v3이며, 이는 Kubernetes 버전 1.20 이전의 Windows Server 2019 노드 풀에 권장되는 최소 크기였습니다. 사용하는 containerd Windows Server 2019 노드 풀에 권장되는 최소 크기는 Standard_D4s_v3. 매개 변수를 --node-vm-size 설정할 때 제한된 VM 크기 목록을 검사.
  • 워크로드가 올바르게 예약되도록 배포와 함께 Windows Server 2019 노드 풀이 실행 containerd 되고, 플러레이션 또는 노드 선택기와 함께 taint 또는 레이블을 사용하는 것이 좋습니다.

containerd로 Windows Server 노드 풀 추가

  • 를 사용하여 기존 클러스터에 Windows Server 노드 풀 containerdaz aks nodepool add추가합니다.

    참고 항목

    사용자 지정 헤더를 WindowsContainerRuntime=containerd 지정하지 않으면 노드 풀은 기본적으로 컨테이너 런타임으로 계속 사용됩니다 containerd .

    az aks nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --os-type Windows \
        --name npwcd \
        --node-vm-size Standard_D4s_v3 \
        --kubernetes-version 1.20.5 \
        --aks-custom-headers WindowsContainerRuntime=containerd \
        --node-count 1
    

특정 기존 Windows Server 노드 풀을 로 업그레이드 containerd

  • Docker에서 명령을 사용하여 특정 노드 풀을 containerd 업그레이드합니다 az aks nodepool upgrade .

    az aks nodepool upgrade \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name npwd \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

모든 기존 Windows Server 노드 풀을 로 업그레이드 containerd

  • Docker에서 명령을 사용하여 모든 노드 풀을 containerd 업그레이드합니다 az aks nodepool upgrade .

    az aks nodepool upgrade \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --kubernetes-version 1.20.7 \
        --aks-custom-headers WindowsContainerRuntime=containerd
    

노드 풀 삭제

노드 풀이 더 이상 필요하지 않은 경우 노드 풀을 삭제하고 기본 VM 노드를 제거할 수 있습니다.

주의

노드 풀을 삭제하면 AKS는 차단 및 드레이닝을 수행하지 않으며 노드 풀을 삭제할 때 발생할 수 있는 데이터 손실에 대한 복구 옵션이 없습니다. 다른 노드 풀에서 Pod를 예약할 수 없는 경우 해당 애플리케이션을 사용할 수 없게 됩니다. 사용 중인 애플리케이션에 데이터 백업이 없거나 클러스터의 다른 노드 풀에서 실행할 수 있는 기능이 없는 경우 노드 풀을 삭제하지 않도록 합니다. 삭제하려는 노드 풀에서 현재 실행 중인 Pod의 다시 예약 중단을 최소화하려면 삭제하기 전에 노드 풀의 모든 노드에서 코던을 수행하고 드레이닝합니다.

  • 명령을 사용하여 노드 풀을 az aks nodepool delete 삭제하고 노드 풀 이름을 지정합니다.

    az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name mynodepool --no-wait
    

    노드 및 노드 풀을 삭제하는 데 몇 분 정도 걸립니다.

다음 단계

이 문서에서는 AKS 클러스터에서 여러 노드 풀을 만드는 방법을 알아보았습니다. 여러 노드 풀을 관리하는 방법에 대한 자세한 내용은 AKS(Azure Kubernetes Service)에서 클러스터에 대한 여러 노드 풀 관리를 참조하세요.