Přizpůsobení aplikací pro clustery Kubernetes se smíšenými operačními systémy pomocí selektorů uzlů nebo příchuti a tolerovánosti

Platí pro: Azure Stack HCI, verze 21H2 a 20H2; Windows server 2022 datacenter Windows server 2019 datacenter

služba Azure Kubernetes ve službě Azure Stack HCI umožňuje spouštět clustery Kubernetes s uzly Linux i Windows, ale vyžaduje, abyste v těchto clusterech se smíšeným operačním systémem provedli malé úpravy, aby je bylo možné použít. V tomto průvodci se dozvíte, jak zajistit, aby se aplikace naplánovala na správném hostitelském operačním systému pomocí selektorů uzlů nebo chuti a příjímání.

Tato příručka předpokládá základní znalost konceptů Kubernetes. Další informace najdete v tématu základní koncepty Kubernetes pro Azure Kubernetes Service v Azure Stack HCI.

Selektor uzlů

Selektor uzlů je jednoduché pole ve specifikaci pod specifikací pod YAML, které omezuje lusky tak, aby se naplánovaly jenom na zdravých uzlech, které odpovídají operačnímu systému. ve specifikaci pod YAML zadejte nodeSelector -Windows nebo Linux, jak je znázorněno v níže uvedených příkladech.

kubernetes.io/os = Windows

ani

kubernetes.io/os = Linux

Další informace o nodeSelectors najdete v selektorech uzlů.

Příchuti a tolerovánosti

Chuti a tolerovány vzájemně spolupracují, aby se zajistilo, že lusky nejsou na uzlech záměrně naplánované. Uzel může být "ve stavu", aby nepřijímal lusky, které explicitně nedovolují jeho chuti pomocí "tolerovánosti" ve specifikaci "pod" YAML.

při vytvoření v příkazu new-AksHciNodePool nebo v příkazu new-AksHciCluster může být Windows uzlů operačního systému v AKS na Azure Stack HCI. Tyto příkazy můžete použít také k nachuti uzlům operačního systému Linux. Následující příklad používá Windows.

spusťte následující příkaz, který vytvoří Windows fond uzlů s příchodem, pokud vytváříte i nový cluster. Pokud máte existující cluster, do kterého chcete přidat fond uzlů s příchuti do, použijte následující příklad, který používá New-AksHciNodePool příkaz.

New-AksHciCluster -name mycluster -nodePoolName taintnp -nodeCount 1 -osType windows -taints sku=Windows:NoSchedule

Chcete-li přidat do existujícího clusteru fond uzlů s příchodem, spusťte následující příkaz.

New-AksHciNodePool -clusterName <cluster-name> -nodePoolNAme taintnp -count 1 -osType windows -taints sku=Windows:NoSchedule

Spuštěním následujícího příkazu ověřte, že se fond uzlů úspěšně nasadil s příchodem.

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}

Zadáte tolerovat hodnotu v poli pod specifikací pod (YAML). Následující tolerovat "odpovídá" chuti vytvořeným kubectl čárou chuti a z toho důvodu, že pod ní by bylo možné naplánovat na uzly s příznakem.

tolerations:
- key: node.kubernetes.io/os
  operator: Equal
  value: Windows
  effect: NoSchedule

Kroky v této části budou fungovat dobře, pokud ovládáte specifikaci pod, kterou nasazujete. V některých případech ale uživatelé mají již existující velký počet nasazení pro kontejnery Linux a také ekosystém běžných konfigurací, jako jsou například komunitní Helm grafy. Nebudete mít přístup k specifikaci pod, pokud nechcete graf stáhnout a upravit. pokud nasadíte tyto Helm grafy do smíšeného prostředí clusteru s použitím uzlů pro Linux i Windows, vaše aplikace se nezdaří s chybou "ImagePullBackOff", například:

C:\>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 takovém případě byste se měli podívat na použití chuti a pomoci s tímto: uzly Windows serveru můžou být v obstupnosti s následující dvojicí klíč-hodnota: node.kubernetes.io/os=windows:NoSchedule

Další informace o chuti a tolerováních najdete v informacích o chuti a tolerováních.

Další kroky

V této příručce se naučíte přidávat selektory uzlů nebo příchuti a jejich tolerování do clusterů Kubernetes pomocí kubectl. V dalším kroku můžete: