Udostępnij przez


Zarządzanie pulami węzłów dla klastra w AKS na Windows Server

Dotyczy: usługa AKS w systemie Windows Server

Uwaga

Aby uzyskać informacje na temat zarządzania pulami węzłów w AKS na platformie Azure Local, zobacz Zarządzanie pulami węzłów.

W usłudze AKS w systemie Windows Server węzły tej samej konfiguracji są grupowane razem w pule węzłów. Te pule węzłów zawierają bazowe maszyny wirtualne, na których są uruchamiane 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 są wymagane 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 musisz zaktualizować program PowerShell, wykonaj instrukcje opisane w temacie Uaktualnianie hosta usługi AKS.

Tworzenie klastra AKS

Aby rozpocząć, utwórz klaster AKS z pojedynczą 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ż klaster wdrożony 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ń dotyczących puli węzłów, aby dodać więcej 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 jest nadal obsługiwany.

Dodaj pulę 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 dowolna 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 wyjście:

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 -name get-AksHciNodePool.

Get-AksHciNodePool -clusterName mycluster -name linuxnodepool

Przykładowe wyjście:

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 wyjście:

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 programie New-AksHciCluster do wdrożenia klastra, a następnie uruchomisz polecenie Get-AksHciCluster, aby uzyskać informacje o klastrze, to pola WindowsNodeCount i LinuxNodeCount w danych wyjściowych zwrócą 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 z domyślnymi wartościami 1 i Standard_A4_V2, odpowiednio, jeśli nie zostaną podane inne wartości.

Może być konieczne skalowanie węzłów płaszczyzny sterowania w miarę zmiany zapotrzebowania na obciążenie aplikacji. 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 klastrze mycluster, który został utworzony w poprzednich krokach.

Set-AksHciCluster -name mycluster -controlPlaneNodeCount 3

Usuń pulę 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śl skażenie dla puli węzłów

Podczas tworzenia puli węzłów można dodać do tej puli węzłów zabrudzenia. Po dodaniu skazy wszystkie węzły w tej puli węzłów również uzyskają tę skazę. Aby uzyskać więcej informacji na temat defektów i tolerancji, zobacz Kubernetes Taints i Tolerations.

Ustawianie parametrów puli węzłów

Aby utworzyć pulę węzłów z defektem, użyj polecenia New-AksHciNodePool. Określ nazwę taintnp, a następnie użyj parametru -taints, aby określić sku=gpu:noSchedule jako taint.

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

Uwaga

Parametr 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 defektu.

Get-AksHciNodePool -clusterName mycluster -name taintnp
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 nałożyłeś taint sku=gpu:NoSchedule podczas tworzenia puli węzłów. Poniższy podstawowy przykładowy manifest YAML używa toleracji, aby umożliwić schedulerowi Kubernetes uruchomienie zasobnika NGINX na 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 pod 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