다음을 통해 공유


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

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

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

필수 구성 요소

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

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

노드 레이블이 있는 AKS 클러스터를 만들어 워크로드 예약에 대한 키/값 메타데이터를 설정할 수 있습니다.

export RANDOM_SUFFIX=$(openssl rand -hex 3)
export RESOURCE_GROUP="myResourceGroup$RANDOM_SUFFIX"
export AKS_CLUSTER_NAME="myAKSCluster$RANDOM_SUFFIX"
az group create --name $RESOURCE_GROUP --___location $REGION

결과:

{
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx",
  "___location": "eastus2",
  "managedBy": null,
  "name": "myResourceGroupxxx",
  "properties": {
    "provisioningState": "Succeeded"
  },
  "tags": null,
  "type": "Microsoft.Resources/resourceGroups"
}

노드 레이블(예: dept=IT, costcenter=9000)을 지정하는 AKS 클러스터를 만듭니다.

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $AKS_CLUSTER_NAME \
    --node-count 2 \
    --nodepool-labels dept=IT costcenter=9000 \
    --generate-ssh-keys --___location $REGION

결과:

{
  "aadProfile": null,
  "addonProfiles": {},
  "agentPoolProfiles": [
    {
      "count": 2,
      "enableAutoScaling": null,
      "mode": "System",
      "name": "nodepool1",
      "nodeLabels": {
        "costcenter": "9000",
        "dept": "IT"
      }
    }
  ],
  "dnsPrefix": "myaksclusterxxx-dns",
  "fqdn": "myaksclusterxxx-xxxxxxxx.hcp.eastus2.azmk8s.io",
  "id": "/subscriptions/xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx/resourceGroups/myResourceGroupxxx/providers/Microsoft.ContainerService/managedClusters/myAKSClusterxxx",
  "___location": "eastus2",
  "name": "myAKSClusterxxx",
  "resourceGroup": "myResourceGroupxxx"
}

레이블이 설정되었는지 확인합니다.

az aks get-credentials --resource-group $RESOURCE_GROUP --name $AKS_CLUSTER_NAME --overwrite-existing
kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"

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

특정 일정 요구 사항에 대한 레이블이 있는 추가 노드 풀을 만들 수 있습니다.

export NODEPOOL_NAME="labelnp"
az aks nodepool add \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $AKS_CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --node-count 1 \
    --labels dept=HR costcenter=5000 \

다음은 labelnp 노드 풀이 지정된 nodeLabels를 사용하여 노드를 만드는 것을 보여 주는 명령의 출력 예제 az aks nodepool list 입니다.

az aks nodepool list --resource-group $RESOURCE_GROUP --cluster-name $AKS_CLUSTER_NAME

결과:

[
  {
    "count": 2,
    "name": "nodepool1",
    "nodeLabels": {
      "costcenter": "9000",
      "dept": "IT"
    }
  },
  {
    "count": 1,
    "name": "labelnp",
    "nodeLabels": {
      "costcenter": "5000",
      "dept": "HR"
    },
    "provisioningState": "Creating"
  }
]

레이블이 설정되었는지 확인합니다.

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

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

기존 노드 풀에서 레이블을 업데이트할 수 있습니다. 레이블을 업데이트하면 이전 레이블을 덮어씁니다.

az aks nodepool update \
    --resource-group $RESOURCE_GROUP \
    --cluster-name $AKS_CLUSTER_NAME \
    --name $NODEPOOL_NAME \
    --labels dept=ACCT costcenter=6000 \

새 레이블이 설정되어 있는지 확인합니다.

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/managedby 악스 악스 해당 없음
kubernetes.azure.com/mode <mode> 사용자 또는 시스템 사용자
kubernetes.azure.com/role 에이전트 에이전트 동일
kubernetes.azure.com/scalesetpriority <VMSS 우선 순위> 스폿 또는 일반 해당 없음
kubernetes.io/hostname <호스트 이름> aks-nodepool-00000000-vmss00000 동일
kubernetes.azure.com/storageprofile <OS 디스크 스토리지 프로필> 관리 해당 없음
kubernetes.azure.com/storagetier <OS 디스크 스토리지 계층> 프리미엄_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 서브넷 이름> 서브넷 이름 가상 노드 서브넷 이름
kubernetes.azure.com/vnet <nodepool vnet 이름> vnetName 가상 노드 가상 네트워크
kubernetes.azure.com/ppg <nodepool ppg name> ppgName 해당 없음
kubernetes.azure.com/encrypted-set <nodepool 암호화 세트 이름> 암호화된-세트-이름 해당 없음
kubernetes.azure.com/accelerator <가속기> nvidia 해당 없음
kubernetes.azure.com/fips_enabled <fips가 사용하도록 설정되어 있나요?> 맞다 해당 없음
kubernetes.azure.com/os-sku <os/sku> OS SKU 만들기 또는 업데이트 리눅스
  • 표준 노드 풀과 가상 노드 풀 간에 레이블의 예상 값이 다르지 않은 경우 Same이 포함됩니다. 가상 노드 Pod는 기본 VM(가상 머신)을 노출하지 않으므로 VM SKU 값은 SKU Virtual로 대체됩니다.
  • 가상 노드 버전가상 Kubelet-ACI 커넥터 릴리스의 현재 버전을 나타냅니다.
  • 가상 노드 서브넷 이름은 가상 노드 Pod가 ACI(Azure Container Instance)에 배포되는 서브넷의 이름입니다.
  • 가상 노드 가상 네트워크는 가상 노드 Pod가 ACI에 배포되는 서브넷을 포함하는 가상 네트워크의 이름입니다.

예약된 접두사

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

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

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

사용되지 않는 레이블

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

레이블 권장 대체품 유지 관리자
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
스토리지프로파일* kubernetes.azure.com/storageprofile Azure Kubernetes Service
Storagetier* kubernetes.azure.com/storagetier Azure Kubernetes Service
가속기* kubernetes.azure.com/accelerator Azure Kubernetes Service

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

다음 단계

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