Toepassingen aanpassen voor gebruik in Kubernetes-clusters met gemengde besturingssystemen
Van toepassing op: AKS in Azure Stack HCI 22H2, AKS op Windows Server
Met AKS die wordt ingeschakeld door Azure Arc kunt u Kubernetes-clusters uitvoeren met zowel Linux- als Windows-knooppunten, maar u moet kleine wijzigingen aanbrengen in uw apps voor gebruik in deze clusters met gemengde besturingssystemen. In deze handleiding leert u hoe u ervoor kunt zorgen dat uw toepassing wordt gepland op het juiste hostbesturingssysteem met behulp van knooppuntkiezers of taints en toleranties.
In dit artikel wordt ervan uitgegaan dat u basiskennis hebt van Kubernetes-concepten. Zie Kubernetes core concepts for AKS enabled by Arc (Kernconcepten van Kubernetes voor AKS die worden ingeschakeld door Arc) voor meer informatie.
Knooppuntkiezers
Een knooppuntkiezer is een eenvoudig veld in de YAML van de podspecificatie waarmee wordt beperkt dat pods alleen worden gepland op gezonde knooppunten die overeenkomen met het besturingssysteem. Geef in de YAML van uw podspecificatie een nodeSelector
waarde op van Windows of Linux, zoals wordt weergegeven in de volgende voorbeelden:
kubernetes.io/os = Windows
Of
kubernetes.io/os = Linux
Zie knooppuntkiezers voor meer informatie over nodeSelectors.
Taints en toleranties
Taints en toleranties werken samen om ervoor te zorgen dat pods niet onbedoeld op knooppunten worden gepland. Een knooppunt kan worden 'bevlekt' om pods af te wijzen die de taint niet expliciet tolereren via een 'tolerantie' in de YAML van de podspecificatie.
Windows-besturingssysteemknooppunten in AKS Arc kunnen worden besmet wanneer ze worden gemaakt met de opdrachten New-AksHciNodePool of New-AksHciCluster . U kunt deze opdrachten ook gebruiken om knooppunten van het Linux-besturingssysteem te tainten. In het volgende voorbeeld worden Windows-knooppunten weergegeven.
Taint toepassen op een nieuw cluster
Als u ook een nieuw cluster maakt, voert u de volgende opdracht uit om een Windows-knooppuntgroep met een taint te maken. Als u een bestaand cluster hebt waaraan u een knooppuntgroep met een taint wilt toevoegen, raadpleegt u het volgende voorbeeld, waarin de New-AksHciNodePool
opdracht wordt gebruikt.
New-AksHciCluster -name mycluster -nodePoolName taintnp -nodeCount 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Een bevlekte knooppuntgroep toevoegen aan een bestaand cluster
Voer de volgende opdracht uit om een bevlekte knooppuntgroep toe te voegen aan een bestaand cluster:
New-AksHciNodePool -clusterName <cluster-name> -nodePoolNAme taintnp -count 1 -osType Windows -osSku Windows2022 -taints sku=Windows:NoSchedule
Voer de volgende opdracht uit om te controleren of de knooppuntgroep is geïmplementeerd met de taint:
Get-AksHciNodePool -clusterName <cluster-name> -name taintnp
Voorbeelduitvoer:
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}
Tolerantie voor pod opgeven
U kunt een tolerantie voor een pod opgeven in de YAML van de podspecificatie. De volgende tolerantie komt overeen met de taint die is gemaakt door de kubectl
taint-lijn die in het vorige voorbeeld wordt weergegeven. Het resultaat is dat een pod met de tolerantie kan plannen op de bevlekte knooppunten.
tolerations:
- key: node.kubernetes.io/os
operator: Equal
value: Windows
effect: NoSchedule
De stappen in deze sectie werken goed als u controle hebt over de podspecificatie die u implementeert. In sommige gevallen hebben gebruikers echter een bestaand groot aantal implementaties voor Linux-containers, evenals een ecosysteem van algemene configuraties, zoals Helm-grafieken van de community. U hebt geen toegang tot de podspecificatie, tenzij u de grafiek wilt downloaden en bewerken.
Als u deze Helm-grafieken implementeert in een omgeving met gemengde clusters met zowel Linux- als Windows-werkknooppunten, mislukken uw toepassingspods met de fout ImagePullBackOff. Bijvoorbeeld:
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
In dit geval kunt u taints gebruiken om hierbij te helpen. Windows Server-knooppunten kunnen worden bevlekt met het sleutel-waardepaar node.kubernetes.io/os=windows:NoSchedule
.
Zie Taints and Tolerations (Taints and Tolerations) voor meer informatie over taints en toleranties.
Volgende stappen
In deze handleiding hebt u geleerd hoe u knooppuntkiezers of taints en toleranties toevoegt aan uw Kubernetes-clusters met behulp van kubectl. Vervolgens kunt u het volgende doen:
Feedback
https://aka.ms/ContentUserFeedback.
Binnenkort beschikbaar: In de loop van 2024 zullen we GitHub-problemen geleidelijk uitfaseren als het feedbackmechanisme voor inhoud en deze vervangen door een nieuw feedbacksysteem. Zie voor meer informatie:Feedback verzenden en weergeven voor