Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird die ResourcePlacement API beschrieben, die eine differenzierte Kontrolle über Namespace-bezogene Kubernetes-Ressourcen über Membercluster mithilfe von Azure Kubernetes Fleet Manager ermöglicht.
Von Bedeutung
Azure Kubernetes Fleet Manager Preview-Features sind auf Self-Service-, Opt-In-Basis verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. Azure Kubernetes Fleet Manager Previews werden teilweise vom Kundensupport auf Best-Effort-Basis abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen.
Überblick
ResourcePlacement ist eine namespacebezogene API, die die dynamische Auswahl und die Multiclusterverteilung von Namespace-bezogenen Ressourcen ermöglicht. Es bietet eine differenzierte Kontrolle darüber, wie bestimmte Ressourcen in einem Namespace über Membercluster in einer Flotte verteilt werden.
Von Bedeutung
ResourcePlacement verwendet die placement.kubernetes-fleet.io/v1beta1-API-Version und befindet sich derzeit in der Vorschau. Einige in diesem Artikel gezeigte Funktionen, wie z. B. selectionScope in ClusterResourcePlacement, sind auch Teil der v1beta1-API und in der v1-API nicht verfügbar.
Wichtige Merkmale:
-
Namespacebereich: Sowohl das
ResourcePlacementObjekt als auch die von ihm verwalteten Ressourcen sind innerhalb desselben Namespaces vorhanden. - Selektiv: Kann bestimmte Ressourcen nach Typ, Name oder Bezeichnung anstelle vollständiger Namespaces ausrichten.
-
Deklarativ: Verwendet die gleichen Platzierungsmuster wie
ClusterResourcePlacementfür ein konsistentes Verhalten.
A ResourcePlacement besteht aus drei Kernkomponenten:
- Ressourcenauswahl: Definieren Sie, welche namespacebezogenen Ressourcen einbezogen werden sollen.
-
Platzierungsrichtlinie: Bestimmen Sie Zielcluster mithilfe der Strategien
PickAll,PickFixedoderPickN. - Rolloutstrategie: Steuern, wie Änderungen über ausgewählte Cluster verteilt werden.
Gründe für die Verwendung von ResourcePlacement
ResourcePlacement eignet sich ideal für Szenarien, die eine präzise Kontrolle über namespacebezogene Ressourcen erfordern:
- Selektive Ressourcenverteilung: Bereitstellen bestimmter ConfigMaps, Geheimer Schlüssel oder Dienste ohne Auswirkungen auf den gesamten Namespace.
- Umgebungen mit mehreren Mandanten: Zulassen, dass verschiedene Teams ihre Ressourcen unabhängig innerhalb freigegebener Namespaces verwalten können.
- Konfigurationsverwaltung: Verteilen von umgebungsspezifischen Konfigurationen in verschiedenen Clusterumgebungen.
- Compliance und Governance: Wenden Sie unterschiedliche Richtlinien auf verschiedene Ressourcentypen innerhalb desselben Namensraums an.
- Progressive Rollouts: Sichere Bereitstellung von Ressourcenupdates über Cluster hinweg mit Zero-Downtime-Strategien.
In Multiclusterumgebungen bestehen Workloads häufig aus clusterbezogenen und namespacebezogenen Ressourcen, die über verschiedene Cluster verteilt werden müssen. Während ClusterResourcePlacement (CRP) clusterweite Ressourcen effektiv, ganze Namespaces und deren Inhalte verarbeitet, gibt es Szenarien, in denen Sie präzisere Kontrolle über Namespace-bezogene Ressourcen innerhalb vorhandener Namespaces benötigen.
ResourcePlacement (RP) wurde entworfen, um diese Lücke zu schließen, indem Folgendes bereitgestellt wird:
- Namespaceweite Ressourcenverwaltung: Zielspezifische Ressourcen innerhalb eines Namespaces, ohne dass sich dies auf den gesamten Namespace auswirkt.
- Betriebsflexibilität: Teams können verschiedene Ressourcen innerhalb desselben Namespace unabhängig voneinander verwalten.
- Ergänzende Funktionalität: Arbeiten Sie mit CRP zusammen, um eine vollständige Multicluster-Ressourcenverwaltungslösung bereitzustellen.
Hinweis
ResourcePlacement kann zusammen mit ClusterResourcePlacement im reinen Namespace-Modus verwendet werden. Sie können z. B. CRP verwenden, um den Namespace bereitzustellen, während Sie RP für eine differenzierte Verwaltung bestimmter Ressourcen wie umgebungsspezifische ConfigMaps oder Secrets innerhalb dieses Namespaces verwenden.
Verwendungsmuster für den realen Namespace
Während CRP davon ausgeht, dass Namespaces Anwendungsgrenzen darstellen, sind reale Verwendungsmuster oft komplexer. Organisationen verwenden häufig Namespaces als Teamgrenzen und nicht als Anwendungsgrenzen, was zu mehreren Herausforderungen führt, die ResourcePlacement direkt behandelt werden:
Namespaces mit mehreren Anwendungen: In vielen Organisationen enthält ein einzelner Namespace mehrere unabhängige Anwendungen im Besitz desselben Teams. Diese Anwendungen könnten haben:
- Unterschiedliche Lebenszyklusanforderungen (eine Anwendung benötigt möglicherweise häufige Updates, während eine andere stabil bleibt).
- Verschiedene Clusterplatzierungsanforderungen (Entwicklung im Vergleich zu Produktionsanwendungen).
- Unabhängige Skalierung und Ressourcenanforderungen.
- Separate Compliance- oder Governanceanforderungen.
Individuelle Planungsentscheidungen: Viele Workloads, insbesondere KI/ML-Aufträge, erfordern individuelle Planungsentscheidungen:
- KI-Aufträge: Machine Learning-Workloads bestehen häufig aus kurzlebigen, ressourcenintensiven Aufträgen, die basierend auf der Verfügbarkeit von Clusterressourcen, der GPU-Verfügbarkeit oder der Datenlokalität geplant werden müssen.
- Batcharbeitslasten: Verschiedene Batchaufträge innerhalb desselben Namespaces können auf verschiedene Clustertypen basierend auf rechentechnischen Anforderungen ausgerichtet sein.
Vollständige Steuerung des Anwendungsteams: ResourcePlacement Bietet Anwendungsteams die direkte Kontrolle über ihre Ressourcenplatzierung, ohne dass ein Plattformteam eingreifen muss:
- Self-Service-Vorgänge: Teams können ihre eigenen Ressourcenverteilungsstrategien verwalten.
- Unabhängige Bereitstellungszyklen: Verschiedene Anwendungen innerhalb eines Namespaces können unabhängige Rolloutzeitpläne haben.
- Granulare Überschreibungsfunktionen: Teams können Ressourcenkonfigurationen pro Cluster anpassen, ohne dass dies Auswirkungen auf andere Anwendungen im Namespace hat.
Dieser granulare Ansatz stellt sicher, dass ResourcePlacement sich an verschiedene Organisationsstrukturen und Arbeitsauslastungsmuster anpassen kann, während die Einfachheit und Leistungsfähigkeit des Fleet-Scheduling-Frameworks erhalten bleibt.
Wichtige Unterschiede zwischen ResourcePlacement und ClusterResourcePlacement
Die folgende Tabelle hebt die wichtigsten Unterschiede zwischen ResourcePlacement und ClusterResourcePlacement hervor.
| Aspekt | ResourcePlacement (RP) | ClusterResourcePlacement (CRP) |
|---|---|---|
| Scope | Nur auf Namespace-Ebene verfügbare Ressourcen | Clusterweite Ressourcen (insbesondere Namespaces und deren Inhalt) |
| Ressource | API-Objekt im Namespace-Bereich | Clusterbereichs-API-Objekt |
| Auswahlgrenze | Beschränkt auf Ressourcen innerhalb desselben Namespaces wie das RP | Kann eine beliebige clusterweite Ressource auswählen |
| Typische Anwendungsfälle | AI/ML-Aufträge, einzelne Workloads, spezifische ConfigMaps/Secrets, die unabhängige Platzierungsentscheidungen benötigen | Anwendungsbundle, ganze Namespaces, clusterweite Richtlinien |
| Teamverantwortung | Kann von Namespacebesitzern/Entwicklern verwaltet werden | In der Regel von Plattformoperatoren verwaltet |
Sowohl ResourcePlacement als auch ClusterResourcePlacement teilen die gleichen Kernfunktionen in Bezug auf alle anderen Aspekte, die nicht in der Unterschiedstabelle aufgeführt sind.
Arbeiten mit ClusterResourcePlacement
ResourcePlacement ist so konzipiert, dass sie in Abstimmung mit ClusterResourcePlacement (CRP) arbeitet, um eine vollständige Multicluster-Ressourcenverwaltungslösung bereitzustellen. Das Verständnis dieser Beziehung ist entscheidend für ein effektives Flottenmanagement.
Voraussetzungen für Namespaces
Von Bedeutung
ResourcePlacement kann namespacenbezogene Ressourcen nur in Clustern platzieren, die bereits über den Ziel-Namespace verfügen. Wir empfehlen die Verwendung von ClusterResourcePlacement für die Namespace-Einrichtung.
Typischer Workflow:
-
Plattformadministrator: Verwendet
ClusterResourcePlacement, um Namespaces in der gesamten Flotte bereitzustellen. -
Anwendungsteams: Verwenden Sie
ResourcePlacement, um bestimmte Ressourcen innerhalb dieser etablierten Namespaces zu verwalten.
Die folgenden Beispiele zeigen, wie CRP und RP koordiniert werden:
Hinweis
In den folgenden Beispielen wird die placement.kubernetes-fleet.io/v1beta1 API-Version verwendet. Das selectionScope: NamespaceOnly Feld ist ein Vorschaufeature, das in v1beta1 verfügbar ist und in der v1-API nicht verfügbar ist.
Plattformadministrator: Erstellen Sie zuerst den Namespace mithilfe von ClusterResourcePlacement:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: app-namespace-crp
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: my-app
version: v1
selectionScope: NamespaceOnly # only namespace itself is placed, no resources within the namespace
policy:
placementType: PickAll # If placement type is not PickAll, the application teams needs to know what are the clusters they can place their applications.
Anwendungsteam: Verwalten Sie dann bestimmte Ressourcen im Namespace mithilfe von ResourcePlacement:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourcePlacement
metadata:
name: app-configs-rp
namespace: my-app
spec:
resourceSelectors:
- group: ""
kind: ConfigMap
version: v1
labelSelector:
matchLabels:
app: my-application
policy:
placementType: PickFixed
clusterNames:
- cluster1
- cluster2
Bewährte Methoden
Befolgen Sie bei Verwendung von ResourcePlacement mit ClusterResourcePlacement, die folgenden bewährten Methoden:
-
Richten Sie zunächst Namespaces ein: Stellen Sie immer sicher, dass Namespaces über CRP bereitgestellt werden, bevor Sie Objekte erstellen
ResourcePlacement. - Überwachen von Abhängigkeiten: Verwenden Sie die Flottenüberwachung, um sicherzustellen, dass CRPs auf Namespaceebene gesund sind, bevor abhängige RPs bereitgestellt werden.
- Richtlinien koordinieren: CRP- und RP-Platzierungsrichtlinien anpassen, um Konflikte zu vermeiden (z. B. wenn CRP Namespaces auf den Clustern A, B, C platziert, kann RP auf eine beliebige Teilmenge dieser Cluster abzielen).
- Teamgrenzen: Verwenden Sie CRP für plattformverwaltete Ressourcen (Namespaces, RBAC) und RP für anwendungsverwaltete Ressourcen (App-Konfigurationen, geheime Schlüssel).
Durch diesen koordinierten Ansatz wird sichergestellt, dass ResourcePlacement die Flexibilität bietet, die Teams benötigen, während die grundlegende Infrastruktur, die von Plattformbetreibern verwaltet wird, beibehalten wird.
Ressourcenauswahl, Platzierung und Rollout
ResourcePlacement verwendet die gleichen Platzierungsmuster wie ClusterResourcePlacement:
-
Platzierungstypen:
PickAll,PickFixedundPickNStrategien funktionieren für beide APIs identisch. - Rolloutstrategie: Steuern Sie, wie Updates sich über Cluster ausbreiten, mit denselben rollenden Update-Mechanismen.
-
Status und Observability: Überwachen Sie den Bereitstellungsfortschritt mithilfe von
kubectl describe resourceplacement <name> -n <namespace>. - Erweiterte Features: Verwendung von Tolerationen, Ressourcenüberschreibungen, Topologie-Spreadeinschränkungen und Affinitätsregeln.
Der Hauptunterschied liegt im Ressourcenauswahlbereich . Während ClusterResourcePlacement typischerweise ganze Namespaces und deren Inhalte auswählt, bietet ResourcePlacement eine differenzierte Kontrolle über einzelne ressourcenbezogene Namespaces.
Ausführliche Informationen zu diesen Funktionen finden Sie in der ClusterResourcePlacement-Dokumentation.
Nächste Schritte
- Verwenden Sie ResourcePlacement, um Namespace-gebundene Ressourcen über mehrere Cluster bereitzustellen
- Verwenden von ClusterResourcePlacement zum Bereitstellen von clusterbezogenen Ressourcen
- Platzierung von Multiclusterressourcen mithilfe der Clusterressourcenplatzierung
- Verwenden Sie Überschreibungen, um Namespace-spezifische Ressourcen anzupassen
- Definieren einer Rolloutstrategie für die Ressourcenplatzierung
- Häufig gestellte Fragen zur Platzierung von Clusterressourcen