AKS(Azure Kubernetes Service)에서 클러스터에 대한 여러 노드 풀 만들기 및 관리Create and manage multiple node pools for a cluster in Azure Kubernetes Service (AKS)

Azure Kubernetes 서비스 (AKS)에서 동일한 구성의 노드는 노드 풀 로 그룹화 됩니다.In Azure Kubernetes Service (AKS), nodes of the same configuration are grouped together into node pools. 이러한 노드 풀에는 응용 프로그램을 실행 하는 기본 Vm이 포함 됩니다.These node pools contain the underlying VMs that run your applications. 초기 노드 수와 해당 크기 (SKU)는 시스템 노드 풀을 만드는 AKS 클러스터를 만들 때 정의 됩니다.The initial number of nodes and their size (SKU) is defined when you create an AKS cluster, which creates a system node pool. 계산 또는 저장소 요구가 다른 응용 프로그램을 지원 하기 위해 추가 사용자 노드 풀 을 만들 수 있습니다.To support applications that have different compute or storage demands, you can create additional user node pools. 시스템 노드 풀은 CoreDNS 및 tunnelfront와 같은 중요 한 시스템 pod를 호스트 하는 기본 목적을 제공 합니다.System node pools serve the primary purpose of hosting critical system pods such as CoreDNS and tunnelfront. 사용자 노드 풀은 응용 프로그램 pod를 호스트 하는 기본 목적을 제공 합니다.User node pools serve the primary purpose of hosting your application pods. 그러나 AKS 클러스터에 풀을 하나만 포함 하려는 경우에는 시스템 노드 풀에서 응용 프로그램 pod를 예약할 수 있습니다.However, application pods can be scheduled on system node pools if you wish to only have one pool in your AKS cluster. 사용자 노드 풀은 응용 프로그램 관련 pod를 저장 하는 위치입니다.User node pools are where you place your application-specific pods. 예를 들어 이러한 추가 사용자 노드 풀을 사용 하 여 계산 집약적인 응용 프로그램을 위한 Gpu를 제공 하거나 고성능 SSD 저장소에 액세스할 수 있습니다.For example, use these additional user node pools to provide GPUs for compute-intensive applications, or access to high-performance SSD storage.

참고

이 기능을 사용 하면 여러 노드 풀을 만들고 관리 하는 방법을 보다 효과적으로 제어할 수 있습니다.This feature enables higher control over how to create and manage multiple node pools. 따라서 create/update/delete에 별도의 명령이 필요 합니다.As a result, separate commands are required for create/update/delete. 이전에 또는 managedCluster API를 사용 하 여 클러스터 작업을 수행 하 az aks create az aks update 고 제어 평면과 단일 노드 풀을 변경 하는 유일한 옵션 이었습니다.Previously cluster operations through az aks create or az aks update used the managedCluster API and were the only option to change your control plane and a single node pool. 이 기능은 agentPool API를 통해 에이전트 풀에 대 한 별도의 작업 집합을 노출 하 고 az aks nodepool 개별 노드 풀에서 작업을 실행 하려면 명령 집합을 사용 해야 합니다.This feature exposes a separate operation set for agent pools through the agentPool API and require use of the az aks nodepool command set to execute operations on an individual node pool.

이 문서에서는 AKS 클러스터에서 여러 노드 풀을 만들고 관리 하는 방법을 보여 줍니다.This article shows you how to create and manage multiple node pools in an AKS cluster.

시작하기 전에Before you begin

Azure CLI 버전 2.2.0 이상이 설치 및 구성 되어 있어야 합니다.You need the Azure CLI version 2.2.0 or later installed and configured. az --version을 실행하여 버전을 찾습니다.Run az --version to find the version. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.If you need to install or upgrade, see Install Azure CLI.

제한 사항Limitations

여러 노드 풀을 지원하는 AKS 클러스터를 만들고 관리하는 경우 다음과 같은 제한 사항이 적용됩니다.The following limitations apply when you create and manage AKS clusters that support multiple node pools:

  • Azure Kubernetes 서비스 (AKS)의 할당량, 가상 머신 크기 제한 및 지역 가용성을 참조 하세요.See Quotas, virtual machine size restrictions, and region availability in Azure Kubernetes Service (AKS).
  • AKS 클러스터에서 다른 시스템 노드 풀을 사용할 수 있게 되 면 시스템 노드 풀을 삭제할 수 있습니다.You can delete system node pools, provided you have another system node pool to take its place in the AKS cluster.
  • 시스템 풀은 하나 이상의 노드를 포함 해야 하며, 사용자 노드 풀에는 0 개 이상의 노드가 포함 될 수 있습니다.System pools must contain at least one node, and user node pools may contain zero or more nodes.
  • AKS 클러스터는 표준 SKU 부하 분산 장치를 사용 하 여 여러 노드 풀을 사용 해야 합니다 .이 기능은 기본 SKU 부하 분산 장치에서 지원 되지 않습니다.The AKS cluster must use the Standard SKU load balancer to use multiple node pools, the feature is not supported with Basic SKU load balancers.
  • AKS 클러스터는 노드에 대 한 가상 머신 확장 집합을 사용 해야 합니다.The AKS cluster must use virtual machine scale sets for the nodes.
  • 노드 풀의 이름에는 소문자 영숫자만 사용할 수 있으며 소문자 문자로 시작 해야 합니다.The name of a node pool may only contain lowercase alphanumeric characters and must begin with a lowercase letter. Linux 노드 풀의 경우 길이는 1 자에서 12 자 사이 여야 하 고 Windows 노드 풀의 길이는 1에서 6 자 사이 여야 합니다.For Linux node pools the length must be between 1 and 12 characters, for Windows node pools the length must be between 1 and 6 characters.
  • 모든 노드 풀은 동일한 가상 네트워크에 있어야 합니다.All node pools must reside in the same virtual network.
  • 클러스터를 만들 때 여러 노드 풀을 만들 때 노드 풀에서 사용 하는 모든 Kubernetes 버전은 제어 평면에 대해 설정 된 버전과 일치 해야 합니다.When creating multiple node pools at cluster create time, all Kubernetes versions used by node pools must match the version set for the control plane. 이는 클러스터를 프로 비전 한 후 노드당 풀 작업을 사용 하 여 업데이트할 수 있습니다.This can be updated after the cluster has been provisioned by using per node pool operations.

AKS 클러스터 만들기Create an AKS cluster

중요

프로덕션 환경에서 AKS 클러스터에 대 한 단일 시스템 노드 풀을 실행 하는 경우 노드 풀에 대해 세 개 이상의 노드를 사용 하는 것이 좋습니다.If you run a single system node pool for your AKS cluster in a production environment, we recommend you use at least three nodes for the node pool.

시작 하려면 단일 노드 풀로 AKS 클러스터를 만듭니다.To get started, create an AKS cluster with a single node pool. 다음 예제에서는 az group create 명령을 사용 하 여 에서는 eastus 지역에 myresourcegroup 이라는 리소스 그룹을 만듭니다.The following example uses the az group create command to create a resource group named myResourceGroup in the eastus region. 그런 다음 myAKSCluster 라는 AKS 클러스터가 az AKS create 명령을 사용 하 여 만들어집니다.An AKS cluster named myAKSCluster is then created using the az aks create command.

참고

여러 노드 풀을 사용 하는 경우 기본 부하 분산 장치 SKU가 지원 되지 않습니다 .The Basic load balancer SKU is not supported when using multiple node pools. 기본적으로 AKS 클러스터는 Azure CLI 및 Azure Portal에서 표준 부하 분산 장치 SKU를 사용 하 여 생성 됩니다.By default, AKS clusters are created with the Standard load balancer SKU from the Azure CLI and Azure portal.

# Create a resource group in East US
az group create --name myResourceGroup --location eastus

# Create a basic single-node AKS cluster
az aks create \
    --resource-group myResourceGroup \
    --name myAKSCluster \
    --vm-set-type VirtualMachineScaleSets \
    --node-count 2 \
    --generate-ssh-keys \
    --load-balancer-sku standard

클러스터를 만드는 데 몇 분이 걸립니다.It takes a few minutes to create the cluster.

참고

클러스터가 안정적으로 작동 하도록 하려면이 노드 풀에서 필수적인 시스템 서비스가 실행 되 고 있으므로 기본 노드 풀에서 2 개 이상의 노드를 실행 해야 합니다.To ensure your cluster operates reliably, you should run at least 2 (two) nodes in the default node pool, as essential system services are running across this node pool.

클러스터가 준비 되 면 az aks 명령을 사용 하 여에 사용할 클러스터 자격 증명을 가져옵니다 kubectl .When the cluster is ready, use the az aks get-credentials command to get the cluster credentials for use with kubectl:

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

노드 풀 추가Add a node pool

이전 단계에서 만든 클러스터에는 단일 노드 풀이 있습니다.The cluster created in the previous step has a single node pool. Az aks nodepool add 명령을 사용 하 여 두 번째 노드 풀을 추가 해 보겠습니다.Let's add a second node pool using the az aks nodepool add command. 다음 예에서는 3 개의 노드를 실행 하는 mynodepool 이라는 노드 풀을 만듭니다.The following example creates a node pool named mynodepool that runs 3 nodes:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 3

참고

노드 풀의 이름은 소문자로 시작 해야 하며 영숫자 문자만 포함할 수 있습니다.The name of a node pool must start with a lowercase letter and can only contain alphanumeric characters. Linux 노드 풀의 경우 길이는 1 자에서 12 자 사이 여야 하 고 Windows 노드 풀의 길이는 1에서 6 자 사이 여야 합니다.For Linux node pools the length must be between 1 and 12 characters, for Windows node pools the length must be between 1 and 6 characters.

노드 풀의 상태를 확인 하려면 az aks node pool list 명령을 사용 하 여 리소스 그룹 및 클러스터 이름을 지정 합니다.To see the status of your node pools, use the az aks node pool list command and specify your resource group and cluster name:

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

다음 예제 출력은 노드 풀에서 3 개의 노드를 사용 하 여 mynodepool 을 성공적으로 만들었음을 보여 줍니다.The following example output shows that mynodepool has been successfully created with three nodes in the node pool. 이전 단계에서 AKS 클러스터를 만든 경우 기본 nodepool1 노드 수를 2 로 만들었습니다.When the AKS cluster was created in the previous step, a default nodepool1 was created with a node count of 2.

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

노드 풀을 추가할 때 Vmsize 가 지정 되지 않은 경우 기본 크기는 Windows 노드 풀의 경우 Standard_D2s_v3 이 고 Linux 노드 풀의 경우 Standard_DS2_v2 입니다.If no VmSize is specified when you add a node pool, the default size is Standard_D2s_v3 for Windows node pools and Standard_DS2_v2 for Linux node pools. OrchestratorVersion 가 지정 되지 않은 경우 기본값은 컨트롤 평면과 동일한 버전입니다.If no OrchestratorVersion is specified, it defaults to the same version as the control plane.

고유한 서브넷을 사용 하 여 노드 풀 추가 (미리 보기)Add a node pool with a unique subnet (preview)

논리적 격리를 위해 작업에는 클러스터의 노드를 별도의 풀로 분할 해야 할 수 있습니다.A workload may require splitting a cluster's nodes into separate pools for logical isolation. 클러스터의 각 노드 풀에 전용으로 사용 되는 별도의 서브넷에서 이러한 격리를 지원할 수 있습니다.This isolation can be supported with separate subnets dedicated to each node pool in the cluster. 이를 통해 노드 풀 간에 분할 되는 연속 되지 않는 가상 네트워크 주소 공간이 있는 등의 요구 사항을 해결할 수 있습니다.This can address requirements such as having non-contiguous virtual network address space to split across node pools.

제한 사항Limitations

  • Nodepools에 할당 된 모든 서브넷은 동일한 가상 네트워크에 속해야 합니다.All subnets assigned to nodepools must belong to the same virtual network.
  • 시스템 pod는 coreDNS를 통한 DNS 확인과 같은 중요 한 기능을 제공 하기 위해 클러스터의 모든 노드에 대 한 액세스 권한이 있어야 합니다.System pods must have access to all nodes in the cluster to provide critical functionality such as DNS resolution via coreDNS.
  • 노드 풀 당 고유한 서브넷 할당은 미리 보기 중에 Azure CNI로 제한 됩니다.Assignment of a unique subnet per node pool is limited to Azure CNI during preview.
  • 미리 보기 중에는 노드 풀 당 고유한 서브넷이 있는 네트워크 정책을 사용할 수 없습니다.Using network policies with a unique subnet per node pool is not supported during preview.

전용 서브넷을 사용 하 여 노드 풀을 만들려면 노드 풀을 만들 때 서브넷 리소스 ID를 추가 매개 변수로 전달 합니다.To create a node pool with a dedicated subnet, pass the subnet resource ID as an additional parameter when creating a node pool.

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

노드 풀 업그레이드Upgrade a node pool

참고

클러스터 또는 노드 풀에서 업그레이드 및 크기 조정 작업을 동시에 수행할 수 없습니다. 시도 하면 오류가 반환 됩니다.Upgrade and scale operations on a cluster or node pool cannot occur simultaneously, if attempted an error is returned. 대신, 동일한 리소스에 대 한 다음 요청 전에 대상 리소스에서 각 작업 유형이 완료 되어야 합니다.Instead, each operation type must complete on the target resource prior to the next request on that same resource. 이에 대 한 자세한 내용은 문제 해결 가이드를 참조 하세요.Read more about this on our troubleshooting guide.

이 섹션의 명령은 단일 특정 노드 풀을 업그레이드 하는 방법에 대해 설명 합니다.The commands in this section explain how to upgrade a single specific node pool. Kubernetes 버전의 제어 평면과 노드 풀을 업그레이드 하는 경우의 관계는 아래 섹션에 설명 되어 있습니다.The relationship between upgrading the Kubernetes version of the control plane and the node pool are explained in the section below.

참고

노드 풀 OS 이미지 버전은 클러스터의 Kubernetes 버전에 연결 됩니다.The node pool OS image version is tied to the Kubernetes version of the cluster. 클러스터 업그레이드 후에는 OS 이미지 업그레이드만 가져옵니다.You will only get OS image upgrades, following a cluster upgrade.

이 예제에서는 두 개의 노드 풀이 있으므로 az aks nodepool upgrade 를 사용 하 여 노드 풀을 업그레이드 해야 합니다.Since there are two node pools in this example, we must use az aks nodepool upgrade to upgrade a node pool. 사용 가능한 업그레이드를 확인 하려면 az aks 가져오기-업그레이드 를 사용 합니다.To see the available upgrades use az aks get-upgrades

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

Mynodepool 을 업그레이드 하겠습니다.Let's upgrade the mynodepool. 다음 예제와 같이 az aks nodepool upgrade 명령을 사용 하 여 노드 풀을 업그레이드 합니다.Use the az aks nodepool upgrade command to upgrade the node pool, as shown in the following example:

az aks nodepool upgrade \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --kubernetes-version KUBERNETES_VERSION \
    --no-wait

Az aks node pool list 명령을 사용 하 여 노드 풀의 상태를 다시 나열 합니다.List the status of your node pools again using the az aks node pool list command. 다음 예에서는 mynodepoolKUBERNETES_VERSION 으로 업그레이드 상태에 있음을 보여 줍니다.The following example shows that mynodepool is in the Upgrading state to KUBERNETES_VERSION:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 3,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "KUBERNETES_VERSION",
    ...
    "provisioningState": "Upgrading",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

노드를 지정 된 버전으로 업그레이드 하는 데 몇 분 정도 걸립니다.It takes a few minutes to upgrade the nodes to the specified version.

AKS 클러스터의 모든 노드 풀을 동일한 Kubernetes 버전으로 업그레이드 하는 것이 가장 좋습니다.As a best practice, you should upgrade all node pools in an AKS cluster to the same Kubernetes version. 의 기본 동작은 az aks upgrade 이 맞춤을 구현 하기 위해 모든 노드 풀을 제어 평면과 함께 업그레이드 하는 것입니다.The default behavior of az aks upgrade is to upgrade all node pools together with the control plane to achieve this alignment. 개별 노드 풀을 업그레이드 하는 기능을 사용 하면 롤링 업그레이드를 수행 하 고 노드 풀 간에 pod 일정을 예약 하 여 위에서 언급 한 제약 조건 내에서 응용 프로그램 작동 시간을 유지할 수 있습니다The ability to upgrade individual node pools lets you perform a rolling upgrade and schedule pods between node pools to maintain application uptime within the above constraints mentioned.

여러 노드 풀을 사용 하 여 클러스터 제어 평면 업그레이드Upgrade a cluster control plane with multiple node pools

참고

Kubernetes는 표준 의미 체계 버전 관리 체계를 사용 합니다.Kubernetes uses the standard Semantic Versioning versioning scheme. 버전 번호는 x-y 로 표시 됩니다. 여기서 x 는 주 버전이 고 y 는 부 버전이 며 z 는 패치 버전입니다.The version number is expressed as x.y.z, where x is the major version, y is the minor version, and z is the patch version. 예를 들어 버전 1.12.6 에서 1은 주 버전이 고 12는 부 버전 이며 6은 패치 버전입니다.For example, in version 1.12.6, 1 is the major version, 12 is the minor version, and 6 is the patch version. 제어 평면과 초기 노드 풀의 Kubernetes 버전은 클러스터를 만드는 동안 설정 됩니다.The Kubernetes version of the control plane and the initial node pool are set during cluster creation. 모든 추가 노드 풀은 클러스터에 추가 될 때 해당 Kubernetes 버전을 설정 합니다.All additional node pools have their Kubernetes version set when they are added to the cluster. Kubernetes 버전은 노드 풀과 노드 풀 및 제어 평면 사이에서 다를 수 있습니다.The Kubernetes versions may differ between node pools as well as between a node pool and the control plane.

AKS 클러스터에는 Kubernetes 버전이 연결 된 두 개의 클러스터 리소스 개체가 있습니다.An AKS cluster has two cluster resource objects with Kubernetes versions associated.

  1. 클러스터 제어 평면 Kubernetes 버전입니다.A cluster control plane Kubernetes version.
  2. Kubernetes 버전을 포함 하는 노드 풀A node pool with a Kubernetes version.

컨트롤 평면은 하나 이상의 노드 풀에 매핑됩니다.A control plane maps to one or many node pools. 업그레이드 작업의 동작은 사용 되는 Azure CLI 명령에 따라 달라 집니다.The behavior of an upgrade operation depends on which Azure CLI command is used.

AKS 제어 평면을 업그레이드 하려면를 사용 해야 az aks upgrade 합니다.Upgrading an AKS control plane requires using az aks upgrade. 이 명령은 클러스터의 제어 평면 버전과 모든 노드 풀을 업그레이드 합니다.This command upgrades the control plane version and all node pools in the cluster.

플래그를 az aks upgrade 사용 하 여 명령을 실행 하면 --control-plane-only 클러스터 제어 평면만 업그레이드 됩니다.Issuing the az aks upgrade command with the --control-plane-only flag upgrades only the cluster control plane. 클러스터에 연결 된 노드 풀이 모두 변경 되지 않았습니다.None of the associated node pools in the cluster are changed.

개별 노드 풀을 업그레이드 하려면 az aks nodepool upgrade 를 사용 해야 합니다.Upgrading individual node pools requires using az aks nodepool upgrade. 이 명령은 지정 된 Kubernetes 버전을 사용 하 여 대상 노드 풀만 업그레이드 합니다.This command upgrades only the target node pool with the specified Kubernetes version

업그레이드에 대 한 유효성 검사 규칙Validation rules for upgrades

클러스터의 제어 평면과 노드 풀에 대 한 유효한 Kubernetes 업그레이드는 다음 규칙 집합에 의해 유효성이 검사 됩니다.The valid Kubernetes upgrades for a cluster's control plane and node pools are validated by the following sets of rules.

  • 노드 풀을 업그레이드 하는 데 유효한 버전에 대 한 규칙:Rules for valid versions to upgrade node pools:

    • 노드 풀 버전은 제어 평면과 동일한 버전을 포함 해야 합니다.The node pool version must have the same major version as the control plane.
    • 노드 풀 버전은 제어 평면 버전의 두 버전 내에 있어야 합니다.The node pool minor version must be within two minor versions of the control plane version.
    • 노드 풀 버전은 컨트롤 버전 보다 클 수 없습니다 major.minor.patch .The node pool version cannot be greater than the control major.minor.patch version.
  • 업그레이드 작업을 제출 하기 위한 규칙:Rules for submitting an upgrade operation:

    • 제어 평면이 나 노드 풀 Kubernetes 버전을 다운 그레이드할 수 없습니다.You cannot downgrade the control plane or a node pool Kubernetes version.
    • Node pool Kubernetes version을 지정 하지 않은 경우 동작은 사용 되는 클라이언트에 따라 달라 집니다.If a node pool Kubernetes version is not specified, behavior depends on the client being used. 리소스 관리자 템플릿의 선언은 사용 되는 경우 노드 풀에 대해 정의 된 기존 버전으로 대체 됩니다. 설정 된 항목이 없으면 제어 평면 버전이 사용 됩니다.Declaration in Resource Manager templates falls back to the existing version defined for the node pool if used, if none is set the control plane version is used to fall back on.
    • 지정 된 시간에 제어 평면 또는 노드 풀을 업그레이드 하거나 크기를 조정할 수 있습니다. 단일 제어 평면이 나 노드 풀 리소스에 대해 동시에 여러 작업을 제출할 수 없습니다.You can either upgrade or scale a control plane or a node pool at a given time, you cannot submit multiple operations on a single control plane or node pool resource simultaneously.

수동으로 노드 풀 크기 조정Scale a node pool manually

응용 프로그램 워크 로드 요구가 변경 됨에 따라 노드 풀의 노드 수를 조정 해야 할 수 있습니다.As your application workload demands change, you may need to scale the number of nodes in a node pool. 노드 수를 확장 하거나 축소할 수 있습니다.The number of nodes can be scaled up or down.

노드 풀의 노드 수를 조정 하려면 az aks node pool scale 명령을 사용 합니다.To scale the number of nodes in a node pool, use the az aks node pool scale command. 다음 예에서는 mynodepool 의 노드 수를 5 로 조정 합니다.The following example scales the number of nodes in mynodepool to 5:

az aks nodepool scale \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name mynodepool \
    --node-count 5 \
    --no-wait

Az aks node pool list 명령을 사용 하 여 노드 풀의 상태를 다시 나열 합니다.List the status of your node pools again using the az aks node pool list command. 다음 예에서는 mynodepool 이 새 개수의 5 개 노드를 사용 하 여 크기 조정 상태에 있음을 보여 줍니다.The following example shows that mynodepool is in the Scaling state with a new count of 5 nodes:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 5,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Scaling",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

크기 조정 작업을 완료 하는 데 몇 분이 걸립니다.It takes a few minutes for the scale operation to complete.

클러스터 autoscaler를 사용 하도록 설정 하 여 특정 노드 풀의 크기를 자동으로 조정 합니다.Scale a specific node pool automatically by enabling the cluster autoscaler

AKS는 cluster autoscaler라는 기능을 사용 하 여 노드 풀의 크기를 자동으로 조정 하는 별도의 기능을 제공 합니다.AKS offers a separate feature to automatically scale node pools with a feature called the cluster autoscaler. 이 기능은 노드 풀 당 고유한 최소 및 최대 소수 자릿수를 사용 하 여 노드 풀 당 사용 하도록 설정할 수 있습니다.This feature can be enabled per node pool with unique minimum and maximum scale counts per node pool. 노드 풀 당 클러스터 autoscaler를 사용하는 방법을 알아봅니다.Learn how to use the cluster autoscaler per node pool.

노드 풀 삭제Delete a node pool

풀이 더 이상 필요 하지 않은 경우 삭제 하 고 기본 VM 노드를 제거할 수 있습니다.If you no longer need a pool, you can delete it and remove the underlying VM nodes. 노드 풀을 삭제 하려면 az aks node pool delete 명령을 사용 하 여 노드 풀 이름을 지정 합니다.To delete a node pool, use the az aks node pool delete command and specify the node pool name. 다음 예에서는 이전 단계에서 만든 mynoodepool 를 삭제 합니다.The following example deletes the mynoodepool created in the previous steps:

주의

노드 풀을 삭제할 때 발생할 수 있는 데이터 손실에 대 한 복구 옵션은 없습니다.There are no recovery options for data loss that may occur when you delete a node pool. 다른 노드 풀에서 pod을 예약할 수 없는 경우 해당 응용 프로그램을 사용할 수 없습니다.If pods can't be scheduled on other node pools, those applications are unavailable. 사용 중인 응용 프로그램에 데이터 백업이 없거나 클러스터의 다른 노드 풀에서 실행할 수 없는 경우 노드 풀을 삭제 하지 않아야 합니다.Make sure you don't delete a node pool when in-use applications don't have data backups or the ability to run on other node pools in your cluster.

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

Az aks node pool list 명령에서 출력 하는 다음 예제에서는 Mynodepool삭제 상태임을 보여 줍니다.The following example output from the az aks node pool list command shows that mynodepool is in the Deleting state:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 5,
    ...
    "name": "mynodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Deleting",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

노드 및 노드 풀을 삭제 하는 데 몇 분 정도 걸립니다.It takes a few minutes to delete the nodes and the node pool.

노드 풀의 VM 크기 지정Specify a VM size for a node pool

이전 예제에서 노드 풀을 만드는 경우 클러스터에서 만든 노드에 기본 VM 크기가 사용 되었습니다.In the previous examples to create a node pool, a default VM size was used for the nodes created in the cluster. 보다 일반적인 시나리오는 VM 크기 및 기능이 서로 다른 노드 풀을 만드는 것입니다.A more common scenario is for you to create node pools with different VM sizes and capabilities. 예를 들어 많은 양의 CPU 또는 메모리를 포함 하는 노드 또는 GPU 지원을 제공 하는 노드 풀을 포함 하는 노드 풀을 만들 수 있습니다.For example, you may create a node pool that contains nodes with large amounts of CPU or memory, or a node pool that provides GPU support. 다음 단계에서는 taints 및 tolerations를 사용 하 여 이러한 노드에서 실행 될 수 있는 pod에 대 한 액세스를 제한 하는 방법을 Kubernetes scheduler에 지시 합니다.In the next step, you use taints and tolerations to tell the Kubernetes scheduler how to limit access to pods that can run on these nodes.

다음 예제에서는 Standard_NC6 VM 크기를 사용 하는 GPU 기반 노드 풀을 만듭니다.In the following example, create a GPU-based node pool that uses the Standard_NC6 VM size. 이러한 Vm은 NVIDIA Tesla K80 카드에 의해 구동 됩니다.These VMs are powered by the NVIDIA Tesla K80 card. 사용 가능한 VM 크기에 대 한 자세한 내용은 Azure의 Linux 가상 머신에 대 한 크기를 참조 하세요.For information on available VM sizes, see Sizes for Linux virtual machines in Azure.

Az aks node pool add 명령을 사용 하 여 노드 풀을 만듭니다.Create a node pool using the az aks node pool add command again. 이번에는 gpunodepool 이름을 지정 하 고 --node-vm-size 매개 변수를 사용 하 여 Standard_NC6 크기를 지정 합니다.This time, specify the name gpunodepool, and use the --node-vm-size parameter to specify the Standard_NC6 size:

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name gpunodepool \
    --node-count 1 \
    --node-vm-size Standard_NC6 \
    --no-wait

Az aks node pool list 명령의 다음 예제 출력에서는 gpunodepool 가 지정 된 vmsize 를 사용 하 여 노드를 생성 하 고 있음을 보여 줍니다.The following example output from the az aks node pool list command shows that gpunodepool is Creating nodes with the specified VmSize:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 1,
    ...
    "name": "gpunodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "vmSize": "Standard_NC6",
    ...
  },
  {
    ...
    "count": 2,
    ...
    "name": "nodepool1",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Succeeded",
    ...
    "vmSize": "Standard_DS2_v2",
    ...
  }
]

Gpunodepool 성공적으로 생성 되는 데 몇 분 정도 걸립니다.It takes a few minutes for the gpunodepool to be successfully created.

노드 풀의 taint, 레이블 또는 태그 지정Specify a taint, label, or tag for a node pool

Nodepool taints 설정Setting nodepool taints

노드 풀을 만들 때 해당 노드 풀에 taints, 레이블 또는 태그를 추가할 수 있습니다.When creating a node pool, you can add taints, labels, or tags to that node pool. Taint, label 또는 tag를 추가 하면 해당 노드 풀 내의 모든 노드에는 해당 taint, label 또는 tag도 표시 됩니다.When you add a taint, label, or tag, all nodes within that node pool also get that taint, label, or tag.

Taint를 사용 하 여 노드 풀을 만들려면 az aks nodepool add를 사용 합니다.To create a node pool with a taint, use az aks nodepool add. Taintnp 이름을 지정 --node-taints 하 고 매개 변수를 사용 하 여 Sku = gpu: noschedule for taint를 지정 합니다.Specify the name taintnp and use the --node-taints parameter to specify sku=gpu:NoSchedule for the taint.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name taintnp \
    --node-count 1 \
    --node-taints sku=gpu:NoSchedule \
    --no-wait

참고

노드 풀을 만드는 동안에는 노드 풀에 대해서만 taint을 설정할 수 있습니다.A taint can only be set for node pools during node pool creation.

Az aks nodepool list 명령의 다음 예제 출력에서는 taintnp 가 지정 된 nodeTaints 를 사용 하 여 노드를 생성 하 고 있음을 보여 줍니다.The following example output from the az aks nodepool list command shows that taintnp is Creating nodes with the specified nodeTaints:

$ az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster

[
  {
    ...
    "count": 1,
    ...
    "name": "taintnp",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "nodeTaints":  [
      "sku=gpu:NoSchedule"
    ],
    ...
  },
 ...
]

Taint 정보는 노드에 대 한 예약 규칙을 처리 하기 위해 Kubernetes에 표시 됩니다.The taint information is visible in Kubernetes for handling scheduling rules for nodes. Kubernetes 스케줄러는 taint 및 toleration을 사용하여 노드에서 실행할 수 있는 워크로드를 제한할 수 있습니다.The Kubernetes scheduler can use taints and tolerations to restrict what workloads can run on nodes.

  • Taint 는 노드에서 특정 Pod만 예약할 수 있음을 나타내는 노드에 적용됩니다.A taint is applied to a node that indicates only specific pods can be scheduled on them.
  • Toleration 은 노드의 오류를 ‘허용’할 수 있도록 하는 Pod에 적용됩니다.A toleration is then applied to a pod that allows them to tolerate a node's taint.

고급 Kubernetes 예약 기능을 사용 하는 방법에 대 한 자세한 내용은 AKS의 advanced scheduler 기능 모범 사례 를 참조 하세요.For more information on how to use advanced Kubernetes scheduled features, see Best practices for advanced scheduler features in AKS

이전 단계에서는 노드 풀을 만들 때 sku = gpu: NoSchedule taint를 적용 했습니다.In the previous step, you applied the sku=gpu:NoSchedule taint when you created your node pool. 다음 기본 예제 YAML 매니페스트는 toleration를 사용 하 여 Kubernetes scheduler가 해당 노드 풀의 노드에 NGINX pod를 실행할 수 있도록 합니다.The following basic example YAML manifest uses a toleration to allow the Kubernetes scheduler to run an NGINX pod on a node in that node pool.

nginx-toleration.yaml 파일을 만들고 다음 예제 YAML을 복사합니다.Create a file named nginx-toleration.yaml and copy in the following example YAML:

apiVersion: v1
kind: Pod
metadata:
  name: mypod
spec:
  containers:
  - image: mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine
    name: mypod
    resources:
      requests:
        cpu: 100m
        memory: 128Mi
      limits:
        cpu: 1
        memory: 2G
  tolerations:
  - key: "sku"
    operator: "Equal"
    value: "gpu"
    effect: "NoSchedule"

명령을 사용 하 여 pod를 예약 합니다 kubectl apply -f nginx-toleration.yaml .Schedule the pod using the kubectl apply -f nginx-toleration.yaml command:

kubectl apply -f nginx-toleration.yaml

Pod를 예약 하 고 NGINX 이미지를 풀 하는 데 몇 초 정도 걸립니다.It takes a few seconds to schedule the pod and pull the NGINX image. Kubectl 설명 pod 명령을 사용 하 여 pod 상태를 확인 합니다.Use the kubectl describe pod command to view the pod status. 다음 압축 예제 출력에서는 sku = gpu: NoSchedule toleration이 적용 된 것을 보여 줍니다.The following condensed example output shows the sku=gpu:NoSchedule toleration is applied. 이벤트 섹션에서 스케줄러가 aks-taintnp-28993262-vmss000000 노드에 pod를 할당 했습니다.In the events section, the scheduler has assigned the pod to the aks-taintnp-28993262-vmss000000 node:

kubectl describe pod mypod
[...]
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                 node.kubernetes.io/unreachable:NoExecute for 300s
                 sku=gpu:NoSchedule
Events:
  Type    Reason     Age    From                Message
  ----    ------     ----   ----                -------
  Normal  Scheduled  4m48s  default-scheduler   Successfully assigned default/mypod to aks-taintnp-28993262-vmss000000
  Normal  Pulling    4m47s  kubelet             pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Pulled     4m43s  kubelet             Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
  Normal  Created    4m40s  kubelet             Created container
  Normal  Started    4m40s  kubelet             Started container

이 toleration가 적용 된 pod만 taintnp 의 노드에서 예약할 수 있습니다.Only pods that have this toleration applied can be scheduled on nodes in taintnp. 다른 pod는 nodepool1 노드 풀에서 예약 됩니다.Any other pod would be scheduled in the nodepool1 node pool. 추가 노드 풀을 만드는 경우 추가 taints 및 tolerations를 사용 하 여 해당 노드 리소스에서 예약할 수 있는 pod를 제한할 수 있습니다.If you create additional node pools, you can use additional taints and tolerations to limit what pods can be scheduled on those node resources.

Nodepool 레이블 설정Setting nodepool labels

노드 풀을 만드는 동안 노드 풀에 레이블을 추가할 수도 있습니다.You can also add labels to a node pool during node pool creation. 노드 풀에 설정 된 레이블은 노드 풀의 각 노드에 추가 됩니다.Labels set at the node pool are added to each node in the node pool. 이러한 레이블은 노드에 대 한 일정 규칙을 처리 하 는 Kubernetes에 표시 됩니다 .These labels are visible in Kubernetes for handling scheduling rules for nodes.

레이블을 사용 하 여 노드 풀을 만들려면 az aks nodepool add를 사용 합니다.To create a node pool with a label, use az aks nodepool add. 이름 labelnp 를 지정 하 고 --labels 매개 변수를 사용 하 여 레이블에 대해 dept = ITcostcenter = 9999 를 지정 합니다.Specify the name labelnp and use the --labels parameter to specify dept=IT and costcenter=9999 for labels.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name labelnp \
    --node-count 1 \
    --labels dept=IT costcenter=9999 \
    --no-wait

참고

노드 풀을 만드는 동안에는 노드 풀에 대해서만 레이블을 설정할 수 있습니다.Label can only be set for node pools during node pool creation. 또한 레이블은 키/값 쌍 이어야 하며 유효한 구문을포함 해야 합니다.Labels must also be a key/value pair and have a valid syntax.

Az aks nodepool list 명령의 다음 예제 출력에서는 지정 된 Nodelabels 를 사용 하 여 Labelnp 에서 노드를 만드는 것을 보여 줍니다.The following example output from the az aks nodepool list command shows that labelnp is Creating nodes with the specified nodeLabels:

$ az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster

[
  {
    ...
    "count": 1,
    ...
    "name": "labelnp",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "nodeLabels":  {
      "dept": "IT",
      "costcenter": "9999"
    },
    ...
  },
 ...
]

Nodepool Azure 태그 설정Setting nodepool Azure tags

AKS 클러스터의 노드 풀에 Azure 태그를 적용할 수 있습니다.You can apply an Azure tag to node pools in your AKS cluster. 노드 풀에 적용 되는 태그는 노드 풀 내의 각 노드에 적용 되며 업그레이드를 통해 유지 됩니다.Tags applied to a node pool are applied to each node within the node pool and are persisted through upgrades. 또한 확장 작업 중에 노드 풀에 추가 된 새 노드에 태그가 적용 됩니다.Tags are also applied to new nodes added to a node pool during scale-out operations. 태그를 추가 하면 정책 추적 또는 비용 예측과 같은 작업에 도움이 될 수 있습니다.Adding a tag can help with tasks such as policy tracking or cost estimation.

Azure 태그에는 키를 검색 하 여 태그를 검색 하는 경우와 같이 작업에 대 한 대/소문자를 구분 하지 않는 키가 있습니다.Azure tags have keys which are case-insensitive for operations, such as when retrieving a tag by searching the key. 이 경우에는 대/소문자에 관계 없이 지정 된 키를 가진 태그가 업데이트 되거나 검색 됩니다.In this case a tag with the given key will be updated or retrieved regardless of casing. 태그 값은 대/소문자를 구분 합니다.Tag values are case-sensitive.

AKS에서 여러 태그가 동일한 키로 설정 되 고 대/소문자가 다른 경우 사용 된 태그는 사전순으로 첫 번째 순서로 사용 됩니다.In AKS, if multiple tags are set with identical keys but different casing, the tag used is the first in alphabetical order. 예를 들어, {"Key1": "val1", "kEy1": "val2", "key1": "val3"} Key1 및가 val1 설정 됩니다.For example, {"Key1": "val1", "kEy1": "val2", "key1": "val3"} results in Key1 and val1 being set.

Az aks nodepool add를 사용 하 여 노드 풀을 만듭니다.Create a node pool using the az aks nodepool add. Tagnodepool 이름을 지정 --tag 하 고 매개 변수를 사용 하 여 부서 = ITcostcenter = 9999 를 태그에 지정 합니다.Specify the name tagnodepool and use the --tag parameter to specify dept=IT and costcenter=9999 for tags.

az aks nodepool add \
    --resource-group myResourceGroup \
    --cluster-name myAKSCluster \
    --name tagnodepool \
    --node-count 1 \
    --tags dept=IT costcenter=9999 \
    --no-wait

참고

또한 --tags az aks nodepool update 명령을 사용 하는 경우와 클러스터를 만드는 동안 매개 변수를 사용할 수 있습니다.You can also use the --tags parameter when using az aks nodepool update command as well as during cluster creation. 클러스터를 만드는 동안 --tags 매개 변수는 클러스터를 사용 하 여 만든 초기 노드 풀에 태그를 적용 합니다.During cluster creation, the --tags parameter applies the tag to the initial node pool created with the cluster. 모든 태그 이름은 Azure 리소스를 구성 하는 데 사용 하는 태그의 제한 사항을 준수 해야 합니다.All tag names must adhere to the limitations in Use tags to organize your Azure resources. 매개 변수를 사용 하 여 노드 풀을 업데이트 하면 --tags 기존 태그 값이 업데이트 되 고 새 태그가 추가 됩니다.Updating a node pool with the --tags parameter updates any existing tag values and appends any new tags. 예를 들어 노드 풀에 태그에 대 한 dept = ITcostcenter = 9999 가 있고 태그에 대해 team = devcostcenter = 111 로 업데이트 한 경우 nodepool에는 dept = it, costcenter = 111team = dev for tags가 있습니다.For example, if your node pool had dept=IT and costcenter=9999 for tags and you updated it with team=dev and costcenter=111 for tags, you nodepool would have dept=IT, costcenter=111, and team=dev for tags.

Az aks nodepool list 명령의 다음 예제 출력에서는 tagnodepool 가 지정 된 태그 를 사용 하 여 노드를 생성 하 고 있음을 보여 줍니다.The following example output from the az aks nodepool list command shows that tagnodepool is Creating nodes with the specified tag:

az aks nodepool list -g myResourceGroup --cluster-name myAKSCluster
[
  {
    ...
    "count": 1,
    ...
    "name": "tagnodepool",
    "orchestratorVersion": "1.15.7",
    ...
    "provisioningState": "Creating",
    ...
    "tags": {
      "dept": "IT",
      "costcenter": "9999"
    },
    ...
  },
 ...
]

리소스 관리자 템플릿을 사용 하 여 노드 풀 관리Manage node pools using a Resource Manager template

Azure Resource Manager 템플릿을 사용 하 여 리소스를 만들고 관리 하는 경우 일반적으로 템플릿에서 설정을 업데이트 하 고 다시 배포 하 여 리소스를 업데이트할 수 있습니다.When you use an Azure Resource Manager template to create and managed resources, you can typically update the settings in your template and redeploy to update the resource. AKS의 노드 풀을 사용 하면 AKS 클러스터가 생성 된 후 초기 노드 풀 프로필을 업데이트할 수 없습니다.With node pools in AKS, the initial node pool profile can't be updated once the AKS cluster has been created. 이 동작은 기존 리소스 관리자 템플릿을 업데이트 하 고, 노드 풀을 변경 하 고, 다시 배포할 수 없음을 의미 합니다.This behavior means that you can't update an existing Resource Manager template, make a change to the node pools, and redeploy. 대신, 기존 AKS 클러스터에 대 한 노드 풀만 업데이트 하는 별도의 리소스 관리자 템플릿을 만들어야 합니다.Instead, you must create a separate Resource Manager template that updates only the node pools for an existing AKS cluster.

와 같은 템플릿을 만들고 aks-agentpools.json 다음 예제 매니페스트를 붙여 넣습니다.Create a template such as aks-agentpools.json and paste the following example manifest. 이 예제 템플릿은 다음 설정을 구성 합니다.This example template configures the following settings:

  • 3 개의 노드를 실행 하도록 myagentpool 이라는 Linux 노드 풀을 업데이트 합니다.Updates the Linux node pool named myagentpool to run three nodes.
  • Kubernetes version 1.15.7 를 실행 하도록 노드 풀의 노드를 설정 합니다.Sets the nodes in the node pool to run Kubernetes version 1.15.7.
  • 노드 크기를 Standard_DS2_v2 으로 정의 합니다.Defines the node size as Standard_DS2_v2.

필요에 따라 노드 풀을 업데이트, 추가 또는 삭제 해야 하는 경우 이러한 값을 편집 합니다.Edit these values as need to update, add, or delete node pools as needed:

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {
        "clusterName": {
            "type": "string",
            "metadata": {
                "description": "The name of your existing AKS cluster."
            }
        },
        "location": {
            "type": "string",
            "metadata": {
                "description": "The location of your existing AKS cluster."
            }
        },
        "agentPoolName": {
            "type": "string",
            "defaultValue": "myagentpool",
            "metadata": {
                "description": "The name of the agent pool to create or update."
            }
        },
        "vnetSubnetId": {
            "type": "string",
            "defaultValue": "",
            "metadata": {
                "description": "The Vnet subnet resource ID for your existing AKS cluster."
            }
        }
    },
    "variables": {
        "apiVersion": {
            "aks": "2020-01-01"
        },
        "agentPoolProfiles": {
            "maxPods": 30,
            "osDiskSizeGB": 0,
            "agentCount": 3,
            "agentVmSize": "Standard_DS2_v2",
            "osType": "Linux",
            "vnetSubnetId": "[parameters('vnetSubnetId')]"
        }
    },
    "resources": [
        {
            "apiVersion": "2020-01-01",
            "type": "Microsoft.ContainerService/managedClusters/agentPools",
            "name": "[concat(parameters('clusterName'),'/', parameters('agentPoolName'))]",
            "location": "[parameters('location')]",
            "properties": {
                "maxPods": "[variables('agentPoolProfiles').maxPods]",
                "osDiskSizeGB": "[variables('agentPoolProfiles').osDiskSizeGB]",
                "count": "[variables('agentPoolProfiles').agentCount]",
                "vmSize": "[variables('agentPoolProfiles').agentVmSize]",
                "osType": "[variables('agentPoolProfiles').osType]",
                "storageProfile": "ManagedDisks",
                "type": "VirtualMachineScaleSets",
                "vnetSubnetID": "[variables('agentPoolProfiles').vnetSubnetId]",
                "orchestratorVersion": "1.15.7"
            }
        }
    ]
}

다음 예제와 같이 az deployment group create 명령을 사용 하 여이 템플릿을 배포 합니다.Deploy this template using the az deployment group create command, as shown in the following example. 기존 AKS 클러스터 이름 및 위치를 묻는 메시지가 표시 됩니다.You are prompted for the existing AKS cluster name and location:

az deployment group create \
    --resource-group myResourceGroup \
    --template-file aks-agentpools.json

다음 예제와 같이 템플릿에 태그 속성을 추가 하 여 노드 풀에 태그를 추가할 수 있습니다.You can add a tag to your node pool by adding the tag property in the template, as shown in the following example.

...
"resources": [
{
  ...
  "properties": {
    ...
    "tags": {
      "name1": "val1"
    },
    ...
  }
}
...

리소스 관리자 템플릿에서 정의한 노드 풀 설정 및 작업에 따라 AKS 클러스터를 업데이트 하는 데 몇 분 정도 걸릴 수 있습니다.It may take a few minutes to update your AKS cluster depending on the node pool settings and operations you define in your Resource Manager template.

노드 풀에 대해 노드당 공용 IP 할당 (미리 보기)Assign a public IP per node for your node pools (preview)

경고

노드 당 공용 IP 기능을 사용 하려면 CLI preview 확장 0.4.43 이상을 설치 해야 합니다.You must install the CLI preview extension 0.4.43 or greater to use the public IP per node feature.

AKS 노드에는 통신에 고유한 공용 IP 주소가 필요 하지 않습니다.AKS nodes do not require their own public IP addresses for communication. 그러나 시나리오에서는 고유한 전용 공용 IP 주소를 수신 하기 위해 노드 풀의 노드가 필요할 수 있습니다.However, scenarios may require nodes in a node pool to receive their own dedicated public IP addresses. 일반적인 시나리오는 콘솔에서 클라우드 가상 컴퓨터에 직접 연결 하 여 홉을 최소화 해야 하는 게임 워크 로드에 대 한 것입니다.A common scenario is for gaming workloads, where a console needs to make a direct connection to a cloud virtual machine to minimize hops. 이 시나리오는 미리 보기 기능인 노드 공용 IP (미리 보기)를 등록 하 여 AKS에서 수행할 수 있습니다.This scenario can be achieved on AKS by registering for a preview feature, Node Public IP (preview).

최신 aks-preview 확장을 설치 하 고 업데이트 하려면 다음 Azure CLI 명령을 사용 합니다.To install and update the latest aks-preview extension, use the following Azure CLI commands:

az extension add --name aks-preview
az extension update --name aks-preview
az extension list

다음 Azure CLI 명령을 사용 하 여 노드 공용 IP 기능에 등록 합니다.Register for the Node Public IP feature with the following Azure CLI command:

az feature register --name NodePublicIPPreview --namespace Microsoft.ContainerService

기능을 등록 하는 데 몇 분 정도 걸릴 수 있습니다.It may take several minutes for the feature to register. 다음 명령을 사용 하 여 상태를 확인할 수 있습니다.You can check the status with the following command:

 az feature list -o table --query "[?contains(name, 'Microsoft.ContainerService/NodePublicIPPreview')].{Name:name,State:properties.state}"

등록이 완료 되 면 새 리소스 그룹을 만듭니다.After successful registration, create a new resource group.

az group create --name myResourceGroup2 --location eastus

새 AKS 클러스터를 만들고 노드에 대 한 공용 IP를 연결 합니다.Create a new AKS cluster and attach a public IP for your nodes. 노드 풀의 각 노드는 고유한 공용 IP를 수신 합니다.Each of the nodes in the node pool receives a unique public IP. 가상 머신 확장 집합 인스턴스를 살펴보면이를 확인할 수 있습니다.You can verify this by looking at the Virtual Machine Scale Set instances.

az aks create -g MyResourceGroup2 -n MyManagedCluster -l eastus  --enable-node-public-ip

기존 AKS 클러스터의 경우 새 노드 풀을 추가 하 고 노드에 대 한 공용 IP를 연결할 수도 있습니다.For existing AKS clusters, you can also add a new node pool, and attach a public IP for your nodes.

az aks nodepool add -g MyResourceGroup2 --cluster-name MyManagedCluster -n nodepool2 --enable-node-public-ip

중요

미리 보기 중에 Azure Instance Metadata Service는 현재 표준 계층 VM SKU에 대 한 공용 IP 주소 검색을 지원 하지 않습니다.During preview, the Azure Instance Metadata Service doesn't currently support retrieval of public IP addresses for the standard tier VM SKU. 이러한 제한으로 인해 kubectl 명령을 사용 하 여 노드에 할당 된 공용 Ip를 표시할 수 없습니다.Due to this limitation, you can't use kubectl commands to display the public IPs assigned to the nodes. 그러나 Ip가 할당 되 고 의도 한 대로 작동 합니다.However, the IPs are assigned and function as intended. 노드에 대 한 공용 Ip는 가상 머신 확장 집합의 인스턴스에 연결 됩니다.The public IPs for your nodes are attached to the instances in your Virtual Machine Scale Set.

다음과 같은 다양 한 방법으로 노드에 대 한 공용 Ip를 찾을 수 있습니다.You can locate the public IPs for your nodes in various ways:

중요

노드 리소스 그룹 에는 노드 및 해당 공용 ip가 포함 됩니다.The node resource group contains the nodes and their public IPs. 노드 리소스 그룹을 사용 하 여 노드에 대 한 공용 Ip를 찾을 수 있습니다.Use the node resource group when executing commands to find the public IPs for your nodes.

az vmss list-instance-public-ips -g MC_MyResourceGroup2_MyManagedCluster_eastus -n YourVirtualMachineScaleSetName

리소스 정리Clean up resources

이 문서에서는 GPU 기반 노드를 포함 하는 AKS 클러스터를 만들었습니다.In this article, you created an AKS cluster that includes GPU-based nodes. 불필요 한 비용을 줄이기 위해 gpunodepool 또는 전체 AKS 클러스터를 삭제할 수 있습니다.To reduce unnecessary cost, you may want to delete the gpunodepool, or the whole AKS cluster.

GPU 기반 노드 풀을 삭제 하려면 다음 예제와 같이 az aks nodepool delete 명령을 사용 합니다.To delete the GPU-based node pool, use the az aks nodepool delete command as shown in following example:

az aks nodepool delete -g myResourceGroup --cluster-name myAKSCluster --name gpunodepool

클러스터 자체를 삭제 하려면 az group delete 명령을 사용 하 여 AKS 리소스 그룹을 삭제 합니다.To delete the cluster itself, use the az group delete command to delete the AKS resource group:

az group delete --name myResourceGroup --yes --no-wait

노드 풀에 대 한 공용 IP 시나리오에 대해 만든 추가 클러스터를 삭제할 수도 있습니다.You can also delete the additional cluster you created for the public IP for node pools scenario.

az group delete --name myResourceGroup2 --yes --no-wait

다음 단계Next steps

시스템 노드 풀에 대해 자세히 알아보세요.Learn more about system node pools.

이 문서에서는 AKS 클러스터에서 여러 노드 풀을 만들고 관리 하는 방법을 배웠습니다.In this article, you learned how to create and manage multiple node pools in an AKS cluster. 노드 풀에서 pod을 제어 하는 방법에 대 한 자세한 내용은 AKS의 advanced scheduler 기능 모범 사례를 참조 하세요.For more information about how to control pods across node pools, see Best practices for advanced scheduler features in AKS.

Windows Server 컨테이너 노드 풀을 만들고 사용 하려면 AKS에서 Windows server 컨테이너 만들기를 참조 하세요.To create and use Windows Server container node pools, see Create a Windows Server container in AKS.

근접 배치 그룹 을 사용 하 여 AKS 응용 프로그램의 대기 시간을 줄입니다.Use proximity placement groups to reduce latency for your AKS applications.