Share via


AKS(Azure Kubernetes Service) 클러스터에서 레이블 사용

노드 풀이 여러 개인 경우 노드 풀 만들기 중에 레이블을 추가할 수 있습니다. Kubernetes 레이블은 노드에 대한 예약 규칙을 처리합니다. 언제든지 노드 풀에 레이블을 추가할 수 있으며 레이블은 노드 풀의 모든 노드에 설정됩니다.

이 방법 가이드에서는 AKS(Azure Kubernetes Service) 클러스터에서 레이블을 사용하는 방법을 알아봅니다.

필수 조건

Azure CLI 2.2.0 이상 버전을 설치하고 구성해야 합니다. az --version을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.

레이블이 있는 AKS 클러스터 만들기

  1. az aks create 명령을 사용하여 레이블이 있는 AKS 클러스터를 만들고 --node-labels 매개 변수를 지정하여 레이블을 설정합니다. 레이블은 키/값 쌍이어야 하며 유효한 구문을 포함해야 합니다.

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 2 \
        --nodepool-labels dept=IT costcenter=9000
    
  2. kubectl get nodes --show-labels 명령을 사용하여 레이블이 설정되었는지 확인합니다.

    kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"
    

레이블이 있는 노드 풀 만들기

  1. az aks nodepool add 명령을 사용하여 레이블이 있는 노드 풀을 만들고 --name 매개 변수의 이름과 --labels 매개 변수의 레이블을 지정합니다. 레이블은 키/값 쌍이어야 하며 유효한 구문을 포함해야 합니다.

    다음 예제 명령은 레이블이 dept=HRcostcenter=5000이고 이름이 labelnp인 노드 풀을 만듭니다.

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

    다음 예제의 az aks nodepool list 명령 출력은 labelnp 노드 풀에서 지정된 nodeLabels를 사용하여 노드를 만드는 중임을 보여 줍니다.

    [
      {
        ...
        "count": 1,
        ...
        "name": "labelnp",
        "orchestratorVersion": "1.15.7",
        ...
        "provisioningState": "Creating",
        ...
        "nodeLabels":  {
          "costcenter": "5000",
          "dept": "HR"
        },
        ...
      },
     ...
    ]
    
  2. kubectl get nodes --show-labels 명령을 사용하여 레이블이 설정되었는지 확인합니다.

    kubectl get nodes --show-labels | grep -e "costcenter=5000" -e "dept=HR"
    

기존 노드 풀의 레이블 업데이트

  1. az aks nodepool update 명령을 사용하여 기존 노드 풀의 레이블을 업데이트합니다. 기존 노드 풀의 레이블을 업데이트하면 이전 레이블을 새 레이블로 덮어씁니다. 레이블은 키/값 쌍이어야 하며 유효한 구문을 포함해야 합니다.

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name labelnp \
        --labels dept=ACCT costcenter=6000 \
        --no-wait
    
  2. kubectl get nodes --show-labels 명령을 사용하여 레이블이 설정되었는지 확인합니다.

    kubectl get nodes --show-labels | grep -e "costcenter=6000" -e "dept=ACCT"
    

사용할 수 없는 레이블

예약된 시스템 레이블

2021-08-19 AKS 릴리스 이후로 AKS는 AKS 예약 레이블을 변경하는 기능을 중지했습니다. 이러한 레이블을 변경하려고 하면 오류 메시지가 표시됩니다.

다음 레이블은 AKS 예약 레이블입니다. 가상 노드 사용량은 이러한 레이블이 가상 노드에서 지원되는 시스템 기능인지 여부를 지정합니다. 이러한 시스템 기능이 변경되는 일부 속성은 호스트를 수정해야 하기 때문에 가상 노드에서 사용할 수 없습니다.

레이블 예/옵션 가상 노드 사용량
kubernetes.azure.com/agentpool <에이전트 풀 이름> nodepool1 동일
kubernetes.io/arch amd64 runtime.GOARCH 해당 없음
kubernetes.io/os <OS 종류> Linux/Windows 동일
node.kubernetes.io/instance-type <VM 크기> Standard_NC6s_v3 가상
topology.kubernetes.io/region <Azure 지역> westus2 동일
topology.kubernetes.io/zone <Azure Zone> 0 동일
kubernetes.azure.com/cluster <MC_RgName> MC_aks_myAKSCluster_westus2 동일
kubernetes.azure.com/mode <mode> 사용자 또는 시스템 사용자
kubernetes.azure.com/role agent 에이전트 동일
kubernetes.azure.com/scalesetpriority <VMSS 우선 순위> 스폿 또는 일반 해당 없음
kubernetes.io/hostname <hostname> aks-nodepool-00000000-vmss000000 동일
kubernetes.azure.com/storageprofile <OS 디스크 스토리지 프로필> 관리형 해당 없음
kubernetes.azure.com/storagetier <OS 디스크 스토리지 계층> Premium_LRS 해당 없음
kubernetes.azure.com/instance-sku <SKU 제품군> Standard_N 가상
kubernetes.azure.com/node-image-version <VHD 버전> AKSUbuntu-1804-2020.03.05 가상 노드 버전
kubernetes.azure.com/subnet <nodepool subnet name> subnetName 가상 노드 서브넷 이름
kubernetes.azure.com/vnet <nodepool vnet name> vnetName 가상 노드 가상 네트워크
kubernetes.azure.com/ppg <nodepool ppg name> ppgName 해당 없음
kubernetes.azure.com/encrypted-set <nodepool encrypted-set name> encrypted-set-name 해당 없음
kubernetes.azure.com/accelerator <accelerator> nvidia 해당 없음
kubernetes.azure.com/fips_enabled <fips가 사용하도록 설정되어 있나요?> true 해당 없음
kubernetes.azure.com/os-sku <os/sku> OS SKU 만들기 또는 업데이트 Linux
  • 표준 노드 풀과 가상 노드 풀 간에 레이블의 예상 값이 다르지 않은 경우 Same이 포함됩니다. 가상 노드 Pod는 기본 VM(가상 머신)을 노출하지 않으므로 VM SKU 값은 SKU Virtual로 대체됩니다.
  • 가상 노드 버전가상 Kubelet-ACI 커넥터 릴리스의 현재 버전을 나타냅니다.
  • 가상 노드 서브넷 이름은 가상 노드 Pod가 ACI(Azure Container Instance)에 배포되는 서브넷의 이름입니다.
  • 가상 노드 가상 네트워크는 가상 노드 Pod가 ACI에 배포되는 서브넷을 포함하는 가상 네트워크의 이름입니다.

예약된 접두사

다음 접두사는 AKS 예약 접두사이므로 노드에 사용할 수 없습니다.

  • kubernetes.azure.com/
  • kubernetes.io/

예약된 접두사에 대한 자세한 내용은 Kubernetes의 잘 알려진 레이블, 주석 및 taint를 참조하세요.

사용되지 않는 레이블

다음 레이블은 Kubernetes v1.24 릴리스와 함께 사용 중단될 예정입니다. 권장 대체품에 대한 모든 레이블 참조를 변경해야 합니다.

Label 권장 대체품 유지 관리자
failure-domain.beta.kubernetes.io/region topology.kubernetes.io/region Kubernetes
failure-domain.beta.kubernetes.io/zone topology.kubernetes.io/zone Kubernetes
beta.kubernetes.io/arch kubernetes.io/arch Kubernetes
beta.kubernetes.io/instance-type node.kubernetes.io/instance-type Kubernetes
beta.kubernetes.io/os kubernetes.io/os Kubernetes
node-role.kubernetes.io/agent* kubernetes.azure.com/role=agent Azure Kubernetes Service
kubernetes.io/role* kubernetes.azure.com/role=agent Azure Kubernetes Service
에이전트 풀* kubernetes.azure.com/agentpool Azure Kubernetes Service
Storageprofile* kubernetes.azure.com/storageprofile Azure Kubernetes Service
Storagetier* kubernetes.azure.com/storagetier Azure Kubernetes Service
Accelerator* kubernetes.azure.com/accelerator Azure Kubernetes Service

*새로 사용되지 않습니다. 자세한 내용은 릴리스 정보를 참조하세요.

다음 단계

Kubernetes 레이블 설명서에서 Kubernetes 레이블에 대해 자세히 알아봅니다.