Gerenciar pools de nós para um cluster (AKS no Azure Stack HCI 23H2)
Aplica-se a: Azure Stack HCI, versão 23H2
Observação
Para obter informações sobre como gerenciar pools de nós no AKS no Azure Stack HCI 22H2, consulte Gerenciar pools de nós.
No AKS habilitado pelo Azure Arc, os nós da mesma configuração são agrupados em pools de nós. Esses pools de nós contêm as VMs subjacentes que executam seus aplicativos. Este artigo mostra como criar e gerenciar pools 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 pool 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 pool de nós
Você pode adicionar um pool de nós a um cluster existente usando o az aksarc nodepool add
comando . Verifique se o nome do pool de nós não é o mesmo nome que um pool 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 pool de nós
Para ver a configuração dos pools de nós, use o az aksarc nodepool show
comando :
az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>
Saída de exemplo:
{
"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 o máximo de pods implantados em um pool de nós
Você pode configurar o máximo de pods implantáveis em um nó no momento da criação do cluster ou ao criar novos pools de nós. Se você não especificar maxPods
ao criar pools de nós, o pool de nós será implantado com um valor padrão de no máximo 110 pods:
az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes
Dimensionar um pool de nós
Você pode escalar ou reduzir verticalmente o número de nós em um pool de nós.
Para dimensionar o número de nós em um pool de nós, use o comando az aksarc nodepool scale
. O exemplo a seguir dimensiona o número de nós para 2 em um pool de nós chamado nodepool1
:
az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes
Excluir um pool de nós
Se você precisar excluir um pool de nós, use 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 rótulo para um pool de nós
Ao criar um pool de nós, você pode adicionar taints ou rótulos a ele. Quando você adiciona um taint ou rótulo, todos os nós dentro desse pool de nós também recebem esse taint ou rótulo.
Importante
Você deve adicionar taints ou rótulos a nós para todo o pool de nós usando az aksarc nodepool
. Não recomendamos usar kubectl
para aplicar taints ou rótulos a nós individuais em um pool de nós.
Definir os taints do pool de nós
Criar um pool de nós com uma mancha utilizando o comando
az aksarc nodepool add
. Especifique o nometaintnp
e use 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 status do pool de nós usando o
az aksarc nodepool list
comando :az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
A saída de exemplo a seguir mostra que o
taintnp
pool de nós cria nós com o especificadonodeTaints
:[ { ... "count": 1, ... "name": "taintnp", ... "provisioningState": "Succeeded", ... "nodeTaints": [ "sku=gpu:NoSchedule" ], ... }, ... ]
As informações do taint ficam visíveis no Kubernetes para identificar as regras de agendamento para nós. O agendador do Kubernetes pode usar taints e tolerâncias para restringir quais cargas de trabalho podem ser executadas em nós.
- Um taint é aplicado a um nó que indica que apenas os pods específicos podem ser agendados neles.
- Uma tolerância é então aplicada a um pod que lhes permite "tolerar" a mancha de um nó.
Definir as tolerâncias do pool de nós
Na etapa anterior, você aplicou o sku=gpu:NoSchedule
taint quando criou o pool de nós. O manifesto YAML de exemplo a seguir usa uma tolerância para permitir que o agendador do Kubernetes execute um pod NGINX em um nó nesse pool de nós:
Crie um arquivo chamado 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 usando o comando
kubectl apply
:kubectl apply -f nginx-toleration.yaml
Leva alguns segundos para agendar o pod e efetuar pull da imagem NGINX.
Verifique o status usando o
kubectl describe pod
comando :kubectl describe pod mypod
A saída de exemplo condensada a seguir mostra que a
sku=gpu:NoSchedule
tolerância é aplicada. Na seçã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
Somente os pods que têm essa tolerância aplicada podem ser agendados em nós no
taintnp
. Quaisquer outros pods são agendados no pool de nós nodepool1. Se você criar pools de nós adicionais, pode usar outros taints e tolerâncias para limitar quais pods podem ser agendados nesses recursos de nó.
Configurar rótulos do pool de nós
Para obter mais informações, consulte Usar rótulos em um cluster do AKS habilitado para Azure Arc. ::: zone-end
Próximas etapas
Comentários
https://aka.ms/ContentUserFeedback.
Em breve: Ao longo de 2024, eliminaremos os problemas do GitHub como o mecanismo de comentários para conteúdo e o substituiremos por um novo sistema de comentários. Para obter mais informações, consulteEnviar e exibir comentários de