AKS(Azure Kubernetes Service) 클러스터에서 레이블 사용
노드 풀이 여러 개인 경우 노드 풀 만들기 중에 레이블을 추가할 수 있습니다. Kubernetes 레이블은 노드에 대한 예약 규칙을 처리합니다. 언제든지 노드 풀에 레이블을 추가할 수 있으며 레이블은 노드 풀의 모든 노드에 설정됩니다.
이 방법 가이드에서는 AKS(Azure Kubernetes Service) 클러스터에서 레이블을 사용하는 방법을 알아봅니다.
필수 조건
Azure CLI 2.2.0 이상 버전을 설치하고 구성해야 합니다. az --version
을 실행하여 버전을 찾습니다. 설치 또는 업그레이드해야 하는 경우 Azure CLI 설치를 참조하세요.
레이블이 있는 AKS 클러스터 만들기
az aks create
명령을 사용하여 레이블이 있는 AKS 클러스터를 만들고--node-labels
매개 변수를 지정하여 레이블을 설정합니다. 레이블은 키/값 쌍이어야 하며 유효한 구문을 포함해야 합니다.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --nodepool-labels dept=IT costcenter=9000 \ --generate-ssh-keys
kubectl get nodes --show-labels
명령을 사용하여 레이블이 설정되었는지 확인합니다.kubectl get nodes --show-labels | grep -e "costcenter=9000" -e "dept=IT"
레이블이 있는 노드 풀 만들기
az aks nodepool add
명령을 사용하여 레이블이 있는 노드 풀을 만들고--name
매개 변수의 이름과--labels
매개 변수의 레이블을 지정합니다. 레이블은 키/값 쌍이어야 하며 유효한 구문을 포함해야 합니다.다음 예제 명령은 레이블이 dept=HR 및 costcenter=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" }, ... }, ... ]
kubectl get nodes --show-labels
명령을 사용하여 레이블이 설정되었는지 확인합니다.kubectl get nodes --show-labels | grep -e "costcenter=5000" -e "dept=HR"
기존 노드 풀의 레이블 업데이트
az aks nodepool update
명령을 사용하여 기존 노드 풀의 레이블을 업데이트합니다. 기존 노드 풀의 레이블을 업데이트하면 이전 레이블을 새 레이블로 덮어씁니다. 레이블은 키/값 쌍이어야 하며 유효한 구문을 포함해야 합니다.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name labelnp \ --labels dept=ACCT costcenter=6000 \ --no-wait
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/managedby | aks | aks | 해당 없음 |
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 레이블에 대해 자세히 알아봅니다.
Azure Kubernetes Service