Gerenciar pools de nós para um cluster (AKS no Azure Stack HCI 22H2)
Aplica-se a: AKS no Azure Stack HCI 22H2, AKS no Windows Server
Observação
Para obter informações sobre como gerenciar pools de nós no AKS no Azure Stack HCI 23H2, 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.
Observação
Esse recurso permite maior controle sobre como criar e gerenciar vários pools de nós. Como resultado, comandos separados são necessários para operações de criação, atualização e exclusão. Anteriormente, as operações de cluster por meio de New-AksHciCluster ou Set-AksHciCluster eram a única opção para criar ou dimensionar um cluster com um pool de nós do Windows e um pool de nós do Linux. Esse recurso expõe um conjunto de operações separado para pools de nós que exigem o uso dos comandos do pool de nós New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool e Remove-AksHciNodePool para executar operações em um pool de nós individual.
Antes de começar
Recomendamos que você instale a versão 1.1.6. Se você já tiver o módulo do PowerShell instalado, execute o seguinte comando para encontrar a versão:
Get-Command -Module AksHci
Se você precisar atualizar o PowerShell, siga as instruções em Atualizar o host do AKS.
Criar um cluster do AKS
Para começar a usá-lo, crie um cluster do AKS com um único pool de nós. O exemplo a seguir usa o comando New-AksHciCluster para criar um novo cluster do Kubernetes com um pool de nós do Linux chamado linuxnodepool, que tem 1 nó. Se você já tiver um cluster implantado com uma versão mais antiga do AKS e quiser continuar usando sua implantação antiga, ignore esta etapa. Você ainda pode usar o novo conjunto de comandos do pool de nós para adicionar mais pool de nós ao cluster existente.
New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType linux
Observação
O antigo conjunto de parâmetros para New-AksHciCluster
ainda é suportado.
Adicionar um pool de nós
O cluster chamado mycluster
*', criado na etapa anterior, tem um único pool de nós. Você pode adicionar um segundo pool de nós ao cluster existente usando o comando New-AksHciNodePool . O exemplo a seguir cria um pool de nós do Windows chamado windowsnodepool com um nó. Certifique-se de que o nome do pool de nós não seja o mesmo nome de qualquer pool de nós existente.
New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType Windows -osSku Windows2022
Obter informações de configuração de um pool de nós
Para ver as informações de configuração dos pools de nós, use o comando Get-AksHciNodePool .
Get-AksHciNodePool -clusterName mycluster
Exemplo de saída:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Para ver as informações de configuração de um pool de nós específico, use o -name
parâmetro em Get-AksHciNodePool.
Get-AksHciNodePool -clusterName mycluster -name linuxnodepool
Saída de exemplo:
ClusterName : mycluster
NodePoolName : linuxnodepool
Version : v1.20.7
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Get-AksHciNodePool -clusterName mycluster -name windowsnodepool
Saída de exemplo:
ClusterName : mycluster
NodePoolName : windowsnodepool
Version : v1.20.7
OsType : Windows
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Observação
Se você usar os novos conjuntos de parâmetros para New-AksHciCluster
implantar um cluster e, em seguida, executar Get-AksHciCluster
para obter as informações do cluster, os campos WindowsNodeCount
e LinuxNodeCount
na saída retornarão 0
. Para obter o número exato de nós em cada pool de nós, use o comando Get-AksHciNodePool
com o nome do cluster especificado.
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 Set-AksHciNodePool . O exemplo a seguir dimensiona o número de nós para 3 em um pool de nós nomeado linuxnodepool
no mycluster
cluster.
Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3
Dimensionar nós do plano de controle
O gerenciamento de nós do plano de controle não mudou. A maneira como eles são criados, dimensionados e removidos permanece a mesma. Você ainda implantará nós do plano de controle com o comando New-AksHciCluster com os parâmetros controlPlaneNodeCount
e controlPlaneVmSize
com os valores padrão de 1 e Standard_A4_V2, respectivamente, se você não fornecer nenhum valor.
Talvez seja necessário dimensionar os nós do plano de controle à medida que a demanda de carga de trabalho de seus aplicativos muda. Para dimensionar os nós do plano de controle, use o comando Set-AksHciCluster . O exemplo a seguir dimensiona os nós do plano de controle para 3 no mycluster
cluster, que foi criado nas etapas anteriores.
Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3
Excluir um pool de nós
Se você precisar excluir um pool de nós, use o comando Remove-AksHciNodePool . O exemplo a seguir remove o pool de nós nomeado windowsnodepool
do mycluster
cluster.
Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool
Especificar um taint para um pool de nós
Ao criar um pool de nós, você pode adicionar taints a esse pool de nós. Quando você adiciona um taint, todos os nós dentro desse pool de nós também obtêm esse taint. Para obter mais informações sobre taints e tolerations, consulte Kubernetes Taints and Tolerations.
Configurar taints do pool de nós
Para criar um pool de nós com um taint, use New-AksHciNodePool. Especifique o nome taintnp
e use o -taints
parâmetro para especificar sku=gpu:noSchedule
o taint.
New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule
Observação
Um taint só pode ser definido para os pools de nós durante a criação do pool de nós.
Execute o comando a seguir para certificar-se de que o pool de nós foi implantado com êxito com o taint especificado.
Get-AksHciNodePool -clusterName mycluster -name taintnp
Saída
Status : {Phase, Details}
ClusterName : mycluster
NodePoolName : taintnp
Version : v1.20.7-kvapkg.1
OsType : Linux
NodeCount : 1
VmSize : Standard_K8S3_v1
Phase : Deployed
Taints : {sku=gpu:NoSchedule}
Na etapa anterior, você aplicou o taint sku=gpu:NoSchedule ao criar o pool de nós. O manifesto YAML de exemplo básico a seguir usa um toleration 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 as informações no texto a seguir.
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"
Em seguida, agende o pod usando o comando a seguir.
kubectl apply -f nginx-toleration.yaml
Para verificar se o pod foi implantado, execute o seguinte comando:
kubectl describe pod mypod
[...]
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 32s default-scheduler Successfully assigned default/mypod to moc-lk4iodl7h2y
Normal Pulling 30s kubelet Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
Normal Pulled 26s kubelet Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 4.529046457s
Normal Created 26s kubelet Created container mypod