Gestire i pool di nodi per un cluster (servizio Azure Kubernetes in Azure Stack HCI 23H2)
Si applica a: Azure Stack HCI, versione 23H2
Nota
Per informazioni sulla gestione dei pool di nodi nel servizio Azure Kubernetes in Azure Stack HCI 22H2, vedere Gestire i pool di nodi.
Nel servizio Azure Kubernetes abilitato da Azure Arc, i nodi della stessa configurazione vengono raggruppati in pool di nodi. Questi pool di nodi contengono le macchine virtuali sottostanti che eseguono le applicazioni. Questo articolo illustra come creare e gestire i pool di nodi per un cluster in AKS Arc.
Creare un cluster Kubernetes
Per iniziare, creare un cluster Kubernetes con un singolo pool di nodi:
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>
Aggiungere un pool di nodi
È possibile aggiungere un pool di nodi a un cluster esistente usando il az aksarc nodepool add
comando . Assicurarsi che il nome del pool di nodi non sia lo stesso nome di un pool di nodi esistente:
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>
Ottenere informazioni di configurazione per un pool di nodi
Per visualizzare la configurazione dei pool di nodi, usare il az aksarc nodepool show
comando:
az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>
Output di esempio:
{
"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"
}
Specificare i pod massimi distribuiti in un pool di nodi
È possibile configurare i pod massimi distribuiti in un nodo in fase di creazione del cluster o quando si creano nuovi pool di nodi. Se non si specifica maxPods
quando si creano pool di nodi, il pool di nodi viene distribuito con un valore predefinito di un massimo di 110 pod:
az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes
Ridimensionare un pool di nodi
È possibile ridimensionare il numero di nodi verso l'alto o verso il basso in un pool di nodi.
Per ridimensionare il numero di nodi in un pool di nodi, usare il az aksarc nodepool scale
comando . Nell'esempio seguente viene ridimensionato il numero di nodi a 2 in un pool di nodi denominato nodepool1
:
az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes
Eliminare un pool di nodi
Se è necessario eliminare un pool di nodi, usare il az aksarc nodepool delete
comando:
az aksarc nodepool delete --cluster-name <cluster name> -n <node pool name> -g <resource group> --yes
Specificare un taint o un'etichetta per un pool di nodi
Quando si crea un pool di nodi, è possibile aggiungere taints o etichette a tale pool. Quando si aggiunge un taint o un'etichetta, tutti i nodi all'interno del pool di nodi ottengono anche tale taint o etichetta.
Importante
È necessario aggiungere taints o etichette ai nodi per l'intero pool di nodi usando az aksarc nodepool
. Non è consigliabile usare kubectl
per applicare taints o etichette ai singoli nodi in un pool di nodi.
Impostare le taints del pool di nodi
Creare un pool di nodi con un taint usando il
az aksarc nodepool add
comando . Specificare il nometaintnp
e usare il--node-taints
parametro per specificaresku=gpu:NoSchedule
per il taint:az aksarc nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name taintnp \ --node-count 1 \ --node-taints sku=gpu:NoSchedule \ --no-wait
Controllare lo stato del pool di nodi usando il
az aksarc nodepool list
comando:az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
L'output di esempio seguente mostra che il
taintnp
pool di nodi crea nodi con l'oggetto specificatonodeTaints
:[ { ... "count": 1, ... "name": "taintnp", ... "provisioningState": "Succeeded", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
Le informazioni di taint sono visibili in Kubernetes per gestire le regole di pianificazione per i nodi. L'utilità di pianificazione Kubernetes può usare taints e tolerations per limitare i carichi di lavoro che possono essere eseguiti nei nodi.
- Un taint viene applicato a un nodo per indicare che possono essere pianificati solo pod specifici.
- Una tolerazione viene quindi applicata a un pod che consente loro di "tollerare" il taint di un nodo.
Impostare le tolerazioni del pool di nodi
Nel passaggio precedente è stato applicato il sku=gpu:NoSchedule
taint quando è stato creato il pool di nodi. Nell'esempio seguente il manifesto YAML usa una tolerazione per consentire all'utilità di pianificazione Kubernetes di eseguire un pod NGINX in un nodo nel pool di nodi:
Creare un file denominato nginx-toleration.yaml e copiare/incollare l'esempio YAML seguente:
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"
Pianificare il pod usando il
kubectl apply
comando:kubectl apply -f nginx-toleration.yaml
Richiede alcuni secondi per pianificare il pod e eseguire il pull dell'immagine NGINX.
Controllare lo stato usando il
kubectl describe pod
comando:kubectl describe pod mypod
L'output dell'esempio condensato seguente mostra che viene applicata la
sku=gpu:NoSchedule
tolerazione. Nella sezione Eventi , l'utilità di pianificazione ha assegnato il pod almoc-lbeof1gn6x3
nodo:[...] 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
Solo i pod con questa tolerazione applicata possono essere pianificati nei nodi in
taintnp
. Tutti gli altri pod vengono pianificati nel pool di nodi nodepool1 . Se si creano più pool di nodi, è possibile usare taints e tolerations per limitare le pianificazioni dei pod in tali risorse del nodo.
Impostazione delle etichette del pool di nodi
Per altre informazioni, vedere Usare le etichette in un cluster del servizio Azure Arc abilitato per il servizio Azure Kubernetes. ::: zone-end
Passaggi successivi
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per