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

Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server

Uwaga

Aby uzyskać informacje na temat zarządzania pulami węzłów w usłudze AKS w usłudze Azure Stack HCI 23H2, 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.

Uwaga

Ta funkcja umożliwia większą kontrolę nad tworzeniem wielu pul węzłów i zarządzaniem nimi. W związku z tym do operacji tworzenia, aktualizowania i usuwania wymagane są oddzielne polecenia. Wcześniej operacje klastra za pomocą polecenia New-AksHciCluster lub Set-AksHciCluster były jedyną opcją tworzenia lub skalowania klastra z jedną pulą węzłów systemu Windows i jedną pulą węzłów systemu Linux. Ta funkcja uwidacznia oddzielny zestaw operacji dla pul węzłów, które wymagają użycia poleceń puli węzłów New-AksHciNodePool, Set-AksHciNodePool, Get-AksHciNodePool i Remove-AksHciNodePool do wykonywania operacji w pojedynczej puli węzłów.

Zanim rozpoczniesz

Zalecamy zainstalowanie wersji 1.1.6. Jeśli masz już zainstalowany moduł programu PowerShell, uruchom następujące polecenie, aby znaleźć wersję:

Get-Command -Module AksHci

Jeśli chcesz zaktualizować program PowerShell, wykonaj instrukcje opisane w temacie Uaktualnianie hosta usługi AKS.

Tworzenie klastra AKS

Aby rozpocząć pracę, utwórz klaster usługi AKS z jedną pulą węzłów. W poniższym przykładzie użyto polecenia New-AksHciCluster , aby utworzyć nowy klaster Kubernetes z jedną pulą węzłów systemu Linux o nazwie linuxnodepool, która ma 1 węzeł. Jeśli masz już wdrożony klaster ze starszą wersją usługi AKS i chcesz kontynuować korzystanie ze starego wdrożenia, możesz pominąć ten krok. Nadal możesz użyć nowego zestawu poleceń puli węzłów, aby dodać więcej puli węzłów do istniejącego klastra.

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

Uwaga

Stary zestaw parametrów dla New-AksHciCluster programu jest nadal obsługiwany.

Dodawanie puli węzłów

Klaster o nazwie mycluster*', utworzony w poprzednim kroku, ma jedną pulę węzłów. Drugą pulę węzłów można dodać do istniejącego klastra przy użyciu polecenia New-AksHciNodePool . Poniższy przykład tworzy pulę węzłów systemu Windows o nazwie windowsnodepool z jednym węzłem. Upewnij się, że nazwa puli węzłów nie jest taka sama jak żadna istniejąca pula węzłów.

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

Pobieranie informacji o konfiguracji puli węzłów

Aby wyświetlić informacje o konfiguracji pul węzłów, użyj polecenia Get-AksHciNodePool .

Get-AksHciNodePool -clusterName mycluster

Przykładowe dane wyjściowe:

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

Aby wyświetlić informacje o konfiguracji jednej konkretnej puli węzłów, użyj parametru -nameget-AksHciNodePool.

Get-AksHciNodePool -clusterName mycluster -name linuxnodepool

Przykładowe dane wyjściowe:

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

Przykładowe dane wyjściowe:

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

Uwaga

Jeśli używasz nowych zestawów parametrów w New-AksHciCluster programie do wdrożenia klastra, a następnie uruchom polecenie Get-AksHciCluster , aby uzyskać informacje o klastrze, pola WindowsNodeCount i LinuxNodeCount dane wyjściowe zostaną zwrócone 0. Aby uzyskać dokładną liczbę węzłów w każdej puli węzłów, użyj polecenia Get-AksHciNodePool o określonej nazwie klastra.

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 polecenia Set-AksHciNodePool . Poniższy przykład skaluje liczbę węzłów do 3 w puli węzłów o nazwie linuxnodepool w klastrze mycluster .

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

Skalowanie węzłów płaszczyzny sterowania

Zarządzanie węzłami płaszczyzny sterowania nie uległo zmianie. Sposób ich tworzenia, skalowania i usuwania pozostaje taki sam. Węzły płaszczyzny sterowania będą nadal wdrażane za pomocą polecenia New-AksHciCluster z parametrami controlPlaneNodeCount i controlPlaneVmSize wartościami domyślnymi odpowiednio 1 i Standard_A4_V2, jeśli nie podasz żadnych wartości.

W miarę zmiany zapotrzebowania na obciążenie aplikacji może być konieczne skalowanie węzłów płaszczyzny sterowania. Aby skalować węzły płaszczyzny sterowania, użyj polecenia Set-AksHciCluster . Poniższy przykład skaluje węzły płaszczyzny sterowania do 3 w mycluster klastrze, który został utworzony w poprzednich krokach.

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

Usuwanie puli węzłów

Jeśli musisz usunąć pulę węzłów, użyj polecenia Remove-AksHciNodePool . Poniższy przykład usuwa pulę węzłów o nazwie windowsnodepool z klastra mycluster .

Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool

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

Podczas tworzenia puli węzłów można dodawać do tej puli węzłów te elementy. Po dodaniu parametru taint wszystkie węzły w tej puli węzłów również uzyskają ten błąd. Aby uzyskać więcej informacji na temat taints i tolerancji, zobacz Kubernetes Taints and Tolerations (Tolerancje i tolerancje kubernetes).

Ustawianie parametrów puli węzłów

Aby utworzyć pulę węzłów za pomocą narzędzia taint, użyj polecenia New-AksHciNodePool. Określ nazwę taintnpi użyj parametru -taints , aby określić sku=gpu:noSchedule dla parametru taint.

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

Uwaga

Taint można ustawić tylko dla pul węzłów podczas tworzenia puli węzłów.

Uruchom następujące polecenie, aby upewnić się, że pula węzłów została pomyślnie wdrożona przy użyciu określonego identyfikatora.

Get-AksHciNodePool -clusterName mycluster -name taintnp

Dane wyjściowe

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}

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

Utwórz plik o nazwie nginx-toleration.yamli skopiuj informacje w poniższym tekście.

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"

Następnie zaplanuj zasobnik przy użyciu następującego polecenia.

kubectl apply -f nginx-toleration.yaml

Aby sprawdzić, czy zasobnik został wdrożony, uruchom następujące polecenie:

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

Następne kroki