Partilhar via


Gerir conjuntos 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 a gestão de conjuntos de nós no AKS no Azure Stack HCI 23H2, veja Gerir conjuntos de nós.

No AKS ativado pelo Azure Arc, os nós da mesma configuração são agrupados em conjuntos de nós. Estes conjuntos de nós contêm as VMs subjacentes que executam as suas aplicações. Este artigo mostra-lhe como criar e gerir conjuntos de nós para um cluster no AKS Arc.

Nota

Esta funcionalidade permite um maior controlo sobre como criar e gerir múltiplos conjuntos de nós. Como resultado, são necessários comandos separados para criar, atualizar e eliminar operações. Anteriormente, as operações de cluster através de New-AksHciCluster ou Set-AksHciCluster eram a única opção para criar ou dimensionar um cluster com um conjunto de nós do Windows e um conjunto de nós do Linux. Esta funcionalidade expõe um conjunto de operações separado para conjuntos de nós que requerem a utilização dos comandos do conjunto de nós New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool e Remove-AksHciNodePool para executar operações num conjunto de nós individual.

Antes de começar

Recomendamos que instale a versão 1.1.6. Se já tiver o módulo do PowerShell instalado, execute o seguinte comando para localizar a versão:

Get-Command -Module AksHci

Se precisar de atualizar o PowerShell, siga as instruções em Atualizar o anfitrião do AKS.

Criar um cluster do AKS (Create an AKS cluster)

Para começar, crie um cluster do AKS com um único conjunto de nós. O exemplo seguinte utiliza o comando New-AksHciCluster para criar um novo cluster do Kubernetes com um conjunto de nós linux com o nome linuxnodepool, que tem 1 nó. Se já tiver um cluster implementado com uma versão mais antiga do AKS e quiser continuar a utilizar a sua implementação antiga, pode ignorar este passo. Ainda pode utilizar o novo conjunto de comandos do conjunto de nós para adicionar mais conjuntos 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 com o nome mycluster*', criado no passo anterior, tem um único conjunto de nós. Pode adicionar um segundo conjunto de nós ao cluster existente com o comando New-AksHciNodePool . O exemplo seguinte cria um conjunto de nós do Windows com o nome windowsnodepool com um nó. Certifique-se de que o nome do conjunto de nós não é o mesmo nome que qualquer conjunto de nós existente.

New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType Windows -osSku Windows2022

Obter informações de configuração de um conjunto de nós

Para ver as informações de configuração dos conjuntos de nós, utilize 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 conjunto de nós específico, utilize o -name parâmetro em Get-AksHciNodePool.

Get-AksHciNodePool -clusterName mycluster -name linuxnodepool

Exemplo de saída:

ClusterName  : mycluster
NodePoolName : linuxnodepool
Version      : v1.20.7
OsType       : Linux
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed
Get-AksHciNodePool -clusterName mycluster -name windowsnodepool

Exemplo de saída:

ClusterName  : mycluster
NodePoolName : windowsnodepool
Version      : v1.20.7
OsType       : Windows
NodeCount    : 1
VmSize       : Standard_K8S3_v1
Phase        : Deployed

Nota

Se utilizar os novos conjuntos de parâmetros para implementar 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 irão devolver 0. Para obter o número preciso de nós em cada conjunto de nós, utilize o comando Get-AksHciNodePool com o nome de cluster especificado.

Dimensionar um conjunto de nós

Pode aumentar ou reduzir verticalmente o número de nós num conjunto de nós.

Para dimensionar o número de nós num conjunto de nós, utilize o comando Set-AksHciNodePool . O exemplo seguinte dimensiona o número de nós para 3 num conjunto de nós com o nome linuxnodepool no mycluster cluster.

Set-AksHciNodePool -clusterName mycluster -name linuxnodepool -count 3

Nós do plano de controlo de dimensionamento

A gestão dos nós do plano de controlo não mudou. A forma como são criadas, dimensionadas e removidas permanece a mesma. Continuará a implementar nós do plano de controlo com o comando New-AksHciCluster com os parâmetros controlPlaneNodeCount e controlPlaneVmSize com os valores predefinidos de 1 e Standard_A4_V2, respetivamente, se não fornecer valores.

Poderá ter de dimensionar os nós do plano de controlo à medida que a procura da carga de trabalho das suas aplicações é alterada. Para dimensionar os nós do plano de controlo, utilize o comando Set-AksHciCluster . O exemplo seguinte dimensiona os nós do plano de controlo para 3 no mycluster cluster, que foi criado nos passos anteriores.

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

Eliminar um conjunto de nós

Se precisar de eliminar um conjunto de nós, utilize o comando Remove-AksHciNodePool . O exemplo seguinte remove o conjunto de nós com o nome windowsnodepool do mycluster cluster.

Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool

Especificar um taint para um conjunto de nós

Ao criar um conjunto de nós, pode adicionar taints a esse conjunto de nós. Quando adiciona um taint, todos os nós nesse conjunto de nós também obtêm essa taint. Para obter mais informações sobre taints e tolerâncias, veja Kubernetes Taints and Tolerations (Taints e Tolerâncias do Kubernetes).

Definir taints do conjunto de nós

Para criar um conjunto de nós com um taint, utilize New-AksHciNodePool. Especifique o nome taintnpe utilize o -taints parâmetro para especificar sku=gpu:noSchedule para o taint.

New-AksHciNodePool -clusterName mycluster -name taintnp -count 1 -osType linux -taints sku=gpu:NoSchedule

Nota

Um taint só pode ser definido para conjuntos de nós durante a criação do conjunto de nós.

Execute o seguinte comando para se certificar de que o conjunto de nós foi implementado 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}

No passo anterior, aplicou o taint sku=gpu:NoSchedule quando criou o conjunto de nós. O seguinte manifesto YAML de exemplo básico utiliza uma tolerância para permitir que o agendador do Kubernetes execute um pod NGINX num nó nesse conjunto de nós.

Crie um ficheiro com o nome nginx-toleration.yamle copie as informações no texto seguinte.

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 com o seguinte comando.

kubectl apply -f nginx-toleration.yaml

Para verificar se o pod foi implementado, 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

Passos seguintes