Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Em AKS (Serviço de Kubernetes do Azure), nós da mesma configuração são agrupados em pools de nós . Os pools de nós contêm as VMs (máquinas virtuais) subjacentes que executam seus aplicativos. Os pools de nós do sistema e os pools de nós do usuário são dois modos de pool de nós diferentes para os clusters AKS. Este artigo explica como gerenciar pools de nós do sistema no AKS. Para obter informações sobre como usar vários pools de nós, veja criar pools de nós.
-
Pools de nós do sistema: a principal finalidade é hospedar pods críticos do sistema como
CoreDNSemetrics-server. Os pools de nós do sistema não devem ser usados para executar seu aplicativo. Os pools de nós do sistema usam o Ubuntu Linux ou Azure Linux. - Pools de nós de usuário: O objetivo principal é hospedar os pods da sua aplicação e isolar as aplicações do pool de nós do sistema. Esse isolamento impede que um aplicativo cause instabilidade no conjunto de nós do sistema do seu cluster. Os pools de nós de usuário podem usar o 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, a contagem 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 do Linux.
É possível, mas não recomendado, agendar pods de aplicativos em um pool de nós do sistema se você tiver apenas um pool de nós em seu cluster AKS. Uma solução melhor é criar um pool de nós de usuário para seu aplicativo.
Antes de começar
Você precisa do CLI do Azure versão 2.3.1 ou posterior instalado e configurado. Para localizar a versão, execute o comando az --version. Se precisar instalar ou atualizar, consulte Instalar CLI do Azure.
Limitações
As seguintes limitações se aplicam ao criar e gerenciar clusters do AKS com suporte a vários pools de nós do sistema.
- Confira Cotas, restrições de tamanho de VM e disponibilidade de região no AKS.
- Uma versão
2020-03-01ou superior da API deve ser usada para configurar um modo de pool de nós. Os clusters criados em versões de API mais antigas que2020-03-01contê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 só pode conter caracteres alfanuméricos minúsculos e deve começar com uma letra minúscula. Para pools de nós do Linux, o comprimento deve ter 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 definido explicitamente ao usar modelos ARM ou chamadas diretas à API.
Pools de nós do usuário e do sistema
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 o agendamento de pods do sistema em pools de nós que contêm esse rótulo. Este rótulo não impede o agendamento de pods de aplicativo em pools de nós do sistema. No entanto, recomendamos isolar os pods críticos do sistema dos pods de aplicativo para evitar que pods de aplicativo mal configurados ou inesperados excluam acidentalmente os pods do sistema.
É possível impor esse comportamento criando um pool de nós do sistema dedicado. Use o taint CriticalAddonsOnly=true:NoSchedule para impedir que os pods de aplicativo sejam agendados nos 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 dar suporte a pelo menos 30 pods, conforme descrito pela fórmula de valor mínimo e máximo para pods.
- Os pools do sistema
osTypedevem ser Linux. - Os pools de usuários
osTypepodem ser Linux ou Windows. - Os pools do sistema devem conter pelo menos dois nós, mas a recomendação é de três nós. Pools de nós de usuário podem conter zero ou mais nós.
- Os pools de nós do sistema exigem uma SKU de VM de pelo menos 4 vCPUs e 4GB de memória.
- As VMs da série B não têm suporte para pools de nós do sistema.
- É recomendado um mínimo de três nós com 8 vCPUs ou dois nós de no mínimo 16 vCPUs (por exemplo, Standard_DS4_v2), especialmente para clusters grandes (várias réplicas de pod de CoreDNS, 3-4+ complementos, etc.).
- Pools de nós spot exigem pools de nós de usuário.
- Adicionar outro pool de nós do sistema ou alterar qual pool de nós é um pool de nós do sistema não move automaticamente os pods do sistema. O pods do sistema podem continuar a ser executados no mesmo pool de nós, mesmo que ele seja alterado para um pool de nós de usuário. Se excluir ou reduzir verticalmente um pool de nós que executa pods do sistema e que antes eram um pool de nós do sistema, esses pods do sistema serão reimplantados com o agendamento preferencial para o novo pool de nós do sistema.
É possível executar as seguintes operações com pools de nós:
- Criar um pool de nós do sistema dedicado (prefira o agendamento de pods do sistema em pools de nós de
mode:system) - Alterar um pool de nós do sistema para ser um pool de nos de usuário, desde que tenha outro pool de nós do sistema para assumir o lugar no cluster do AKS.
- Alterar um pool de nós de usuário para ser um pool de nós do sistema.
- Excluir pools de nós de usuário.
- É possível excluir os pools de nós do sistema, desde que tenha outro pool de nós do sistema para assumir o lugar no cluster do AKS.
- Um cluster do AKS pode ter vários pools de nós do sistema e requer pelo menos um pool de nós do sistema.
- Caso deseje alterar várias configurações imutáveis em pools de nós existentes, poderá criar novos pools de nós para substituí-los. Um exemplo é adicionar um novo pool de nós com uma nova
maxPodsconfiguração e excluir o pool de nós antigo. - Use a afinidade de nó para exigir ou escolher quais nós podem ser agendados por rótulo. É possível definir
keycomokubernetes.azure.com,operatorcomoInevaluesdeuserousystempara o YAML, basta aplicar essa definição comkubectl apply -f yourYAML.yaml.
Criar um novo cluster do AKS com um pool de nós de sistema
Ao criar um novo cluster do AKS, o pool de nós inicial usa como padrão um modo de tipo System. Quando são criados novos pools de nós com az aks nodepool add, eles são pools de nós de usuário, a menos que seja especificado explicitamente o parâmetro de modo.
Crie variáveis para o grupo de recursos, o nome do cluster e o local dos comandos usados neste artigo. Este artigo especifica valores ou você pode usar 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 a seguir cria um grupo de recursos chamado myResourceGroup na região eastus.
az group create --name $RESOURCE_GROUP --location $LOCATION
Use o comando az aks create para criar um cluster do AKS. O seguinte exemplo cria um cluster chamado myAKSCluster com um pool de sistema dedicado contendo dois nós. Para as cargas de trabalho de produção, verifique se estão em uso pools de nó do sistema com pelo menos três nós. Esta operação leva vários minutos para 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 dedicado ao sistema a um cluster AKS existente
É possível adicionar um ou mais pools de nós do sistema a clusters AKS existentes. A recomendação é agendar os pods de aplicações nos grupos de nós de usuário e dedicar os grupos de nós do sistema somente a pods críticos do sistema. Essa separação impede que pods de aplicativos invasores excluam acidentalmente pods do sistema. Imponha esse comportamento com o CriticalAddonsOnly=true:NoScheduletaint aos pools de nós do sistema.
O comando a seguir adiciona um pool de nós dedicado do tipo de modo System com três nós. O az aks nodepool add comando adiciona três nós por padrão, mas você usa o --node-count parâmetro para especificar o número de nós desejados.
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 do pool de nós
É possível verificar os detalhes do pool de nós com o comando a seguir.
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 Sistema é definido para pools de nós do sistema, e um modo do tipo Usuário é definido para pools de nós do usuário. Para um pool de sistemas, verifique se a propriedade nodeTaints está definida como CriticalAddonsOnly=true:NoSchedule, o que impede que os pods de aplicativo sejam agendados nesse pool de nós.
{
"Count": 3,
"Mode": "System",
"NodePool": "systempool",
"NodeTaint": [
"CriticalAddonsOnly=true:NoSchedule"
],
"ResourceGroup": "myResourceGroup"
}
Atualizar o sistema de clusters e os pools de nós de usuário existentes
Observação
Para definir um modo de pool de nós do sistema, é necessário usar uma versão da API de 2020-03-01 ou superior. Os clusters criados em versões de API mais antigas que 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 de pools de nós existentes com os comandos a seguir na versão mais recente do CLI do Azure.
Você pode alterar os modos para pools de nós do sistema e pools de nós de usuário. Você pode alterar um pool de nós do sistema para um pool de nós de usuário somente se outro pool de nós do sistema já existir no cluster do AKS.
Para criar um novo pool de nós do modo de sistema, execute este comando.
az aks nodepool add \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--node-count 3 \
--mode System
Você pode verificar o modo com o comando a seguir.
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 usuário.
az aks nodepool update \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL \
--mode User
Você pode verificar se o modo foi alterado com o comando a seguir.
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 usuário 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
Execute o comando anterior para verificar se o modo foi alterado.
Excluir um pool de nós do sistema
Observação
Para usar pools de nós do sistema em clusters do AKS antes da versão 2020-03-01da API, adicione um novo pool de nós do sistema e exclua o pool de nós padrão original.
Deve haver pelo menos dois pools de nós do sistema no cluster AKS para poder excluir um deles.
az aks nodepool delete \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--name $NEW_NODE_POOL
Depois de excluir o pool de nós do sistema, você deverá ter o pool de nós do sistema original que foi criado com o cluster e o pool de nós do sistema que você criou na seção adicionar um pool de nós do sistema dedicado a um cluster do AKS existente.
az aks nodepool list \
--resource-group $RESOURCE_GROUP \
--cluster-name $CLUSTER_NAME \
--query "[].{Name:name, Mode:mode}" --output table
Limpar os recursos
Quando você exclui o grupo de recursos do cluster AKS, todos os recursos do cluster e o grupo de recursos do nó relacionado (MC_) são excluídos.
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óximas etapas
Este artigo mostra como criar e gerenciar pools de nós do sistema em um cluster do AKS. Para obter informações sobre como iniciar e parar pools de nós do AKS, consulte iniciar e parar pools de nós no AKS.