Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
No Azure Kubernetes Service (AKS), nós da mesma configuração são agrupados em node pools. Os pools de nós contêm as máquinas virtuais (VM) subjacentes que executam as suas aplicações. 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. Este artigo explica como gerenciar pools de nós do sistema no AKS. Para informações sobre como usar múltiplos pools de nós, veja criar pools de nós.
-
Pools de nós do sistema: O objetivo principal é hospedar pods críticos do sistema como
CoreDNSemetrics-server. Pools de nós do sistema não devem ser usados para executar a sua aplicação. Os pools de nós do sistema usam Ubuntu Linux ou Azure Linux. - Pools de nós de utilizador: O objetivo principal é alojar os seus pods de aplicações e isolar as aplicações do pool de nós do sistema. Este isolamento impede que uma aplicação cause instabilidade no pool de nós do sistema do seu cluster. Os pools de nós de utilizador podem usar Ubuntu Linux, Azure Linux ou Windows.
Um cluster AKS de produção com um único pool de nós do sistema deve conter pelo menos dois nós. A recomendação para um cluster AKS de produção com um único pool de nós do sistema é ter pelo menos três nós para melhorar a tolerância a falhas e zonas de disponibilidade. Por exemplo, o número de nós padrão do comando az aks create é três e cria um novo cluster com um único pool de nós do sistema Linux e três nós Linux.
É possível, mas não recomendado, agendar os pods de aplicação num pool de nós do sistema se apenas tiver um pool de nós no seu cluster AKS. Uma solução melhor é criar um pool de nós de utilizador para a tua aplicação.
Antes de começar
Precisas que a versão 2.3.1 ou posterior do CLI do Azure esteja instalada e configurada. Para localizar a versão, execute o az --version comando. Se precisares de instalar ou atualizar, vê Install CLI do Azure.
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 API de
2020-03-01ou superior deve ser usada para definir um modo de pool de nós. Clusters criados em versões API anteriores2020-03-01contêm apenas pools de nós de utilizador, mas podem ser migrados para conter pools de nós do sistema seguindo os passos do modo de atualização do pool. - O nome de um pool de nós só pode conter 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 ser 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. Mas recomendamos que isole os pods críticos do sistema dos pods da sua aplicação para evitar que pods de aplicações mal configurados ou desonestos eliminem 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
osTypede sistema têm de ser Linux. - Os pools de nós de utilizador
osTypepodem ser Linux ou Windows. - Os pools do sistema devem conter pelo menos dois nós, mas a recomendação são três nós. 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 pool de nós do sistema ou alterar qual é o pool de nós do 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
maxPodsdefinição e eliminar o pool 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.
Crie variáveis para o grupo de recursos, nome do cluster e localização para os comandos usados neste artigo. Este artigo especifica valores ou pode usar os seus próprios valores.
export RESOURCE_GROUP="myResourceGroup"
export CLUSTER_NAME="myAKSCluster"
export LOCATION="eastus"
export NEW_SYSTEM_NP="systempool"
export NEW_NODE_POOL="mynodepool"
O exemplo seguinte cria um grupo de recursos chamado myResourceGroup na região eastus.
az group create --name $RESOURCE_GROUP --location $LOCATION
Use o az aks create comando 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 demora vários minutos a ser concluída.
az aks create --resource-group $RESOURCE_GROUP --name $CLUSTER_NAME --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. A recomendação é implementar os pods da aplicação em pools de nós de utilizador e dedicar os pools de nós do sistema apenas aos pods críticos do sistema. Esta separação impede que pods de aplicação maliciosos eliminem acidentalmente os pods do sistema. Imponha esse comportamento com o CriticalAddonsOnly=true:NoScheduletaint para os pools de nós do sistema.
O seguinte comando adiciona um conjunto dedicado de nós do tipo System com três nós. O az aks nodepool add comando adiciona três nós por defeito, mas usas o --node-count parâmetro para especificar o número de nós que queres.
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_SYSTEM_NP \
--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 $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_SYSTEM_NP \
--query "{Count:count, Mode:mode, NodePool:name, NodeTaint:nodeTaints, ResourceGroup:resourceGroup}"
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 um pool de sistema, verifique se a propriedade nodeTaints está definida como CriticalAddonsOnly=true:NoSchedule, o que impede o agendamento de pods de aplicação neste pool de nós.
{
"Count": 3,
"Mode": "System",
"NodePool": "systempool",
"NodeTaint": [
"CriticalAddonsOnly=true:NoSchedule"
],
"ResourceGroup": "myResourceGroup"
}
Atualizar o sistema de cluster existente e os pools de nós de usuário
Nota
Deve ser utilizada uma versão da API de 2020-03-01 ou superior para definir um modo de pool de nós do sistema. Clusters criados em versões de API mais antigas que 2020-03-01 resultam em pools que contêm apenas nós de utilizador. Para receber funcionalidades e 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 do CLI do Azure.
Podes alterar os modos tanto para pools de nós do sistema como para pools de nós de utilizador. Só pode mudar um pool de nós do sistema para um pool de nós de utilizador se já existir outro pool de nós do sistema no cluster AKS.
Execute este comando para criar um novo pool de nós em modo sistema.
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--node-count 3 \
--mode System
Pode verificar o modo com o seguinte comando.
az aks nodepool show \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--query mode --output tsv
System
Execute este comando para alterar um pool de nós do sistema para um pool de nós de utilizador.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--mode User
Pode verificar se o modo mudou com o seguinte comando.
az aks nodepool show \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--query mode --output tsv
User
Execute este comando para alterar um pool de nós de utilizador para um pool de nós do sistema.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--mode System
Executa o comando anterior para verificar se o modo mudou.
Eliminar um pool de nós no sistema
Nota
Para usar pools de nós do sistema em clusters AKS antes da versão 2020-03-01da API, adicione um novo pool de nós do sistema e depois elimine 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 $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL
Depois de eliminar o pool de nós do sistema, deves ter o pool original de nós do sistema criado com o cluster e o pool de nós do sistema que criaste na secção adicionar um pool dedicado de nós do sistema a um cluster AKS existente.
az aks nodepool list \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--query "[].{Name:name, Mode:mode}" --output table
Limpar recursos
Quando eliminas o grupo de recursos do cluster AKS, todos os recursos do cluster e o grupo de nós relacionados (MC_) são eliminados.
Para excluir o cluster, use o comando az group delete para excluir o grupo de recursos AKS:
az group delete --name $RESOURCE_GROUP --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.