Anleitung: Verhindern, dass Pods auf bestimmten Knoten geplant werden - Amazon EKS

Unterstützung für die Verbesserung dieser Seite beitragen

Um zu diesem Benutzerhandbuch beizutragen, klicken Sie auf den Link Diese Seite auf GitHub bearbeiten, der sich im rechten Bereich jeder Seite befindet.

Anleitung: Verhindern, dass Pods auf bestimmten Knoten geplant werden

Übersicht

Der Betrieb von Knoten mit spezialisierten Prozessoren, beispielsweise GPUs, kann teurer sein als der von Knoten auf Standard-Rechnern. Um diese Knoten vor Workloads zu schützen, die keine spezielle Hardware erfordern, können Sie Kubernetes-Taints verwenden. Taints markieren Knoten, um Pods ohne übereinstimmende Toleranzen abzulehnen und so sicherzustellen, dass nur kompatible Workloads geplant werden. Weitere Informationen finden Sie unter Taints und Toleranzen in der Kubernetes-Dokumentation.

Kubernetes-Knoten-Taints können auf neue und vorhandene verwaltete Knotengruppen angewendet werden, indem Sie dieAWS-Managementkonsoleoder über die Amazon EKS API. Diese Anleitung zeigt, wie Sie mithilfe der AWS CLI Taints auf von Amazon EKS verwaltete Knotengruppen anwenden. Hinweise zum Erstellen einer Knotengruppe mit einem Taint mithilfe der AWS-Managementkonsole finden Sie unter Eine verwaltete Knotengruppe für Ihren Cluster erstellen.

Voraussetzungen

Schritte

Schritt 1: Knotengruppe mit Taints erstellen

Verwenden Sie den aws eks create-nodegroup-Befehl, um eine neue verwaltete Knotengruppe mit Taints zu erstellen. Dieses Beispiel wendet einen Taint mit Schlüssel dedicated, Wert gpuGroup und Effekt NO_SCHEDULE an.

aws eks create-nodegroup \ --cli-input-json ' { "clusterName": "my-cluster", "nodegroupName": "node-taints-example", "subnets": [ "subnet-1234567890abcdef0", "subnet-abcdef01234567890", "subnet-021345abcdef67890" ], "nodeRole": "arn:aws:iam::111122223333:role/AmazonEKSNodeRole", "taints": [ { "key": "dedicated", "value": "gpuGroup", "effect": "NO_SCHEDULE" } ] }'

Weitere Informationen und Beispiele finden Sie unter Taint in der Kubernetes-Referenzdokumentation.

Schritt 2: Taints in einer vorhandenen Knotengruppe aktualisieren

Verwenden Sie den AWS-CLI-Befehl aws eks update-nodegroup-config, um Taints für verwaltete Knotengruppen hinzuzufügen, zu entfernen oder zu ersetzen.

aws eks update-nodegroup-config --cluster-name my-cluster --nodegroup-name node-taints-example --taints 'removeTaints=[{key=dedicated,value=gpuGroup,effect=NO_SCHEDULE}]'

Hinweise

  • Taints können aktualisiert werden, nachdem Sie die Knotengruppe mit dem UpdateNodegroupConfig-API erstellen.

  • Der Taint-Schlüssel muss mit einem Buchstaben oder einer Zahl beginnen. Es kann Buchstaben, Zahlen, Bindestriche (-), Punkte (.) und Unterstriche (_) enthalten. Er kann bis zu 63 Zeichen lang sein.

  • Optional kann der Taint-Schlüssel mit einem DNS-Subdomänenpräfix und einem einzelnen / beginnen. Wenn er mit einem DNS-Subdomänenpräfix beginnt, kann er 253 Zeichen lang sein.

  • Der Wert ist optional und muss mit einem Buchstaben oder einer Zahl beginnen. Es kann Buchstaben, Zahlen, Bindestriche (-), Punkte (.) und Unterstriche (_) enthalten. Er kann bis zu 63 Zeichen lang sein.

  • Bei direkter Verwendung von Kubernetes oder AWS-Managementkonsole muss der Taint-Effekt NoSchedule, PreferNoSchedule, oder NoExecute sein. Bei Verwendung der AWS-CLI oder der API muss der Taint-Effekt jedoch NO_SCHEDULE, PREFER_NO_SCHEDULE oder NO_EXECUTE sein.

  • Für eine Knotengruppe sind maximal 50 Taints zulässig.

  • Wenn Taints, die mithilfe einer verwalteten Knotengruppe erstellt wurden, manuell von einem Knoten entfernt werden, fügt Amazon EKS die Taints nicht wieder zum Knoten hinzu. Dies gilt auch dann, wenn die Taints in der Konfiguration der verwalteten Knotengruppe angegeben sind.