Správa fondů uzlů pro cluster (AKS ve službě Azure Stack HCI 23H2)

Platí pro: Azure Stack HCI verze 23H2

Poznámka

Informace o správě fondů uzlů v AKS ve službě Azure Stack HCI 22H2 najdete v tématu Správa fondů uzlů.

V AKS povolené službou Azure Arc se uzly stejné konfigurace seskupují do fondů uzlů. Tyto fondy uzlů obsahují základní virtuální počítače, na kterých běží vaše aplikace. V tomto článku se dozvíte, jak vytvořit a spravovat fondy uzlů pro cluster v AKS Arc.

Vytvoření clusteru Kubernetes

Začněte vytvořením clusteru Kubernetes s jedním fondem uzlů:

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>

Přidání fondu uzlů

Fond uzlů můžete přidat do existujícího clusteru az aksarc nodepool add pomocí příkazu . Ujistěte se, že název fondu uzlů není stejný jako existující fond uzlů:

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>

Získání informací o konfiguraci fondu uzlů

Pokud chcete zobrazit konfiguraci fondů uzlů, použijte příkaz az aksarc nodepool show :

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

Příklad výstupu:

{
"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"
}

Určení maximálního počtu podů nasazených do fondu uzlů

Maximální počet podů, které lze nasadit do uzlu, můžete nakonfigurovat při vytváření clusteru nebo při vytváření nových fondů uzlů. Pokud při vytváření fondů uzlů nezadáte maxPods , fond uzlů se nasadí s výchozí hodnotou maximálně 110 podů:

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

Škálování fondu uzlů

Počet uzlů ve fondu uzlů můžete škálovat nahoru nebo dolů.

Pokud chcete škálovat počet uzlů ve fondu uzlů, použijte příkaz az aksarc nodepool scale . Následující příklad škáluje počet uzlů na 2 ve fondu uzlů s názvem nodepool1:

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

Odstranění fondu uzlů

Pokud potřebujete odstranit fond uzlů, použijte příkaz az aksarc nodepool delete :

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

Určení taintu nebo popisku pro fond uzlů

Když vytváříte fond uzlů, můžete do něj přidat tainty nebo popisky. Když přidáte taint nebo popisek, všechny uzly v daném fondu uzlů získají také tento taint nebo popisek.

Důležité

K uzlům pro celý fond uzlů byste měli přidat tainty nebo popisky pomocí az aksarc nodepool. Nedoporučujeme používat kubectl k použití taintů nebo popisků na jednotlivé uzly ve fondu uzlů.

Nastavení taintů fondu uzlů

  1. Pomocí příkazu vytvořte fond uzlů s taintem az aksarc nodepool add . Zadejte název taintnp a použijte --node-taints parametr k zadání sku=gpu:NoSchedule taintu:

    az aksarc nodepool add \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name taintnp \
        --node-count 1 \
        --node-taints sku=gpu:NoSchedule \
        --no-wait
    
  2. Pomocí příkazu zkontrolujte stav fondu az aksarc nodepool list uzlů:

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

    Následující příklad výstupu ukazuje, že taintnp fond uzlů vytváří uzly se zadaným parametrem nodeTaints:

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

Informace o taintu jsou viditelné v Kubernetes pro zpracování pravidel plánování pro uzly. Plánovač Kubernetes může pomocí taintů a tolerací omezit, které úlohy můžou běžet na uzlech.

  • Na uzel se použije taint , který označuje, že se na nich dají naplánovat jenom konkrétní pody.
  • Na pod se pak použije tolerance , která jim umožní "tolerovat" taint uzlu.

Nastavení tolerance fondu uzlů

V předchozím kroku jste použili sku=gpu:NoSchedule taint při vytváření fondu uzlů. Následující příklad manifestu YAML používá toleranci, která plánovači Kubernetes umožňuje spustit pod NGINX na uzlu v tomto fondu uzlů:

  1. Vytvořte soubor s názvem nginx-toleration.yaml a zkopírujte a vložte následující příklad 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. Naplánujte pod pomocí kubectl apply příkazu:

    kubectl apply -f nginx-toleration.yaml
    

    Naplánování podu a načtení image NGINX trvá několik sekund.

  3. Zkontrolujte stav pomocí kubectl describe pod příkazu:

    kubectl describe pod mypod
    

    Následující zhuštěný příklad výstupu ukazuje, že sku=gpu:NoSchedule se používá tolerance. V části Události plánovač přiřadil pod moc-lbeof1gn6x3 uzlu:

    [...]
    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
    

    Na uzlech v nástroji lze naplánovat pouze pody, u kterých je tato tolerance použitá.taintnp Všechny ostatní pody jsou naplánované ve fondu uzlů nodepool1 . Pokud vytvoříte více fondů uzlů, můžete pomocí taintů a tolerance omezit, které pody se dají na těchto prostředcích uzlů naplánovat.

Nastavení popisků fondu uzlů

Další informace najdete v tématu Použití popisků v clusteru AKS s podporou Azure Arc. ::: zone-end

Další kroky