Partilhar 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

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

Próximos passos