Gerir conjuntos de nós para um cluster (AKS no Azure Stack HCI 23H2)
Aplica-se a: Azure Stack HCI, versão 23H2
Nota
Para obter informações sobre a gestão de conjuntos de nós no AKS no Azure Stack HCI 22H2, veja Gerir conjuntos de nós.
No AKS ativado pelo Azure Arc, os nós da mesma configuração são agrupados em conjuntos de nós. Estes conjuntos de nós contêm as VMs subjacentes que executam as suas aplicações. Este artigo mostra-lhe como criar e gerir conjuntos de nós para um cluster no AKS Arc.
Criar um cluster do Kubernetes
Para começar, crie um cluster do Kubernetes com um único conjunto de nós:
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>
Adicionar um conjunto de nós
Pode adicionar um conjunto de nós a um cluster existente com o az aksarc nodepool add
comando . Certifique-se de que o nome do conjunto de nós não é o mesmo nome que um conjunto de nós existente:
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>
Obter informações de configuração para um conjunto de nós
Para ver a configuração dos conjuntos de nós, utilize o az aksarc nodepool show
comando:
az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>
Exemplo de saída:
{
"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"
}
Especificar pods máximos implementados num conjunto de nós
Pode configurar os pods máximos implementáveis num nó na hora de criação do cluster ou ao criar novos conjuntos de nós. Se não especificar maxPods
quando cria conjuntos de nós, o conjunto de nós é implementado com um valor predefinido de um máximo de 110 pods:
az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes
Dimensionar um conjunto de nós
Pode aumentar ou reduzir verticalmente o número de nós num conjunto de nós.
Para dimensionar o número de nós num conjunto de nós, utilize o az aksarc nodepool scale
comando . O exemplo seguinte dimensiona o número de nós para 2 num conjunto de nós com o nome nodepool1
:
az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes
Eliminar um conjunto de nós
Se precisar de eliminar um conjunto de nós, utilize o az aksarc nodepool delete
comando:
az aksarc nodepool delete --cluster-name <cluster name> -n <node pool name> -g <resource group> --yes
Especificar um taint ou etiqueta para um conjunto de nós
Quando cria um conjunto de nós, pode adicionar taints ou etiquetas ao mesmo. Quando adiciona um taint ou etiqueta, todos os nós nesse conjunto de nós também obtêm essa taint ou etiqueta.
Importante
Deve adicionar taints ou etiquetas aos nós para todo o conjunto de nós com az aksarc nodepool
. Não recomendamos a utilização kubectl
para aplicar taints ou etiquetas a nós individuais num conjunto de nós.
Definir taints do conjunto de nós
Crie um conjunto de nós com um taint com o
az aksarc nodepool add
comando . Especifique o nometaintnp
e utilize o--node-taints
parâmetro para especificarsku=gpu:NoSchedule
para o taint:az aksarc nodepool add \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name taintnp \ --node-count 1 \ --node-taints sku=gpu:NoSchedule \ --no-wait
Verifique o estado do conjunto de nós com o
az aksarc nodepool list
comando:az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
O resultado de exemplo seguinte mostra que o
taintnp
conjunto de nós cria nós com o especificadonodeTaints
:[ { ... "count": 1, ... "name": "taintnp", ... "provisioningState": "Succeeded", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
As informações de taint são visíveis no Kubernetes para processar regras de agendamento para nós. O agendador do Kubernetes pode utilizar taints e tolerâncias para restringir as cargas de trabalho que podem ser executadas em nós.
- É aplicado um taint a um nó que indica que apenas pods específicos podem ser agendados nos mesmos.
- Uma tolerância é então aplicada a um pod que lhes permite "tolerar" o taint de um nó.
Definir tolerâncias do conjunto de nós
No passo anterior, aplicou o sku=gpu:NoSchedule
taint quando criou o conjunto de nós. O seguinte exemplo de manifesto YAML utiliza uma tolerância para permitir que o agendador do Kubernetes execute um pod NGINX num nó nesse conjunto de nós:
Crie um ficheiro com o nome nginx-toleration.yaml e copie/cole o seguinte exemplo 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"
Agende o pod com o
kubectl apply
comando:kubectl apply -f nginx-toleration.yaml
Demora alguns segundos a agendar o pod e a solicitar a imagem NGINX.
Verifique o estado com o
kubectl describe pod
comando:kubectl describe pod mypod
O seguinte resultado de exemplo condensado mostra que a
sku=gpu:NoSchedule
tolerância é aplicada. Na secção Eventos , o agendador atribuiu o pod aomoc-lbeof1gn6x3
nó:[...] 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
Apenas os pods que tenham esta tolerância aplicada podem ser agendados em nós no
taintnp
. Todos os outros pods são agendados no conjunto de nós nodepool1 . Se criar mais conjuntos de nós, pode utilizar taints e tolerâncias para limitar os pods que podem ser agendados nesses recursos de nó.
Definir etiquetas do conjunto de nós
Para obter mais informações, veja Utilizar etiquetas num cluster do AKS preparado para o Azure Arc. ::: zone-end
Passos seguintes
Comentários
https://aka.ms/ContentUserFeedback.
Brevemente: Ao longo de 2024, vamos descontinuar progressivamente o GitHub Issues como mecanismo de feedback para conteúdos e substituí-lo por um novo sistema de feedback. Para obter mais informações, veja:Submeter e ver comentários