Přizpůsobení aplikací pro použití v clusterech Kubernetes se smíšenými operačními systémem
Platí pro: AKS ve Službě Azure Stack HCI 22H2, AKS na Windows Serveru
Služba AKS povolená službou Azure Arc umožňuje spouštět clustery Kubernetes s uzly s Linuxem i Windows, ale pro použití v těchto clusterech se smíšenými operačními systémy musíte provést malé úpravy aplikací. V tomto návodu se dozvíte, jak zajistit, aby se vaše aplikace naplánoval na správný hostitelský operační systém pomocí selektorů uzlů nebo taintů a tolerance.
Tento článek předpokládá základní znalost konceptů Kubernetes. Další informace najdete v tématu Základní koncepty Kubernetes pro AKS povolené službou Arc.
Selektory uzlů
Selektor uzlů je jednoduché pole ve specifikaci podů YAML, které omezuje, aby pody byly naplánovány pouze na uzly, které jsou v pořádku, které odpovídají operačnímu systému. Ve specifikaci podu YAML zadejte nodeSelector
hodnotu Windows nebo Linux, jak je znázorněno v následujících příkladech:
kubernetes.io/os = Windows
Nebo
kubernetes.io/os = Linux
Další informace o nodeSelectorech najdete v tématu Selektory uzlů.
Taints a tolerance
Funkce taints a tolerance spolupracují, aby zajistily , že pody nebudou na uzlech neúmyslně naplánované. Uzel může být "tainted", aby odmítl pody, které explicitně netolerují jeho taint prostřednictvím "tolerance" ve specifikaci podů YAML.
Uzly operačního systému Windows ve službě AKS Arc se dají po vytvoření vytvořit pomocí příkazů New-AksHciNodePool nebo New-AksHciCluster . Tyto příkazy můžete také použít k zabarvení uzlů operačního systému Linux. Následující příklad označuje uzly Windows.
Použití taintu u nového clusteru
Pokud také vytvoříte nový cluster, spuštěním následujícího příkazu vytvořte fond uzlů Windows s taintem. Pokud máte existující cluster, do kterého chcete přidat fond uzlů s taintem, podívejte se na další příklad, který používá New-AksHciNodePool
příkaz .
New-AksHciCluster -name mycluster -nodePoolName taintnp -nodeCount 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Přidání fondu uzlů s taintem do existujícího clusteru
Pokud chcete přidat fond tainted uzlů do existujícího clusteru, spusťte následující příkaz:
New-AksHciNodePool -clusterName <cluster-name> -nodePoolNAme taintnp -count 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Spuštěním následujícího příkazu zkontrolujte, jestli se fond uzlů úspěšně nasadil s taintem:
Get-AksHciNodePool -clusterName <cluster-name> -name taintnp
Příklad výstupu:
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}
Určení tolerance pro pod
Tolerance pro pod můžete zadat ve specifikaci podu YAML. Následující tolerance "odpovídá" taintu vytvořenému čárou taintu kubectl
zobrazenou v předchozím příkladu. Výsledkem je, že pod s tolelací se může naplánovat na uzly s taintem.
tolerations:
- key: node.kubernetes.io/os
operator: Equal
value: Windows
effect: NoSchedule
Kroky v této části fungují dobře, pokud máte kontrolu nad specifikací podu, kterou nasazujete. V některých případech však mají uživatelé již existující velký počet nasazení pro kontejnery Linuxu a také ekosystém běžných konfigurací, jako jsou komunitní charty Helm. K specifikaci podu nebudete mít přístup, pokud nebudete chtít graf stáhnout a upravit.
Pokud tyto grafy Helm nasadíte do prostředí smíšeného clusteru s pracovními uzly Linuxu i Windows, pody aplikací selžou s chybou ImagePullBackOff. Příklad:
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
V tomto případě můžete s tím pomoct pomocí taintů . Uzly Systému Windows Server je možné nakreslovat pomocí páru node.kubernetes.io/os=windows:NoSchedule
klíč-hodnota .
Další informace o taints a snášenlosti najdete v tématu Taints and Tolerations.
Další kroky
V tomto návodu jste zjistili, jak přidat selektory uzlů nebo tainty a tolerance do clusterů Kubernetes pomocí kubectl. Dále můžete:
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro