Skapa och hantera flera nodpooler för ett kluster i Azure Kubernetes Service (AKS) på Azure Stack HCI och Windows Server

I Azure Kubernetes Service (AKS) på Azure Stack HCI och Windows Server grupperas noder med samma konfiguration i nodpooler. Dessa nodpooler innehåller de underliggande virtuella datorer som kör dina program.

Anteckning

Den här funktionen ger högre kontroll över hur du skapar och hanterar flera nodpooler. Därför krävs separata kommandon för att skapa/uppdatera/ta bort åtgärder. Tidigare var klusteråtgärder via New-AksHciCluster eller Set-AksHciCluster det enda alternativet för att skapa/skala ett kluster med en Windows nodpool och en Linux-nodpool. Den här funktionen visar 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.

Den här artikeln visar hur du skapar och hanterar flera nodpooler i ett AKS på Azure Stack HCI och Windows Server-kluster.

Innan du börjar

Vi rekommenderar att du har den senaste versionen 1.1.6 installerad. Om du redan har PowerShell-modulen installerad kör du följande kommando för att hitta versionen.

Get-Command -Module AksHci

Om du behöver uppdatera följer du anvisningarna här.

Skapa ett AKS på Azure Stack HCI- och Windows Server-kluster

Kom igång genom att skapa ett AKS på Azure Stack HCI och Windows Server-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 med 1 nod. Om du redan har ett kluster distribuerat med en äldre version av AKS på Azure Stack HCI och Windows Server och vill fortsätta 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

Anteckning

Den gamla parameteruppsättningen för New-AksHciCluster stöds fortfarande. Det kommer dock att bli inaktuellt i en framtida relase.

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 Windows nodpool med namnet windowsnodepool med en nod. Kontrollera att namnet på nodpoolen inte är samma namn som en annan befintlig nodpool.

New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType windows

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

Anteckning

Om du använder de nya parameteruppsättningarna i New-AksHciCluster för att distribuera ett kluster och sedan kör 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 nodpoolen med namnet linuxnodepool i klustret med namnet mycluster.

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

Skalningskontrollplansnoder

Kontrollplanets noder 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 inga värden anges.

Du kan behöva skala kontrollplansnoderna när arbetsbelastningsbehovet för dina program ändras. Om du vill skala kontrollplanets noder använder du kommandot Set-AksHciCluster . I följande exempel skalas kontrollplansnoderna till 3 i det befintliga klustret med namnet mycluster 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 . Följande exempel tar bort nodpoolen med namnet windowsnodepool i klustret med namnet mycluster.

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 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 taintnp och 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

Anteckning

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

Resultat

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 kubernetes-schemaläggaren ska kunna köra en NGINX-podd på en nod i nodpoolen.

Skapa en fil med namnet nginx-toleration.yaml och kopiera informationen i följande exempel.

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