Nota
O acesso a esta página requer autorização. Podes tentar iniciar sessão ou mudar de diretório.
O acesso a esta página requer autorização. Podes tentar mudar de diretório.
No Serviço Kubernetes do Azure (AKS), nós da mesma configuração são agrupados em pools de nós. Os grupos de nós contêm as VMs subjacentes que executam os seus aplicativos. Os pools de nós do sistema e os pools de nós de utilizador são dois modos de pool de nós diferentes para os seus clusters AKS. Os pools de nós do sistema servem ao objetivo principal de hospedar pods críticos do sistema, como CoreDNS e metrics-server. Os pools de nós de usuário têm o objetivo principal de hospedar seus pods de aplicativo. No entanto, os pods de aplicativos podem ser agendados em pools de nós do sistema se você desejar ter apenas um pool em seu cluster AKS. Cada cluster AKS deve conter pelo menos um pool de nós do sistema com pelo menos dois nós.
Importante
Se você executar um único pool de nós do sistema para seu cluster AKS em um ambiente de produção, recomendamos usar pelo menos três nós para o pool de nós.
Este artigo explica como gerenciar pools de nós do sistema no AKS. Para obter informações sobre como usar múltiplos pools de nós, consulte Usar múltiplos pools de nós.
Antes de começar
Você precisa da CLI do Azure versão 2.3.1 ou posterior instalada e configurada. Executar az --version para localizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
Limitações
As limitações a seguir se aplicam quando você cria e gerencia clusters AKS que suportam pools de nós do sistema.
- Consulte Cotas, restrições de tamanho de VM e disponibilidade de região no AKS.
- Uma versão da API de 2020-03-01 ou superior deve ser usada para definir um modo de pool de nós. Os clusters criados em versões de API anteriores a 2020-03-01 contêm apenas pools de nós de usuário, mas podem ser migrados para conter pools de nós do sistema seguindo as etapas do modo de pool de atualizações.
- O nome de um pool de nós pode conter apenas caracteres alfanuméricos minúsculos e deve começar com uma letra minúscula. Para reservatórios de nós de computação Linux, o comprimento deve estar entre 1 e 12 caracteres. Para pools de nós do Windows, o comprimento deve estar entre um e seis caracteres.
- O modo de um pool de nós é uma propriedade necessária e deve ser explicitamente definido ao usar modelos ARM ou chamadas diretas de API.
Conjuntos de nós do sistema e do utilizador
Para um pool de nós do sistema, o AKS atribui automaticamente o rótulo kubernetes.azure.com/mode: system aos seus nós. Isso faz com que o AKS prefira pods do sistema de agendamento em pools de nós que contêm esse rótulo. Esse rótulo não impede que você programe pods de aplicativos em pools de nós do sistema. No entanto, recomendamos que isolem os pods críticos do sistema dos pods da aplicação para evitar que pods de aplicação mal configurados ou não autorizados excluam acidentalmente os pods do sistema.
Você pode impor esse comportamento criando um pool de nós de sistema dedicado. Use a CriticalAddonsOnly=true:NoSchedule mancha para impedir que pods de aplicação sejam agendados em pools de nós do sistema.
Os pools de nós do sistema têm as seguintes restrições:
- Os pools de nós do sistema devem suportar pelo menos 30 pods, conforme descrito pela fórmula dos valores mínimo e máximo para pods.
- Os pools de sistemas osType devem ser Linux.
- Os pools de nós de usuário osType podem ser Linux ou Windows.
- Os pools de sistema devem conter pelo menos dois nós e os pools de nós de usuário podem conter zero ou mais nós.
- Os pools de nós do sistema exigem uma VM com um SKU de pelo menos 4 vCPUs e 4GB de memória.
- As VMs da série B não são suportadas para pools de nós do sistema.
- Recomenda-se um mínimo de três nós de 8 vCPUs ou dois nós de pelo menos 16 vCPUs (por exemplo, Standard_DS4_v2), especialmente para clusters grandes (réplicas de Pod CoreDNS múltiplos, complementos 3-4+, etc.).
- Os grupos de nós spot requerem grupos de nós de utilizador.
- Adicionar outro grupo de nós do sistema ou alterar qual grupo de nós é considerado um sistema não move automaticamente os pods do sistema. Os pods do sistema podem continuar a ser executados no mesmo pool de nós, mesmo que você o altere para um pool de nós de usuário. Se você excluir ou reduzir a escala de um pool de nós executando pods de sistema que anteriormente eram um pool de nós do sistema, esses pods de sistema serão reimplantados com agendamento preferencial para o novo pool de nós do sistema.
Você pode realizar as seguintes operações com grupos de nós:
- Crie um pool de nós de sistema dedicado (prefira agendar pods de sistema em pools de nós dedicados como
mode:system) - Altere um pool de nós do sistema para ser um pool de nós de usuário, desde que você tenha outro pool de nós do sistema para ocupar seu lugar no cluster AKS.
- Altere um pool de nós de usuário para ser um pool de nós do sistema.
- Elimine pools de nós de utilizador.
- Você pode excluir pools de nós do sistema, desde que outro pool de nós do sistema esteja disponível para ocupar seu lugar no cluster AKS.
- Um cluster AKS pode ter vários pools de nós do sistema e requer pelo menos um pool de nós do sistema.
- Se quiser alterar várias configurações imutáveis em pools de nós existentes, você pode criar novos pools de nós para substituí-los. Um exemplo é adicionar um novo pool de nós com uma nova configuração maxPods e excluir o pool de nós antigo.
- Use afinidade de nós para exigir ou preferir quais nós possam ser agendados com base nos rótulos dos nós. Você pode definir
keycomokubernetes.azure.com,operatorcomoIn, evaluesdeuserousystemno seu YAML, aplicando esta definição usandokubectl apply -f yourYAML.yaml.
Criar um novo cluster AKS com um pool de nós do sistema
Quando você cria um novo cluster AKS, o pool de nós inicial assume como padrão um modo do tipo system. Quando crias novos pools de nós com az aks nodepool add, esses pools de nós são pools de utilizador, a menos que especifiques explicitamente o parâmetro mode.
O exemplo seguinte cria um grupo de recursos chamado myResourceGroup na região eastus.
az group create --name myResourceGroup --location eastus
Utilize o comando az aks create para criar um cluster AKS. O exemplo a seguir cria um cluster chamado myAKSCluster com um pool de sistema dedicado contendo dois nós. Para as suas cargas de trabalho de produção, certifique-se de que está a utilizar pools de nós do sistema com, no mínimo, três nós. Esta operação pode levar vários minutos para ser concluída.
# Create a new AKS cluster with a single system pool
az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 2 --generate-ssh-keys
Adicionar um pool de nós de sistema dedicado a um cluster AKS existente
Você pode adicionar um ou mais pools de nós do sistema aos clusters AKS existentes. É recomendável agendar os seus pods de aplicativo em grupos de nós de utilizador e dedicar grupos de nós do sistema exclusivamente para pods críticos do sistema. Isso evita que pods de aplicativos fraudulentos excluam acidentalmente pods do sistema. Imponha esse comportamento com o CriticalAddonsOnly=true:NoScheduletaint para os pools de nós do sistema.
O comando a seguir adiciona um pool de nós dedicados do sistema de tipo de modo com uma contagem padrão de três nós.
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name systempool \
--node-count 3 \
--node-taints CriticalAddonsOnly=true:NoSchedule \
--mode System
Mostrar detalhes para o pool de nós
Pode verificar os detalhes do seu pool de nós utilizando o seguinte comando.
az aks nodepool show --resource-group myResourceGroup --cluster-name myAKSCluster --name systempool
Um modo do tipo System é definido para pools de nós do sistema e um modo do tipo User é definido para pools de nós de usuário. Para uma pool de sistema, verifique se o taint está definido para CriticalAddonsOnly=true:NoSchedule, o que impedirá que sejam agendados pods de aplicação nesta pool de nós.
{
"agentPoolType": "VirtualMachineScaleSets",
"availabilityZones": null,
"count": 3,
"enableAutoScaling": null,
"enableNodePublicIp": false,
"id": "/subscriptions/yourSubscriptionId/resourcegroups/myResourceGroup/providers/Microsoft.ContainerService/managedClusters/myAKSCluster/agentPools/systempool",
"maxCount": null,
"maxPods": 110,
"minCount": null,
"mode": "System",
"name": "systempool",
"nodeImageVersion": "AKSUbuntu-1604-2020.06.30",
"nodeLabels": {},
"nodeTaints": [
"CriticalAddonsOnly=true:NoSchedule"
],
"orchestratorVersion": "1.16.10",
"osDiskSizeGb": 128,
"osType": "Linux",
"provisioningState": "Succeeded",
"proximityPlacementGroupId": null,
"resourceGroup": "myResourceGroup",
"scaleSetEvictionPolicy": null,
"scaleSetPriority": null,
"spotMaxPrice": null,
"tags": null,
"type": "Microsoft.ContainerService/managedClusters/agentPools",
"upgradeSettings": {
"maxSurge": null
},
"vmSize": "Standard_DS2_v2",
"vnetSubnetId": null
}
Atualizar o sistema de cluster existente e os pools de nós de usuário
Nota
Uma versão da API de 2020-03-01 ou superior deve ser usada para definir um modo de pool de nós do sistema. Os clusters criados em versões de API anteriores a 2020-03-01 contêm apenas pools de nós de usuário como resultado. Para receber a funcionalidade e os benefícios do pool de nós do sistema em clusters mais antigos, atualize o modo dos pools de nós existentes com os seguintes comandos na versão mais recente da CLI do Azure.
Você pode alterar os modos dos pools de nós tanto do sistema quanto do usuário. Você pode alterar um pool de nós do sistema para um pool de usuários somente se outro pool de nós do sistema já existir no cluster AKS.
Este comando altera um pool de nós do sistema para um pool de nós de usuário.
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode user
Este comando altera um pool de nós de usuário para um pool de nós do sistema.
az aks nodepool update --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool --mode system
Eliminar um pool de nós no sistema
Nota
Para usar pools de nós do sistema em clusters AKS antes da versão da API 2020-03-02, adicione um novo pool de nós do sistema e exclua o pool de nós padrão original.
Você deve ter pelo menos dois pools de nós do sistema em seu cluster AKS antes de poder excluir um deles.
az aks nodepool delete --resource-group myResourceGroup --cluster-name myAKSCluster --name mynodepool
Limpar recursos
Para excluir o cluster, use o comando az group delete para excluir o grupo de recursos AKS:
az group delete --name myResourceGroup --yes --no-wait
Próximos passos
Neste artigo, você aprendeu como criar e gerenciar pools de nós do sistema em um cluster AKS. Para obter informações sobre como iniciar e parar pools de nós AKS, consulte iniciar e parar pools de nós AKS.