Pod-Platzierung
In Kubernetes werden neu erstellte und nicht geplante Pods automatisch auf Knoten eingeplant, die ihren Anforderungen entsprechen. Wenn Ihr Cluster verschiedene Knotentypen umfasst, kann es wichtig sein, die Kontrolle darüber zu behalten, auf welchen Knoten die Pods eingeplant werden. Die Pod-Platzierung kann mit vier Werkzeugen gesteuert werden:
Zur Angabe von Informationen über einen Knoten werden diesem Knoten Beschriftungen zugewiesen. Eine Beschriftung kann ein Schlüssel oder ein Schlüssel-Wert-Paar sein.
Die Knotenaffinität wird auf einen Pod angewendet, um sicherzustellen, dass dieser Pod nur auf Knoten mit einer bestimmten Beschriftung ausgeführt wird.
Einem Knoten werden Taints zugewiesen, um zu verhindern, dass Pods auf diesem Knoten eingeplant werden.
Toleranzen werden auf einen Pod angewendet, damit dieser bestimmte Taints ignorieren kann.
Weitere Informationen zu Knotenbeschriftungen, Knotenaffinität, Taints und Toleranzen im Allgemeinen finden Sie in der Kubernetes-Dokumentation. Informationen zur Anwendung von Knotenaffinität und Toleranzen auf Pods in ArcGIS Enterprise on Kubernetes finden Sie unter Verwalten der Pod-Platzierung.
Vorteile
Knotenbeschriftungen und Knotenaffinität stellen sicher, dass ein Pod auf dem entsprechenden Knoten eingeplant wird. Taints und Toleranzen stellen sicher, dass auf einem Knoten nur die passenden Pods eingeplant werden. Durch deren kombinierten Verwendung können Sie die Isolation verbessern, die Ressourcenzuweisung optimieren und die Compliance-Anforderungen in Ihrem Kubernetes-Cluster effektiv erfüllen:
Isolieren von Arbeitslasten mit spezialisierten Anforderungen: Verwenden Sie Beschriftungen und Knotenaffinitätsregeln, um sicherzustellen, dass bestimmte Pods auf dedizierten Knoten geplant werden. Verwenden Sie Taints, um Knoten mit bestimmten Eigenschaften, z. B. hohen CPU- oder Speicheranforderungen, als dedizierte Knoten für ArcGIS-Arbeitslasten zu markieren. Wenden Sie Toleranzen auf Service-Pods an, um sicherzustellen, dass sie auf Knoten mit den erforderlichen Ressourcen geplant werden.
Optimieren der Ressourcenzuweisung: Wenden Sie Taints auf Knoten mit begrenzten Ressourcen an, um eine Überlastung der Ressourcen zu verhindern, und definieren Sie Toleranzen für Service-Pods, die den Ressourcenbeschränkungen auf diesen Knoten entsprechen. Kombinieren Sie Knotenaffinität mit Taints und Toleranzen, um sicherzustellen, dass Service-Pods nur auf Knoten geplant werden, die den entsprechenden Ressourcenanforderungen gerecht werden.
Auf Geolokalisierung basierende Planung: Für Anwendungen, die Datenlokalität oder die Einhaltung spezifischer Bestimmungen erfordern, verwenden Sie Knotenaffinität, um Service-Pods basierend auf der geographischen Position von Knoten zu planen. Wenden Sie Taints basierend auf der physischen Position von Knoten oder basierend auf Bestimmungen zur Datenhoheit an, und wenden Sie Toleranzen auf Service-Pods an, um sicherzustellen, dass sie auf Knoten geplant werden und mit den erforderlichen Positionsbeschränkungen kompatibel sind.
Automatische Skalierung verbessert die Verwendung von Knotenaffinität und Toleranzen, indem die Anzahl der Pods dynamisch an die Arbeitslastanforderungen angepasst wird. Durch diese dynamische Skalierung wird sichergestellt, dass Pods effizient auf Knoten geplant werden, die bestimmte Anforderungen erfüllen oder über die erforderlichen Ressourcen verfügen, wodurch die Ressourcenzuweisung optimiert wird. Durch Kombination von automatischer Skalierung mit Knotenaffinität und Kubernetes-toleranzen kann für -Cluster eine bessere Ressourcenauslastung, Performance und Skalierbarkeit erreicht werden. Dies ermöglicht die Anpassung an schwankende Arbeitslasten unter Einhaltung von Knotenbeschränkungen und -präferenzen. Weitere Informationen zur automatischen Skalierung finden Sie unter Service-Skalierung.
Verwalten der Pod-Platzierung
Es wird empfohlen, die Knotenbeschriftungen vor der Knotenaffinität anzuwenden. Dadurch wird verhindert, dass Pods im Status "Anstehend" verharren, wenn die Knoten noch nicht über die entsprechende Beschriftung verfügen. Ebenso wird empfohlen, Toleranzen anzuwenden, bevor die Knoten mit Taints gekennzeichnet werden. Auf diese Weise vermeiden Sie, dass Pods, die noch nicht über passende Toleranzen verfügen, unbeabsichtigt abgewiesen werden, was zu einer Unterbrechung Ihrer Services führen würde.
In den meisten Umgebungen können Sie die Arbeitslasten mithilfe von Knotenpools oder Knotengruppen gruppieren. Es wird empfohlen, Beschriftungen und Taints auf Gruppen von Knoten und nicht auf einzelne Knoten anzuwenden.
In ArcGIS Enterprise on Kubernetes können Sie mithilfe von ArcGIS Enterprise Manager die Knotenaffinität und Toleranzen für die folgenden Bereitstellungen festlegen:
Konfiguration der Knotenaffinität
Um eine Regel für die Knotenaffinität zu konfigurieren, legen Sie die folgenden Werte fest:
Typ: Der Typ der Knotenaffinität. Folgende Typen sind verfügbar:
Bevorzugt (
PreferredDuringSchedulingIgnoredDuringExecution): Der Pod wird bevorzugt auf einem Knoten geplant, der die Regel erfüllt.Erforderlich (
RequiredDuringSchedulingIgnoredDuringExecution): Der Pod muss auf einem Knoten geplant werden, der die Regel erfüllt.
Schlüssel: Der Schlüssel der Knotenbeschriftung oder -annotation, auf den die Regel zutreffen soll.
Operator: Der Operator für die Regel. Die folgenden Operatoren sind verfügbar:
In: Die Knotenbeschriftung oder -annotation muss in der Liste der angegebenen Werte enthalten sein.
Nicht in: Die Knotenbeschriftung oder -annotation darf nicht in der Liste der angegebenen Werte enthalten sein.
Ist vorhanden: Der Knoten muss die angegebene Beschriftung oder Annotation aufweisen.
Ist nicht vorhanden: Der Knoten darf die angegebene Beschriftung oder Annotation nicht aufweisen.
Wert: Die Liste der Werte, die mit der Knotenbeschriftung oder -annotation abgeglichen werden sollen. Nicht verfügbar, wenn der Operator Vorhanden oder Ist nicht vorhanden ausgewählt ist.
Konfiguration der Toleranzen
Um eine Toleranz zu konfigurieren, legen Sie die folgenden Werte fest:
Effekt: Der Taint-Effekt, dem die Toleranz entsprechen muss. Folgende Effekte sind verfügbar:
NoSchedule: Neue Pods werden nicht auf dem Knoten mit Taint geplant, wenn keine übereinstimmende Toleranz vorhanden ist.
PreferNoSchedule: Das Planen neuer Pods auf dem Knoten mit Taint ohne übereinstimmende Toleranz wird nach Möglichkeit vermieden, dies wird jedoch nicht garantiert.
Keine Ausführung :Alle Pods ohne passende Toleranz werden sofort abgewiesen, nachdem der Knoten mit einem Taint gekennzeichnet wurde. NoSchedule: Neue Pods werden nicht auf dem Knoten mit Taint geplant, wenn keine übereinstimmende Toleranz vorhanden ist.
Schlüssel: Der Schlüssel des Taint, mit dem die Toleranz übereinstimmen muss.
Operator: Der für die Toleranz zu verwendende Operator. Die folgenden Operatoren sind verfügbar:
Gleich: Der Pod toleriert einen Taint mit dem angegebenen Schlüssel und Wert.
Ist vorhanden: Der Pod toleriert jeden Taint mit dem angegebenen Schlüssel.
Wert: Der Wert des Taint, mit dem die Toleranz übereinstimmen muss, wenn für die Operation "Gleich" festgelegt ist. Nicht verfügbar, wenn der Operator Vorhanden ausgewählt ist.
Hinweis:
Raster-Analyse- und Notebook-Service-Arbeitslasten, die GPU-fähige Knoten ausführen müssen, benötigen spezifische Einstellungen für die Knotenaffinität und Toleranzen. Weitere Informationen zu diesen Einstellungen finden Sie unter Konfigurieren von GPU-fähigen Knoten für Raster-Analyse-Arbeitslasten und Anzeigen und Bearbeiten von Runtimes für Notebook-Service-Arbeitslasten.
Szenarien
Die folgenden Szenarien veranschaulichen, wie Ihre Organisation von der Verwaltung der Pod-Platzierung für Services profitieren kann.
Szenario 1: Saisonaler Anstieg des Datenverkehrs bei öffentlichen Kartenerstellungsservices
Eine öffentliche Organisation verzeichnet während eines örtlichen Festivals eine erhebliche Zunahme des Datenverkehrs. Beim Zugriff auf die Webkarte mit Informationen zur Veranstaltung kommt es zu Verzögerungen durch die hohe Nachfrage beim zugrunde liegenden Kartenservice. Um dieser Situation gerecht zu werden, geht der Organsiationsadministrator folgendermaßen vor:
Er fügt Knoten mit hohen CPU- und Speicherressourcen die Schlüssel/Wert-Beschriftung high-performance: true hinzu.
Er wendet Knotenaffinitätsregeln an, um das Planen der Kartenservice-Pods auf Knoten mit hohen CPU- und Speicherressourcen zu priorisieren. Dies stellt sicher, dass der Kartenservice dem Anstieg des Datenverkehrs gerecht werden kann:
Typ: Bevorzugt
Schlüssel: high-performance
Operator: Ist vorhanden
Wert: true
Er wendet eine Toleranz auf die Pods des kritischen Kartenservice an, sodass diese auf Knoten eingeplant werden können, die für Arbeitslasten mit hoher Performance gekennzeichnet sind.
Effekt: NoSchedule
Schlüssel: workload
Operator: Gleich
Wert: high-performance
Er wendet Taints auf Knoten mit hoher Performance mit der Kennzeichnung workload=high-performance:NoSchedule an, um zu verhindern, dass weniger kritische Pods ohne die entsprechende Toleranz auf dem Knoten eingeplant werden. Dadurch wird sichergestellt, dass auf den Knoten mit hoher Performance genügend Kapazität vorhanden ist, um die Pods für die mit dem Event verbundenen Services einzuplanen.
Szenario 2: Datenverarbeitung für die Umweltüberwachung
Eine Umweltbehörde führt eine Reihe von räumlichen Analysen durch, um Änderungen bei der Flächennutzung zu überwachen. Die Analyse erfordert beträchtliche Rechenressourcen, und die Behörde hat zu diesem Zweck dedizierte Knoten mit GPUs bereitgestellt. Um sicherzustellen, dass die räumliche Analyse effektiv ausgeführt wird, ohne mit anderen Services um Ressourcen zu konkurrieren, geht der Organisationsadministrator folgendermaßen vor:
Fügt den Knoten, für die die GPU aktiviert ist, die Schlüssel/Wert-Beschriftung gpu: true hinzu.
Er wendet Knotenaffinitätsregeln an, um die Analyse-Pods nur auf den GPU-Knoten einzuplanen:
Typ: Erforderlich
Schlüssel: gpu
Operator: In
Wert: true
Er wendet eine Toleranz auf die Analyse-Pods an, sodass diese auf den mit einem Taint versehenen GPU-Knoten eingeplant werden können:
Effekt: NoSchedule
Schlüssel: workload
Operator: Gleich
Wert: high-resource
Er wendet Taints auf GPU-Knoten mit workload=high-resource:NoSchedule an, um zu verhindern, dass weniger ressourcenintensive Pods ohne übereinstimmende Toleranz dort eingeplant werden. Dadurch wird sichergestellt, dass kostenintensive GPU-fähige Computer ausschließlich für die Analyse-Pods eingesetzt werden, die diese benötigen.
Szenario 3: Ressourcenoptimierung für freigegebene Feature-Services
Die GIS-Abteilung einer Stadt verfügt über zahlreiche Feature-Services, die zwar nicht intensiv genutzt werden, aber insgesamt eine einzelne Service-Bereitstellung belasten. Der Cluster umfasst Premium-Knoten, um eine garantierte Servicequalität für Services mit hoher Priorität sicherzustellen, sowie Knoten mit geringerer Ressourcenverfügbarkeit für Services mit niedriger Priorität. Um sicherzustellen, dass diese Feature-Services mit niedriger Priorität vorrangig auf den kostengünstigeren Knoten eingeplant werden, geht der Administrator der Organisation wie folgt vor:
Er konfiguriert die Knoten mit geringerer Ressourcenverfügbarkeit mit dem Schlüssel resource-constrained.
Er wendet Knotenaffinitätsregeln auf Feature-Service-Pods an, um die Planung für Knoten mit geringerer Ressourcenverfügbarkeit zu priorisieren:
Typ: Bevorzugt
Schlüssel: resource-constrained
Operator: DoesNotExist
Er wendet Toleranzen auf Feature-Service-Pods an, um sicherzustellen, dass diese trotz der Beschränkungen auf Knoten mit Taints geplant werden können:
Effekt: PreferNoSchedule
Schlüssel: resource-constrained
Operator: Ist vorhanden
Er weist Knoten mit geringerer Ressourcenverfügbarkeit mit resource-constrained:PreferNoSchedule Taints zu.
Szenario 4: Vermeidung von Unterbrechungen des Data Store während der Cluster-Skalierung
Eine Regierungsbehörde verzeichnet ein Service-Nutzungsmuster, bei dem Services tagsüber intensiv genutzt werden. Für dieses Muster ist eine große Anzahl von Cluster-Knoten erforderlich, um alle für diese Services benötigten Pod-Replikate zu unterstützen. Da die Services nachts nicht genutzt werden, möchte die Organisation die Anzahl der Knoten reduzieren, um die Cloud-Computing-Kosten zu senken. Das Beenden von Knoten, auf denen systemverwaltete Stateful-Data-Store-Pods ausgeführt werden, birgt jedoch das Risiko einer Unterbrechung von ArcGIS Enterprise. Um eine solche potenzielle Unterbrechung zu verhindern, geht der Organisationsadministrator folgendermaßen vor:
Er erstellt eine separate Knotengruppe.
Er fügt die Schlüssel/Wert-Beschreibung data-store: true jedem Knoten in der Gruppe zu.
Er wendet Knotenaffinitätsregeln an, um sicherzustellen, dass Data-Store-Pods für Knoten in dieser Gruppe geplant werden.
Typ: Erforderlich
Schlüssel: data-store
Operator: In
Wert: true
Er wendet Toleranzen auf Stateful-Data-Store-Pods an, damit diese auf den Data-Store-Knoten mit Taints ausgeführt werden können:
Effekt: NoSchedule
Schlüssel: workload
Operator: Gleich
Wert: data-store
Er wendet Taints auf Data-Store-Knoten mit der Kennzeichnung workload=data-store:NoSchedule an, um zu verhindern, dass Stateless-Pods ohne die entsprechende Toleranz auf dem Knoten eingeplant werden. Dadurch wird sichergestellt, dass auf den Data-Store-Knoten ausreichend Platz vorhanden ist, um alle Stateful-Data-Store-Pods einzuplanen.
Er skaliert die Data-Store-Knotengruppe nicht herunter, wenn nachts die Clusterknoten herunterskaliert werden. Da sich alle Stateful-Data-Store-Pods in dieser Knotengruppe befinden, sind sie von der Herunterskalierung der anderen Knotengruppen nicht betroffen.