Azure Kubernetes Service (AKS) クラスターでラベルを使用する
複数のノード プールがある場合、ノード プールの作成時にラベルを追加することができます。 Kubernetes ラベルによって、ノードのスケジュール ルールが処理されます。 いつでもノード プールにラベルを追加し、ノード プールのすべてのノードにそれらを適用できます。
この攻略ガイドでは、Azure Kubernetes Service (AKS) クラスターでラベルを使用する方法について説明します。
前提条件
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 予約ラベルです。 "仮想ノードの使用" では、これらのラベルが仮想ノードでサポートされるシステム機能かどうかが示されています。 これらのシステム機能で変更される一部のプロパティは、ホストを変更する必要があるため、仮想ノードでは使用できません。
Label | 値 | 例/オプション | 仮想ノードの使用 |
---|---|---|---|
kubernetes.azure.com/agentpool | <エージェント プール名> | nodepool1 | 同じ |
kubernetes.io/arch | amd64 | runtime.GOARCH | 該当なし |
kubernetes.io/os | <[OS Type](OS の種類)> | Linux/Windows | 同じ |
node.kubernetes.io/instance-type | <VM サイズ> | Standard_NC6s_v3 | 仮想 |
topology.kubernetes.io/region | <[Azure region](Azure リージョン)> | westus2 | 同じ |
topology.kubernetes.io/zone | <Azure ゾーン> | 0 | 同じ |
kubernetes.azure.com/cluster | <MC_RgName> | MC_aks_myAKSCluster_westus2 | 同じ |
kubernetes.azure.com/mode | <mode> | User または system | User |
kubernetes.azure.com/role | エージェント | エージェント | 同じ |
kubernetes.azure.com/scalesetpriority | <VMSS 優先度> | Spot または regular | 該当なし |
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 | <ノードプール サブネット名> | subnetName | 仮想ノードのサブネット名 |
kubernetes.azure.com/vnet | <ノードプールの VNet 名> | vnetName | 仮想ノード仮想ネットワーク |
kubernetes.azure.com/ppg | <ノードプールの PPG 名> | ppgName | 該当なし |
kubernetes.azure.com/encrypted-set | <ノードプールの encrypted-set 名> | encrypted-set-name | 該当なし |
kubernetes.azure.com/accelerator | <アクセラレータ> | nvidia | 該当なし |
kubernetes.azure.com/fips_enabled | <FIPS が有効かどうか> | true | 該当なし |
kubernetes.azure.com/os-sku | <os/sku> | OS SKU の作成または更新 | Linux |
- "同じ" は、ラベルの予想される値が標準ノード プールと仮想ノード プールで異ならないことを示しています。 仮想ノード ポッドでは基になる仮想マシン (VM) は公開されず、VM SKU の値は SKU Virtual に置き換えられます。
- "仮想ノードのバージョン" とは、仮想 Kubelet-ACI コネクタ リリースの現在のバージョンを指します。
- "仮想ノードのサブネット名" は、仮想ノード ポッドが Azure Container Instances (ACI) にデプロイされるサブネットの名前です。
- "仮想ノード仮想ネットワーク" は、仮想ノード ポッドが ACI にデプロイされるサブネットを含む仮想ネットワークの名前です。
予約済みプレフィックス
次のプレフィックスは、AKS 予約済みのプレフィックスであり、どのノードにも使用できません。
- kubernetes.azure.com/
- kubernetes.io/
その他の予約済みプレフィックスの詳細については、Kubernetes の既知のラベル、注釈、テイントに関するページを参照してください。
非推奨のラベル
次のラベルは、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 |
Agentpool* | 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