Gestire i pool di nodi per un cluster (servizio Azure Kubernetes in Azure Stack HCI 22H2)

Si applica a: servizio Azure Kubernetes in Azure Stack HCI 22H2, servizio Azure Kubernetes in Windows Server

Nota

Per informazioni sulla gestione dei pool di nodi nel servizio Azure Kubernetes in Azure Stack HCI 23H2, vedere Gestire i pool di nodi.

Nel servizio Azure Kubernetes abilitato da Azure Arc i nodi della stessa configurazione vengono raggruppati in pool di nodi. Questi pool di nodi contengono le macchine virtuali sottostanti che eseguono le applicazioni. Questo articolo illustra come creare e gestire pool di nodi per un cluster in AKS Arc.

Nota

Questa funzionalità consente un maggiore controllo su come creare e gestire più pool di nodi. Di conseguenza, per le operazioni di creazione, aggiornamento ed eliminazione sono necessari comandi separati. In precedenza, le operazioni del cluster tramite New-AksHciCluster o Set-AksHciCluster erano l'unica opzione per creare o ridimensionare un cluster con un pool di nodi Windows e un pool di nodi Linux. Questa funzionalità espone un set di operazioni separato per i pool di nodi che richiedono l'uso dei comandi del pool di nodi New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool e Remove-AksHciNodePool per eseguire operazioni su un singolo pool di nodi.

Prima di iniziare

È consigliabile installare la versione 1.1.6. Se il modulo PowerShell è già installato, eseguire il comando seguente per trovare la versione:

Get-Command -Module AksHci

Se è necessario aggiornare PowerShell, seguire le istruzioni riportate in Aggiornare l'host del servizio Azure Kubernetes.

Creare un cluster AKS

Per iniziare, creare un cluster del servizio Azure Kubernetes con un pool a nodo singolo. L'esempio seguente usa il comando New-AksHciCluster per creare un nuovo cluster Kubernetes con un pool di nodi Linux denominato linuxnodepool, che ha 1 nodo. Se è già stato distribuito un cluster con una versione precedente del servizio Azure Kubernetes e si vuole continuare a usare la distribuzione precedente, è possibile ignorare questo passaggio. È comunque possibile usare il nuovo set di comandi del pool di nodi per aggiungere più pool di nodi al cluster esistente.

New-AksHciCluster -name mycluster -nodePoolName linuxnodepool -nodeCount 1 -osType linux

Nota

Il set di parametri precedente per New-AksHciCluster è ancora supportato.

Aggiungere un pool di nodi

Il cluster denominato mycluster*', creato nel passaggio precedente, ha un singolo pool di nodi. È possibile aggiungere un secondo pool di nodi al cluster esistente usando il comando New-AksHciNodePool . L'esempio seguente crea un pool di nodi windows denominato windowsnodepool con un nodo. Assicurarsi che il nome del pool di nodi non sia lo stesso nome di qualsiasi pool di nodi esistente.

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

Ottenere informazioni di configurazione di un pool di nodi

Per visualizzare le informazioni di configurazione dei pool di nodi, usare il comando Get-AksHciNodePool .

Get-AksHciNodePool -clusterName mycluster

Output di esempio:

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

Per visualizzare le informazioni di configurazione di un pool di nodi specifico, usare il -name parametro in Get-AksHciNodePool.

Get-AksHciNodePool -clusterName mycluster -name linuxnodepool

Output di esempio:

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

Output di esempio:

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

Nota

Se si usano i nuovi set di parametri in New-AksHciCluster per distribuire un cluster ed eseguire Get-AksHciCluster per ottenere le informazioni del cluster, i campi WindowsNodeCount e LinuxNodeCount nell'output restituiranno 0. Per ottenere il numero accurato di nodi in ogni pool di nodi, usare il comando Get-AksHciNodePool con il nome del cluster specificato.

Ridimensionare un pool di nodi

È possibile aumentare o ridurre il numero di nodi in un pool di nodi.

Per ridimensionare il numero di nodi in un pool di nodi, usare il comando Set-AksHciNodePool . Nell'esempio seguente il numero di nodi viene ridimensionato a 3 in un pool di nodi denominato linuxnodepool nel mycluster cluster.

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

Ridimensionare i nodi del piano di controllo

La gestione dei nodi del piano di controllo non è stata modificata. Il modo in cui vengono creati, ridimensionati e rimossi rimane invariato. I nodi del piano di controllo verranno comunque distribuiti con il comando New-AksHciCluster con i controlPlaneNodeCount parametri e controlPlaneVmSize con i valori predefiniti di 1 e Standard_A4_V2, rispettivamente, se non si specificano valori.

Potrebbe essere necessario ridimensionare i nodi del piano di controllo quando cambia la richiesta del carico di lavoro delle applicazioni. Per ridimensionare i nodi del piano di controllo, usare il comando Set-AksHciCluster . Nell'esempio seguente i nodi del piano di controllo vengono ridimensionati su 3 nel mycluster cluster, creati nei passaggi precedenti.

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

Eliminare un pool di nodi

Se è necessario eliminare un pool di nodi, usare il comando Remove-AksHciNodePool . Nell'esempio seguente viene rimosso il pool di nodi denominato windowsnodepool dal mycluster cluster.

Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool

Specificare un taint per un pool di nodi

Quando si crea un pool di nodi, è possibile aggiungere taints al pool di nodi. Quando si aggiunge un taint, anche tutti i nodi all'interno del pool di nodi ottengono tale taint. Per altre informazioni su taints e tolerations, vedere Kubernetes Taints and Tolerations.For more information about taints and tolerations, see Kubernetes Taints and Tolerations.

Impostazione di taints del pool di nodi

Per creare un pool di nodi con un taint, usare New-AksHciNodePool. Specificare il nome taintnpe usare il -taints parametro per specificare sku=gpu:noSchedule per il taint.

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

Nota

Un taint può essere impostato solo per i pool di nodi durante la creazione del pool di nodi.

Eseguire il comando seguente per assicurarsi che il pool di nodi sia stato distribuito correttamente con il taint specificato.

Get-AksHciNodePool -clusterName mycluster -name taintnp

Output

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}

Nel passaggio precedente è stato applicato il taint sku=gpu:NoSchedule al momento della creazione del pool di nodi. Il manifesto YAML di esempio seguente usa una tolleranza per consentire all'utilità di pianificazione kubernetes di eseguire un pod NGINX in un nodo del pool di nodi.

Creare un file denominato nginx-toleration.yamle copiare le informazioni nel testo seguente.

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"

Pianificare quindi il pod usando il comando seguente.

kubectl apply -f nginx-toleration.yaml

Per verificare che il pod sia stato distribuito, eseguire il comando seguente:

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

Passaggi successivi