Udostępnij za pośrednictwem


Zarządzanie pulami węzłów dla klastra (AKS na Azure Local 22H2)

Dotyczy: AKS na Azure Local 22H2, AKS na Windows Server

Uwaga

Aby uzyskać informacje na temat zarządzania pulami węzłów w AKS na platformie Azure Local 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ą 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 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ż 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ń 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 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 uruchom polecenie Get-AksHciCluster , aby uzyskać informacje o klastrze, pola WindowsNodeCount i LinuxNodeCount dane wyjściowe będą zwracać wartość 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.

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 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 defektu dla puli węzłów

Podczas tworzenia puli węzłów można dodać do tej puli węzłów defekty. Po dodaniu defektu wszystkie węzły w tej puli węzłów również uzyskają ten błąd. 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 parametr dla parametru .

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 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