Dostosowywanie aplikacji do użycia w klastrach Kubernetes o mieszanych systemach operacyjnych
Dotyczy: usługa AKS w usłudze Azure Stack HCI 22H2, AKS w systemie Windows Server
Usługa AKS włączona przez usługę Azure Arc umożliwia uruchamianie klastrów Kubernetes z węzłami systemu Linux i Windows, ale należy wprowadzić niewielkie zmiany w aplikacjach do użycia w tych klastrach systemu operacyjnego mieszanego. W tym przewodniku z instrukcjami dowiesz się, jak zapewnić, że aplikacja zostanie zaplanowana w odpowiednim systemie operacyjnym hosta przy użyciu selektorów węzłów lub za pomocą taints i tolerancji.
W tym artykule założono podstawową wiedzę na temat pojęć związanych z platformą Kubernetes. Aby uzyskać więcej informacji, zobacz Podstawowe pojęcia dotyczące usługi Kubernetes dla usługi AKS włączonej przez usługę Arc.
Selektory węzłów
Selektor węzłów to proste pole w specyfikacji YAML zasobnika, które ogranicza harmonogram tylko do węzłów w dobrej kondycji pasujących do systemu operacyjnego. W specyfikacji zasobnika YAML określ nodeSelector
wartość systemu Windows lub Linux, jak pokazano w poniższych przykładach:
kubernetes.io/os = Windows
Lub
kubernetes.io/os = Linux
Aby uzyskać więcej informacji na temat węzłówWybieracze, zobacz selektory węzłów.
Taints i tolerancje
Taints i tolerancje współpracują ze sobą, aby upewnić się, że zasobniki nie są zaplanowane na węzłach przypadkowo. Węzeł może być "skażony", aby odrzucić zasobniki, które nie są jawnie tolerowane przez "tolerancję" w specyfikacji YAML zasobnika.
Węzły systemu operacyjnego Windows w usłudze AKS Arc można zastosować podczas tworzenia za pomocą polecenia New-AksHciNodePool lub New-AksHciCluster. Za pomocą tych poleceń można również za pomocą tych poleceń zaciemniać węzły systemu operacyjnego Linux. W poniższym przykładzie węzły systemu Windows są skażone.
Stosowanie taint do nowego klastra
Jeśli utworzysz również nowy klaster, uruchom następujące polecenie, aby utworzyć pulę węzłów systemu Windows z taint. Jeśli masz istniejący klaster, do którego chcesz dodać pulę węzłów z taint, zobacz następny przykład, który używa New-AksHciNodePool
polecenia .
New-AksHciCluster -name mycluster -nodePoolName taintnp -nodeCount 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Dodawanie niezamierzonej puli węzłów do istniejącego klastra
Aby dodać pulę węzłów do istniejącego klastra, uruchom następujące polecenie:
New-AksHciNodePool -clusterName <cluster-name> -nodePoolNAme taintnp -count 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Aby sprawdzić, czy pula węzłów została pomyślnie wdrożona za pomocą narzędzia taint, uruchom następujące polecenie:
Get-AksHciNodePool -clusterName <cluster-name> -name taintnp
Przykładowe dane wyjściowe:
Status : {Phase, Details}
ClusterName : mycluster
NodePoolName : taintnp
Version : v1.20.7-kvapkg.1
OsType : Windows
NodeCount : 0
VmSize : Standard_K8S3_v1
Phase : Deployed
Taints : {sku=Windows:NoSchedule}
Określanie tolerancji dla zasobnika
Można określić tolerancję zasobnika w specyfikacji ZASOBNIKA YAML. Poniższa tolerancja "pasuje" do błędu utworzonego kubectl
przez linię taint pokazaną w poprzednim przykładzie. Wynikiem jest to, że zasobnik z tolerancją może zaplanować na zaciemnianych węzłach.
tolerations:
- key: node.kubernetes.io/os
operator: Equal
value: Windows
effect: NoSchedule
Kroki opisane w tej sekcji działają prawidłowo, jeśli masz kontrolę nad wdrażaną specyfikacją zasobnika. Jednak w niektórych przypadkach użytkownicy mają wstępnie istniejącą dużą liczbę wdrożeń dla kontenerów systemu Linux, a także ekosystem typowych konfiguracji, takich jak wykresy programu Helm społeczności. Nie będziesz mieć dostępu do specyfikacji zasobnika, chyba że chcesz pobrać i edytować wykres.
Jeśli te wykresy helm zostaną wdrożone w środowisku klastra mieszanego z węzłami roboczymi systemu Linux i Windows, zasobniki aplikacji kończą się niepowodzeniem z powodu błędu "ImagePullBackOff". Na przykład:
kubectl get pods
NAMESPACE NAME READY STATUS RESTARTS AGE
default nginx-deployment-558fc78868-795dp 0/1 ImagePullBackOff 0 6m24s
default nginx-deployment-6b474476c4-gpb77 0/1 ImagePullBackOff 0 11m
W tym przypadku możesz użyć taints , aby pomóc w tym. Węzły systemu Windows Server można zastosować do pary node.kubernetes.io/os=windows:NoSchedule
klucz-wartość .
Aby uzyskać więcej informacji na temat taints i tolerancji, zobacz Taints and Tolerations (Taints and Tolerations).
Następne kroki
W tym przewodniku z instrukcjami przedstawiono sposób dodawania selektorów węzłów lub taints i tolerancji do klastrów Kubernetes przy użyciu narzędzia kubectl. Następnie możesz wykonać następujące czynności:
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla