クラスターのノード プールを管理する (AKS on Azure Stack HCI 23H2)
適用対象: Azure Stack HCI バージョン 23H2
注意
AKS on Azure Stack HCI 22H2 でのノード プールの管理については、「 ノード プールの管理」を参照してください。
Azure Arc によって有効になっている AKS では、同じ構成のノードが ノード プールにグループ化されます。 これらのノード プールには、お使いのアプリケーションを実行する基になる VM が含まれています。 この記事では、AKS Arc でクラスターのノード プールを作成および管理する方法について説明します。
Kubernetes クラスターを作成する
開始するには、単一ノード プールを使用して Kubernetes クラスターを作成します。
az aksarc create -n <cluster name> -g <resource group> --custom-location <custom location Id> --vnet-ids <vnet id> --generate-ssh-keys --load-balancer-count <load balancer count>
ノード プールの追加
コマンドを使用して、既存のクラスターにノード プールを az aksarc nodepool add
追加できます。 ノード プールの名前が既存のノード プールと同じ名前ではないことを確認します。
az aksarc nodepool add --name <node pool name> -g <resource group> --cluster-name <cluster name> --os-sku <Linux or Windows> --node-count <count> --node-vm-size <vm size>
ノード プールの構成情報を取得する
ノード プールの構成を確認するには、次のコマンドを az aksarc nodepool show
使用します。
az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>
出力例:
{
"availabilityZones": null,
"count": 1,
"extendedLocation": null,
"id":
"/subscriptions/<subscription>/resourceGroups/edgeci-registration-rr1s46r1710<resource
group>/providers/Microsoft.Kubernetes/connectedClusters/<cluster
name>/providers/Microsoft.HybridContainerService/provisionedClusterInstances/default/agentPools/<nodepoolname>",
"location": "westeurope",
"name": "nodepoolname",
"nodeImageVersion": null,
"osSku": "CBLMariner",
"osType": "Linux",
"provisioningState": "Succeeded",
"resourceGroup": "resourcegroup",
"status": {
"errorMessage": null,
"operationStatus": null,
"readyReplicas": [
{
"count": 1,
"vmSize": "Standard\_A4\_v2"
}
]
},
"systemData": {
…
},
"tags": null,
"type":
"microsoft.hybridcontainerservice/provisionedclusterinstances/agentpools",
"vmSize": "Standard\_A4\_v2"
}
ノード プールにデプロイされるポッドの最大数を指定する
クラスター作成時または新しいノード プールの作成時に、ノードにデプロイ可能な最大ポッドを構成できます。 ノード プールの作成時にを指定 maxPods
しない場合、ノード プールは最大 110 ポッドの既定値でデプロイされます。
az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes
ノード プールのスケーリング
ノード プールのノード数をスケールアップまたはスケールダウンできます。
ノード プール内のノード数をスケーリングするには、az aksarc nodepool scale
コマンドを使用します。 次の例では、 という名前 nodepool1
のノード プール内のノード数を 2 にスケーリングします。
az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes
ノード プールの削除
ノード プールを削除する必要がある場合は、次のコマンドを az aksarc nodepool delete
使用します。
az aksarc nodepool delete --cluster-name <cluster name> -n <node pool name> -g <resource group> --yes
ノード プールのテイントまたはラベルを指定する
ノード プールを作成するときに、テイントまたはラベルを追加できます。 テイントまたはラベルを追加すると、そのノード プール内のすべてのノードも、そのテイント (ラベル) を取得します。
重要
を使用して、ノード プール全体のノードにテイントまたはラベルを az aksarc nodepool
追加する必要があります。 を使用して kubectl
、テイントまたはラベルをノード プール内の個々のノードに適用することはお勧めしません。
ノード プールのテイントの設定
az aksarc nodepool add
コマンドを使用して、テイントを含むノード プールを 作成します。 名前taintnp
を指定し、 パラメーターを--node-taints
使用してテイントにを指定sku=gpu:NoSchedule
します。az aksarc nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name taintnp \ --node-count 1 \ --node-taints sku=gpu:NoSchedule \ --no-wait
コマンドを使用して、ノード プールの状態を
az aksarc nodepool list
確認します。az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
次の出力例は、ノード プールが
taintnp
指定したnodeTaints
を使用してノードを作成することを示しています。[ { ... "count": 1, ... "name": "taintnp", ... "provisioningState": "Succeeded", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
テイントの情報は、ノードのスケジューリング規則を処理するために Kubernetes に表示されます。 Kubernetes スケジューラでは、テイントと容認を使用して、ノードで実行できるワークロードを制限できます。
- テイントは、ノードに適用されて、特定のポッドのみをそのノードでスケジュールできることを示します。
- その後、 ノード のテイントを "容認" できるようにするポッドに容認が適用されます。
ノード プールの許容範囲を設定する
前の手順では、ノード プールの作成時に sku=gpu:NoSchedule
テイントを適用しました。 次の YAML マニフェストの例では、容認を使用して、Kubernetes スケジューラがそのノード プール内のノードで NGINX ポッドを実行できるようにします。
nginx-toleration.yaml という名前のファイルを作成し、次の例の 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"
kubectl apply
コマンドを使用してポッドをスケジュールします。kubectl apply -f nginx-toleration.yaml
ポッドのスケジュールおよび NGINX イメージのプルには、数秒かかります。
コマンドを使用して状態を
kubectl describe pod
確認します。kubectl describe pod mypod
次の要約された出力例は、容認が
sku=gpu:NoSchedule
適用されることを示しています。 [ イベント ] セクションで、スケジューラによってポッドがノードにmoc-lbeof1gn6x3
割り当てられます。[...] Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s node.kubernetes.io/unreachable:NoExecute op=Exists for 300s sku=gpu:NoSchedule Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal Scheduled 54s default-scheduler Successfully assigned default/mypod to moc-lbeof1gn6x3 Normal Pulling 53s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" Normal Pulled 48s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 3.025148695s (3.025157609s including waiting) Normal Created 48s kubelet Created container Normal Started 48s kubelet Started container
この許容が適用されているポッドのみが、 のノードで
taintnp
スケジュールできます。 その他のポッドは、nodepool1 ノード プールにスケジュールされます。 追加のノード プールを作成した場合、テイントと容認を使用して、それらのノード リソースにどのようなポッドをスケジュールするか制限できます。
ノード プールのラベルの設定
詳細については、「 Azure Arc 対応 AKS クラスターでラベルを使用する」を参照してください。 ::: zone-end
次の手順
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示