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
Nota
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, 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.
Nota
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 criar, atualizar e excluir operações. 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 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 instale a versão 1.1.6. Se você já tiver o módulo PowerShell instalado, execute o seguinte comando para localizar a versão:
Get-Command -Module AksHci
Se você precisar atualizar o PowerShell, siga as instruções em Atualizar o host AKS.
Criar um cluster do AKS
Para começar, crie um cluster AKS com um único pool de nós. O exemplo a seguir usa o comando New-AksHciCluster para criar um novo cluster Kubernetes com um pool de nós Linux chamado linuxnodepool, que tem 1 nó. Se você já tiver um cluster implantado com uma versão mais antiga do AKS e desejar 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
Nota
O parâmetro antigo definido para New-AksHciCluster
ainda é suportado.
Adicionar um conjunto 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 é 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
Saída de exemplo:
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
Nota
Se você usar os novos conjuntos de parâmetros para implantar um cluster e, em New-AksHciCluster
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 dimensionar o número de nós para cima ou para baixo 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 dos 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 de 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 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 uma mancha para um pool de nós
Ao criar um pool de nós, você pode adicionar manchas a esse pool de nós. Quando você adiciona uma mancha, todos os nós dentro desse pool de nós também recebem essa mancha. Para obter mais informações sobre manchas e tolerâncias, consulte Manchas e tolerâncias do Kubernetes.
Definindo manchas do pool de nós
Para criar um pool de nós com uma mancha, use New-AksHciNodePool. Especifique o nome taintnp
e use o -taints
parâmetro para especificar sku=gpu:noSchedule
a mancha.
New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule
Nota
Uma mancha só pode ser definida para pools de nós durante a criação do pool de nós.
Execute o seguinte comando para certificar-se de que o pool de nós foi implantado com êxito com a mancha especificada.
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 a coloração sku=gpu:NoSchedule quando criou seu pool de nós. O exemplo básico a seguir, o manifesto YAML 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 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 seguinte comando.
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