Dela via


Hantera nodpooler för ett kluster (AKS på Azure Stack HCI 22H2)

Gäller för: AKS på Azure Stack HCI 22H2, AKS på Windows Server

Kommentar

Information om hur du hanterar nodpooler i AKS på Azure Stack HCI 23H2 finns i Hantera nodpooler.

I AKS som aktiveras av Azure Arc grupperas noder med samma konfiguration i nodpooler. Dessa nodpooler innehåller de underliggande virtuella datorer som kör dina program. Den här artikeln visar hur du skapar och hanterar nodpooler för ett kluster i AKS Arc.

Kommentar

Den här funktionen ger större kontroll över hur du skapar och hanterar flera nodpooler. Därför krävs separata kommandon för att skapa, uppdatera och ta bort åtgärder. Tidigare var klusteråtgärder via New-AksHciCluster eller Set-AksHciCluster det enda alternativet för att skapa eller skala ett kluster med en Windows-nodpool och en Linux-nodpool. Den här funktionen exponerar en separat åtgärdsuppsättning för nodpooler som kräver användning av nodpoolkommandona New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool och Remove-AksHciNodePool för att köra åtgärder på en enskild nodpool.

Innan du börjar

Vi rekommenderar att du installerar version 1.1.6. Om du redan har installerat PowerShell-modulen kör du följande kommando för att hitta versionen:

Get-Command -Module AksHci

Om du behöver uppdatera PowerShell följer du anvisningarna i Uppgradera AKS-värden.

Skapa ett AKS-kluster

Kom igång genom att skapa ett AKS-kluster med en enda nodpool. I följande exempel används kommandot New-AksHciCluster för att skapa ett nytt Kubernetes-kluster med en Linux-nodpool med namnet linuxnodepool, som har 1 nod. Om du redan har ett kluster som distribuerats med en äldre version av AKS och du vill fortsätta att använda din gamla distribution kan du hoppa över det här steget. Du kan fortfarande använda den nya uppsättningen nodpoolkommandon för att lägga till fler nodpooler i ditt befintliga kluster.

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

Kommentar

Den gamla parameteruppsättningen för New-AksHciCluster stöds fortfarande.

Lägga till en nodpool

Klustret med namnet mycluster*, som skapades i föregående steg, har en enda nodpool. Du kan lägga till en andra nodpool i det befintliga klustret med kommandot New-AksHciNodePool . I följande exempel skapas en Windows-nodpool med namnet windowsnodepool med en nod. Kontrollera att namnet på nodpoolen inte är samma namn som någon befintlig nodpool.

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

Hämta konfigurationsinformation för en nodpool

Om du vill se konfigurationsinformationen för dina nodpooler använder du kommandot Get-AksHciNodePool .

Get-AksHciNodePool -clusterName mycluster

Exempel på utdata>

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

Om du vill se konfigurationsinformationen för en specifik nodpool använder du parametern -name i Get-AksHciNodePool.

Get-AksHciNodePool -clusterName mycluster -name linuxnodepool

Exempel på utdata>

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

Exempel på utdata>

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

Kommentar

Om du använder de nya parameteruppsättningarna i New-AksHciCluster för att distribuera ett kluster och sedan köra Get-AksHciCluster för att hämta klusterinformationen returnerar 0fälten WindowsNodeCount och LinuxNodeCount i utdata . Om du vill få det korrekta antalet noder i varje nodpool använder du kommandot Get-AksHciNodePool med det angivna klusternamnet.

Skala en nodpool

Du kan skala upp eller ned antalet noder i en nodpool.

Om du vill skala antalet noder i en nodpool använder du kommandot Set-AksHciNodePool . I följande exempel skalas antalet noder till 3 i en nodpool med namnet linuxnodepool i mycluster klustret.

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

Skalningskontrollplansnoder

Hanteringen av kontrollplansnoder har inte ändrats. Det sätt på vilket de skapas, skalas och tas bort förblir detsamma. Du distribuerar fortfarande kontrollplansnoder med kommandot New-AksHciCluster med parametrarna controlPlaneNodeCount och controlPlaneVmSize med standardvärdena 1 respektive Standard_A4_V2 om du inte anger några värden.

Du kan behöva skala kontrollplansnoderna när arbetsbelastningsbehovet för dina program ändras. Om du vill skala kontrollplansnoderna använder du kommandot Set-AksHciCluster . I följande exempel skalas kontrollplanets noder till 3 i mycluster klustret, som skapades i föregående steg.

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

Ta bort en nodpool

Om du behöver ta bort en nodpool använder du kommandot Remove-AksHciNodePool . I följande exempel tar du bort nodpoolen med namnet windowsnodepool från mycluster klustret.

Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool

Ange en taint för en nodpool

När du skapar en nodpool kan du lägga till taints i nodpoolen. När du lägger till en taint får alla noder i den nodpoolen också den tainten. Mer information om taints och toleranser finns i Kubernetes Taints och Tolerations.

Ange taints för nodpool

Om du vill skapa en nodpool med en taint använder du New-AksHciNodePool. Ange namnet taintnpoch använd parametern -taints för att ange sku=gpu:noSchedule för taint.

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

Kommentar

En taint kan bara anges för nodpooler när nodpoolen skapas.

Kör följande kommando för att kontrollera att nodpoolen har distribuerats med den angivna tainten.

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}

I föregående steg använde du tainten sku=gpu:NoSchedule när du skapade nodpoolen. I följande grundläggande exempel använder YAML-manifestet en tolerans för att tillåta Kubernetes-schemaläggaren att köra en NGINX-podd på en nod i nodpoolen.

Skapa en fil med namnet nginx-toleration.yamloch kopiera informationen i följande text.

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"

Schemalägg sedan podden med hjälp av följande kommando.

kubectl apply -f nginx-toleration.yaml

Kontrollera att podden har distribuerats genom att köra följande kommando:

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

Nästa steg