Partilhar via


Gerir pools de nós para um cluster no AKS em Windows Server

Aplica-se para: AKS no Windows Server

Nota

Para obter informações sobre como gerenciar pools de nós no AKS no Azure Local, consulte Gerenciar pools de nós.

No AKS no Windows Server, os nós com a 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 requerem o uso dos comandos New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool e Remove-AksHciNodePool para executar operações num 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 utiliza o comando New-AksHciCluster para criar um novo cluster Kubernetes com um pool de nós Linux, denominado linuxnodepool, que possui 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 de pools de nós para adicionar mais pools 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 nenhum 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 seus pools de nós, utilize 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 aumentar ou reduzir o número de nós em um pool de nós.

Para dimensionar o número de nós num pool de nós, utilize 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. Continuará a implantar nós de plano de controlo com o comando New-AksHciCluster com os parâmetros controlPlaneNodeCount e controlPlaneVmSize com os valores padrão de 1 e Standard_A4_V2, respectivamente, caso não forneça quaisquer valores.

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

Eliminar 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 manchas a esse pool de nós. Ao adicionar uma tinta, todos os nós dentro desse conjunto de nós também recebem essa tinta. 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

Um taint só pode ser definido 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
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, aplicaste a marca sku=gpu:NoSchedule quando criaste o teu pool de nós. O exemplo básico de manifesto YAML a seguir usa uma tolerância para permitir que o agendador do Kubernetes execute um pod NGINX num nó desse 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