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
Anteckning
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.
Anteckning
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 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.
Innan du börjar
Vi rekommenderar att du installerar version 1.1.6. 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 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 distribuerat med en äldre version av AKS 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.
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
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 0
fälten WindowsNodeCount
och LinuxNodeCount
i utdata . Om du vill hämta 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 kommer fortfarande att distribuera 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 kontrollplanets noder använder du kommandot Set-AksHciCluster . I följande exempel skalas kontrollplanets noder till 3 i mycluster
klustret, vilket 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 mycluster
med namnet windowsnodepool
från 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 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 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 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