Compartilhar via


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 taintnpe 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.yamle 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

Próximas etapas