Zarządzanie pulami węzłów dla klastra (AKS w usłudze Azure Stack HCI 23H2)

Dotyczy: Azure Stack HCI, wersja 23H2

Uwaga

Aby uzyskać informacje na temat zarządzania pulami węzłów w usłudze AKS w usłudze Azure Stack HCI 22H2, zobacz Zarządzanie pulami węzłów.

W usłudze AKS włączonej przez usługę Azure Arc węzły tej samej konfiguracji są zgrupowane razem w pule węzłów. Te pule węzłów zawierają bazowe maszyny wirtualne, które uruchamiają aplikacje. W tym artykule przedstawiono sposób tworzenia pul węzłów dla klastra i zarządzania nimi w usłudze AKS Arc.

Tworzenie klastra Kubernetes

Aby rozpocząć pracę, utwórz klaster Kubernetes z jedną pulą węzłów:

az aksarc create -n <cluster name> -g <resource group> --custom-location <custom location Id> --vnet-ids <vnet id> --generate-ssh-keys --load-balancer-count <load balancer count>

Dodawanie puli węzłów

Pulę węzłów można dodać do istniejącego klastra przy użyciu az aksarc nodepool add polecenia . Upewnij się, że nazwa puli węzłów nie jest taka sama jak istniejąca pula węzłów:

az aksarc nodepool add --name <node pool name> -g <resource group> --cluster-name <cluster name> --os-sku <Linux or Windows> --node-count <count> --node-vm-size <vm size>

Pobieranie informacji o konfiguracji dla puli węzłów

Aby wyświetlić konfigurację pul węzłów, użyj az aksarc nodepool show polecenia :

az aksarc nodepool show --cluster-name <cluster name> -n <node pool name> -g <resource group>

Przykładowe dane wyjściowe:

{
"availabilityZones": null,
"count": 1,
"extendedLocation": null,
"id":
"/subscriptions/&lt;subscription&gt;/resourceGroups/edgeci-registration-rr1s46r1710&lt;resource
group&gt;/providers/Microsoft.Kubernetes/connectedClusters/&lt;cluster
name&gt;/providers/Microsoft.HybridContainerService/provisionedClusterInstances/default/agentPools/&lt;nodepoolname&gt;",
"location": "westeurope",
"name": "nodepoolname",
"nodeImageVersion": null,
"osSku": "CBLMariner",
"osType": "Linux",
"provisioningState": "Succeeded",
"resourceGroup": "resourcegroup",
"status": {
  "errorMessage": null,
  "operationStatus": null,
  "readyReplicas": [
   {
    "count": 1,
    "vmSize": "Standard\_A4\_v2"
   }
  ]
},
"systemData": {
…
},
"tags": null,
"type":
"microsoft.hybridcontainerservice/provisionedclusterinstances/agentpools",
"vmSize": "Standard\_A4\_v2"
}

Określanie maksymalnych zasobników wdrożonych w puli węzłów

Można skonfigurować maksymalną liczbę zasobników wdrażanych w węźle w czasie tworzenia klastra lub podczas tworzenia nowych pul węzłów. Jeśli nie określisz maxPods podczas tworzenia pul węzłów, pula węzłów zostanie wdrożona z wartością domyślną maksymalnie 110 zasobników:

az aksarc nodepool add --cluster-name <cluster name> -n <node pool name> -g <resource group> --max-pods 50 --yes

Skalowanie puli węzłów

Liczbę węzłów można skalować w górę lub w dół w puli węzłów.

Aby skalować liczbę węzłów w puli węzłów, użyj az aksarc nodepool scale polecenia . Poniższy przykład skaluje liczbę węzłów do 2 w puli węzłów o nazwie nodepool1:

az aksarc nodepool scale --cluster-name <cluster name> -n nodepool1 -g <resource group> --node-count 2 --yes

Usuwanie puli węzłów

Jeśli musisz usunąć pulę węzłów, użyj az aksarc nodepool delete polecenia :

az aksarc nodepool delete --cluster-name <cluster name> -n <node pool name> -g <resource group> --yes

Określanie etykiety lub taint dla puli węzłów

Podczas tworzenia puli węzłów można dodawać do niej znaki lub etykiety. Po dodaniu etykiety lub taint wszystkie węzły w tej puli węzłów również uzyskają ten znak lub etykietę.

Ważne

Należy dodać znaki lub etykiety do węzłów dla całej puli węzłów przy użyciu polecenia az aksarc nodepool. Nie zalecamy używania do kubectl stosowania taints lub etykiet do poszczególnych węzłów w puli węzłów.

Ustawianie parametrów puli węzłów

  1. Utwórz pulę węzłów za pomocą az aksarc nodepool add polecenia taint. Określ nazwę taintnp i użyj parametru --node-taints , aby określić sku=gpu:NoSchedule dla parametru taint:

    az aksarc nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name taintnp \
        --node-count 1 \
        --node-taints sku=gpu:NoSchedule \
        --no-wait
    
  2. Sprawdź stan puli węzłów przy użyciu az aksarc nodepool list polecenia :

    az aksarc nodepool list -g myResourceGroup --cluster-name myAKSCluster
    

    Poniższe przykładowe dane wyjściowe pokazują, że taintnp pula węzłów tworzy węzły o określonej wartości nodeTaints:

    [
      {
        ...
        "count": 1,
        ...
        "name": "taintnp",
        ...
        "provisioningState": "Succeeded",
        ...
        "nodeTaints":  [
          "sku=gpu:NoSchedule"
        ],
        ...
      },
     ...
    ]
    

Informacje o taint są widoczne na platformie Kubernetes do obsługi reguł planowania dla węzłów. Harmonogram Kubernetes może używać taints i tolerancji, aby ograniczyć obciążenia, które mogą być uruchamiane w węzłach.

  • Taint jest stosowany do węzła, który wskazuje, że na nich można zaplanować tylko określone zasobniki.
  • Tolerancja jest następnie stosowana do zasobnika, który pozwala im "tolerować" drzemienie węzła.

Ustawianie tolerancji puli węzłów

W poprzednim kroku zastosowano sku=gpu:NoSchedule taint podczas tworzenia puli węzłów. Poniższy przykładowy manifest YAML używa tolerancji, aby umożliwić harmonogramowi Kubernetes uruchamianie zasobnika NGINX w węźle w tej puli węzłów:

  1. Utwórz plik o nazwie nginx-toleration.yaml i skopiuj/wklej następujący przykład YAML:

    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"
    
  2. Zaplanuj zasobnik przy użyciu kubectl apply polecenia :

    kubectl apply -f nginx-toleration.yaml
    

    Zaplanowanie zasobnika i ściągnięcie obrazu NGINX zajmuje kilka sekund.

  3. Sprawdź stan przy użyciu kubectl describe pod polecenia :

    kubectl describe pod mypod
    

    Poniższe skrócone przykładowe dane wyjściowe pokazują, że tolerancja sku=gpu:NoSchedule jest stosowana. W sekcji Zdarzenia harmonogram przypisał zasobnik do węzła moc-lbeof1gn6x3 :

    [...]
    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  54s  default-scheduler   Successfully assigned default/mypod to moc-lbeof1gn6x3
      Normal  Pulling    53s  kubelet             Pulling image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine"
      Normal  Pulled     48s  kubelet             Successfully pulled image "mcr.microsoft.com/oss/nginx/nginx:1.15.9-alpine" in 3.025148695s (3.025157609s including waiting)
      Normal  Created    48s  kubelet             Created container
      Normal  Started    48s  kubelet             Started container
    

    W węzłach w programie taintnpmożna zaplanować tylko zasobniki, które mają tę tolerancję. Wszystkie inne zasobniki są zaplanowane w puli węzłów nodepool1 . Jeśli tworzysz więcej pul węzłów, możesz użyć taints i tolerancji, aby ograniczyć harmonogram zasobników w tych zasobach węzłów.

Ustawianie etykiet puli węzłów

Aby uzyskać więcej informacji, zobacz Używanie etykiet w klastrze usługi AKS z obsługą usługi Azure Arc. ::: zone-end

Następne kroki