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.
Administratoren, die die Clusterressourcenplatzierung (Cluster Resource Placement, CRP) von Fleet Manager verwenden, können feststellen, dass sie Ressourcen entfernen müssen, die zuvor auf Mitgliedsclustern platziert wurden, und gleichzeitig sicherstellen, dass wichtige Ressourcenplatzierungen nicht unterbrochen werden.
In diesem Artikel erfahren Sie, wie Sie fleet Manager ClusterResourcePlacementEviction und ClusterResourcePlacementDisruptionBudget Objekte verwenden können, um diese Ziele zu erreichen.
Hinweis
Wenn Sie noch nicht mit der Clusterressourcenplatzierung von Fleet Manager (CRP) vertraut sind, lesen Sie die konzeptionelle Übersicht über die Ressourcenplatzierung , bevor Sie diesen Artikel lesen.
Von Bedeutung
Previewfunktionen von Azure Kubernetes Fleet Manager sind auf Self-Service-Basis per Aktivierung verfügbar. Vorschauversionen werden „im Istzustand“ und „wie verfügbar“ bereitgestellt und sind von den Service Level Agreements und der eingeschränkten Garantie ausgeschlossen. Vorschauversionen von Azure Kubernetes Fleet Manager sind auf Best-Effort-Basis teilweise durch den Kundensupport abgedeckt. Daher sind diese Funktionen nicht für die Verwendung in der Produktion vorgesehen.
Unsere Datenebenenvorschauen werden über unsere v1beta1-API veröffentlicht. Wenn keine Vorschauobjekte angezeigt werden, überprüfen Sie, ob Sie die v1beta1-API anfordern, wenn Sie mit dem Fleet Manager-Hubcluster interagieren.
Entfernen von platzierten Ressourcen (Vorschau)
Ein ClusterResourcePlacementEviction Objekt wird verwendet, um Ressourcen aus einem Mitgliedscluster zu entfernen, sobald die Ressourcen vom Fleet Manager-Hubcluster übertragen wurden.
Zum erfolgreichen Auslagern von Ressourcen aus einem Cluster müssen Sie Folgendes angeben:
- Der Name des
ClusterResourcePlacementObjekts, das Ressourcen an den Zielcluster verteilt hat. - Der Name des Zielclusters, aus dem ressourcen entfernt werden müssen.
Sie können für das Entfernen die Richtlinien PickAll und PickN der Clusterressourcenplatzierung verwenden. PickedFixed wird nicht unterstützt, da Sie die Zielcluster bearbeiten und die CRP erneut anwenden können.
Hinweis
Entfernung garantiert nicht, dass Ressourcen nicht erneut vom Flottenplaner an einen Mitgliedscluster verteilt werden. Sie müssenTaints anwenden, um zu verhindern, dass der Flottenplaner wieder einen bestimmten Cluster auswählt.
Betrachten Sie das folgende Beispiel-CRP.
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacement
metadata:
name: crp-app-sample
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: test-namespace
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- labelSelector:
matchLabels:
fleet.azure.com/location: westus
Nach der Anwendung dieses CRP können wir den Platzierungsstatus überprüfen , um zu bestimmen, für welche Cluster die Ressourcen bereitgestellt werden.
Angenommen, die Platzierung hat die beiden Cluster member-cluster-01 und member-cluster-02 ausgewählt, aber Sie möchten, dass die Ressourcen nicht in member-cluster-02 bereitgestellt werden und beschließen daher, sie zu entfernen.
Erstellen Sie einen
NoSchedule-Taint, um die Platzierungsanforderungen für den Mitgliedscluster zu blockieren. Weitere Informationen zur Verwendung von Taints finden Sie in der Dokumentation zu den Taints.apiVersion: placement.kubernetes-fleet.io/v1beta1 kind: MemberCluster metadata: name: member-cluster-02 spec: identity: name: fleet-member-agent-cluster-2 kind: ServiceAccount namespace: fleet-system apiGroup: "" taints: - key: any-key value: any-value effect: NoScheduleErstellen Sie als Nächstes eine
ClusterResourcePlacementEviction, und wenden Sie sie an.apiVersion: placement.kubernetes-fleet.io/v1beta1 kind: ClusterResourcePlacementEviction metadata: name: eviction-sample spec: placementName: crp-app-sample clusterName: member-cluster-02Überprüfen Sie, ob die angegebenen Ressourcen aus dem
member-cluster-02Cluster entfernt werden:kubectl get crpe eviction-sampleDies führt zu der folgenden Ausgabe, wobei
EXECUTEDTruezeigt.NAME VALID EXECUTED test-eviction True True
Jetzt verstehen Sie, wie Sie die Entfernung von platzierten Ressourcen aus Clustern erzwingen, und sehen wir uns an, wie Sie wichtige Ressourcen vor Löschung schützen können.
Schutz vor Vertreibung (Vorschau)
Das ClusterResourcePlacementDisruptionBudget Objekt schützt vor freiwilligen Unterbrechungen, die auftreten, wenn ein ClusterResourcePlacementEviction Objekt gegen eine platzierte Ressource angewendet wird. Unfreiwillige Störungen sind nicht geschützt.
Für die oben in diesem Artikel gezeigte Beispiel-Clusterressourcenplatzierung können Sie ein Budgetobjekt für Platzierungsunterbrechungen wie folgt definieren.
Der Name des Unterbrechungsbudgets muss mit dem CRP übereinstimmen.
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ClusterResourcePlacementDisruptionBudget
metadata:
name: crp-app-sample
spec:
minAvailable: 1
Sie können eines der folgenden beiden sich gegenseitig ausschließenden Felder in der Spezifikation angeben:
- maxUnavailable: Die maximale Anzahl von Clustern, in denen eine Platzierung aufgrund einer beliebigen Form von Unterbrechungen nicht verfügbar sein kann.
- minAvailable: Die Mindestanzahl der Cluster, in denen Platzierungen trotz jeglicher Form von Unterbrechungen verfügbar sind.
Beide Felder können entweder eine absolute Anzahl von Clustern als ganze Zahl oder als Prozentsatz der Gesamtzahl der Cluster in der Flotte sein.
Wenn Sie ein Unterbrechungsbudget für eine bestimmte ClusterResourcePlacement Richtlinie angeben, können Sie sich auf die folgende Supportmatrix beziehen:
| CRP-Richtlinie | minAvailable (ganze Zahl) |
minAvailable (%) |
maxUnavailable (ganze Zahl) |
MaxUnavailable (%) |
|---|---|---|---|---|
PickFixed |
❌ | ❌ | ❌ | ❌ |
PickAll |
✅ | ❌ | ❌ | ❌ |
PickN |
✅ | ✅ | ✅ | ✅ |
Hinweis
Wenn Sie ein ungültiges Unterbrechungsbudgetobjekt für eine Platzierung erstellen, führen alle Entfernungsversuche zu Fehlern.
Überprüfen, ob die Zwangsräumung blockiert ist
Sie können wie folgt überprüfen, ob ein konfiguriertes Unterbrechungsbudget eine Entfernung blockiert.
kubectl get crpe eviction-sample
Beachten Sie, dass das Feld EXECUTED False anzeigt, was angibt, dass die Entfernung nicht angewendet wurde.
NAME VALID EXECUTED
test-eviction True False
Um zu bestätigen, dass das Unterbrechungsbudget die Entfernung blockiert hat, geben Sie denselben Befehl kubectl aus und fügen -o yaml hinzu. Der message-Wert zeigt das Unterbrechungsbudget an, das die Entfernung blockiert hat.
status:
conditions:
- lastTransitionTime: "2025-01-21T15:52:29Z"
message: Eviction is valid
observedGeneration: 1
reason: ClusterResourcePlacementEvictionValid
status: "True"
type: Valid
- lastTransitionTime: "2025-01-21T15:52:29Z"
message: 'Eviction is blocked by specified ClusterResourcePlacementDisruptionBudget,
availablePlacements: 1, totalPlacements: 1'
observedGeneration: 1
reason: ClusterResourcePlacementEvictionNotExecuted
status: "False"
type: Executed
Unfreiwillige Unterbrechung
Budgets für Platzierungsstörungen schützen nicht vor unfreiwilligen Störungen. Beispiele für unfreiwillige Unterbrechungen sind:
- Entfernen von Ressourcen aus einem Mitgliedscluster durch den Fleet Manager Scheduler aufgrund von Planungsrichtlinienänderungen.
- Manuelles Löschen von Workloadressourcen, die in einem Mitgliedscluster ausgeführt werden (nicht über eine Entfernung oder eine aktualisierte CRP)
- Manuelles Löschen eines
ClusterResourceBindingObjekts, bei dem es sich um eine interne Ressource handelt, die die Platzierung von Ressourcen in einem Membercluster darstellt. - Workloads, die aufgrund falscher Konfiguration oder clusterbezogener Probleme nicht ordnungsgemäß auf einem Membercluster ausgeführt werden.