Tworzenie wielu pul węzłów dla klastra w u Azure Kubernetes Service (AKS) na platformie Azure Stack HCI

W u Azure Stack HCI AKS węzły tej samej konfiguracji są teraz grupowane w pule węzłów. Te pule węzłów zawierają bazowe maszyny wirtualne, na których są uruchamiane aplikacje.

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 tworzenia/aktualizowania/usuwania są wymagane oddzielne polecenia. Wcześniej operacje klastra za pomocą poleceń New-AksHciCluster lub Set-AksHciCluster były jedyną opcją tworzenia/skalowania klastra z jedną pulą węzłów Windows i jedną pulą węzłów systemu Linux. Ta funkcja udostępnia oddzielny zestaw operacji dla pul węzłów, które wymagają użycia poleceń puli węzłów New-AksHciNodePool,Set-AksHciNodePool,Get-AksHciNodePooli Remove-AksHciNodePool w celu wykonywania operacji na poszczególnych pulach węzłów.

W tym artykule pokazano, jak utworzyć wiele pul węzłów i zarządzać nimi w u Azure Stack HCI AKS.

Zanim rozpoczniesz

Zalecamy, aby zainstalować najnowszą wersję 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ć, postępuj zgodnie z instrukcjami podanymi tutaj.

Tworzenie usługi AKS w klastrze Azure Stack HCI klastra

Aby rozpocząć, utwórz w klastrze usługi AKS Azure Stack HCI 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 z 1 węzłem. Jeśli masz już wdrożony klaster ze starszą wersją usługi AKS na platformie Azure Stack HCI i chcesz nadal korzystać 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 będzie nadal obsługiwany. Jednak zostanie ona wycofana w przyszłej ponownej opłaceni.

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 za pomocą polecenia New-AksHciNodePool. Poniższy przykład tworzy pulę Windows o nazwie windowsnodepool z jednym węzłem. Upewnij się, że nazwa puli węzłów nie jest taka sama jak inna istniejąca pula węzłów.

New-AksHciNodePool -clusterName mycluster -name windowsnodepool -count 1 -osType windows

Uzyskiwanie 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 określonej puli węzłów, użyj -name parametru -name

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żyjemy nowych zestawów parametrów w programie do wdrożenia klastra, a następnie zostanie uruchomiony program w celu uzyskania informacji o klastrze, pola i w danych New-AksHciClusterGet-AksHciClusterWindowsNodeCountLinuxNodeCount wyjściowych będą zwracać wartość 0 . Aby uzyskać dokładną liczbę węzłów w każdej puli węzłów, użyj polecenia z Get-AksHciNodePool określoną nazwą 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 o nazwie mycluster.

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

Skalowanie węzłów płaszczyzny sterowania

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

Może być konieczne skalowanie węzłów płaszczyzny sterowania w przypadku zmiany zapotrzebowania aplikacji na obciążenie. 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 istniejącym klastrze o nazwie mycluster, 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. W poniższym przykładzie usuwana jest pula węzłów o nazwie windowsnodepool w klastrze o nazwie mycluster.

Remove-AksHciNodePool -clusterName mycluster -name windowsnodepool

Określanie wartości awarii dla puli węzłów

Podczas tworzenia puli węzłów można dodać do tej puli węzłów. Po dodaniu awarii wszystkie węzły w tej puli węzłów również uzyskają ten przesłop. Aby uzyskać więcej informacji o taintach i tolerancjach, zobacz Kubernetes Taints and Tolerations (Taints i tolerancje kubernetes).

Ustawianie niesłabów puli węzłów

Aby utworzyć pulę węzłów zintesją, użyj new-AksHciNodePool. Określ nazwę taintnp i użyj parametru , aby sku=gpu:noSchedule określić wartość taint.

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

Uwaga

Awarii 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 z określoną wartością.

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 wartość sku=gpu:NoSchedule podczas tworzenia puli węzłów. W poniższym podstawowym przykładzie 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.yaml i skopiuj informacje z poniższego przykładu.

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