Propagacja zasobów z klastra koncentratora usługi Azure Kubernetes Fleet Manager do klastrów członkowskich
W tym artykule opisano sposób propagowania zasobów z klastra koncentratora Usługi Azure Kubernetes Fleet Manager (Kubernetes Fleet) do klastrów członkowskich.
Wymagania wstępne
- Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.
- Zapoznaj się z koncepcyjnym omówieniem propagacji zasobów, aby zrozumieć pojęcia i terminologię używaną w tym artykule.
- Potrzebny jest zasób Rozwiązania Kubernetes Fleet z klastrem koncentratora i klastrami członkowskimi. Jeśli go nie masz, zobacz Create an Azure Kubernetes Fleet Manager resource and join member clusters by using the Azure CLI (Tworzenie zasobu usługi Azure Kubernetes Fleet Manager i dołączanie do klastrów członkowskich przy użyciu interfejsu wiersza polecenia platformy Azure).
- Klastry członkowskie muszą być odpowiednio oznaczone w klastrze koncentratora, aby spełniały żądane kryteria wyboru. Przykładowe etykiety obejmują region, środowisko, zespół, strefy dostępności, dostępność węzła lub dowolne inne elementy.
- Potrzebujesz dostępu do interfejsu API kubernetes klastra koncentratora. Jeśli nie masz dostępu, zobacz Access the Kubernetes API for an Azure Kubernetes Fleet Manager hub cluster (Uzyskiwanie dostępu do interfejsu API kubernetes dla klastra centrum usługi Azure Kubernetes Fleet Manager).
Używanie interfejsu API ClusterResourcePlacement do propagowania zasobów do klastrów członkowskich
Obiekt ClusterResourcePlacement
interfejsu API jest tworzony w klastrze centrum i służy do propagowania zasobów do klastrów członkowskich. Określa zasoby, które mają być propagowane, oraz zasady umieszczania, które mają być używane podczas wybierania klastrów członkowskich. W tym przykładzie pokazano, jak propagować przestrzeń nazw do klastrów członkowskich przy użyciu obiektu interfejsu ClusterResourcePlacement
API z zasadami umieszczania PickAll
.
Aby uzyskać więcej informacji, zobacz Umieszczanie zasobów Kubernetes z klastra koncentratora na klastry członkowskie i dokumentację rozwiązania Kubernetes Fleet typu open source.
Utwórz przestrzeń nazw do umieszczania w klastrach składowych przy użyciu
kubectl create namespace
polecenia . Poniższy przykład tworzy przestrzeń nazw o nazwiemy-namespace
:kubectl create namespace my-namespace
ClusterResourcePlacement
Utwórz obiekt interfejsu API w klastrze centrum, aby propagować przestrzeń nazw do klastrów członkowskich i wdrożyć go za pomocąkubectl apply -f
polecenia . W poniższym przykładzieClusterResourcePlacement
tworzony jest obiekt o nazwiecrp
i używamy-namespace
przestrzeni nazw z zasadamiPickAll
umieszczania do propagowania przestrzeni nazw do wszystkich klastrów członkowskich:kubectl apply -f - <<EOF apiVersion: placement.kubernetes-fleet.io/v1 kind: ClusterResourcePlacement metadata: name: crp spec: resourceSelectors: - group: "" kind: Namespace version: v1 name: my-namespace policy: placementType: PickAll EOF
Sprawdź postęp propagacji zasobu przy użyciu
kubectl get clusterresourceplacement
polecenia . Poniższy przykład sprawdza stanClusterResourcePlacement
obiektu o nazwiecrp
:kubectl get clusterresourceplacement crp
Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE crp 2 True 2 True 2 10s
Wyświetl szczegóły
crp
obiektu przy użyciukubectl describe crp
polecenia . W poniższym przykładzieClusterResourcePlacement
opisano obiekt o nazwiecrp
:kubectl describe clusterresourceplacement crp
Dane wyjściowe powinny wyglądać mniej więcej tak jak w tym przykładzie:
Name: crp Namespace: Labels: <none> Annotations: <none> API Version: placement.kubernetes-fleet.io/v1 Kind: ClusterResourcePlacement Metadata: Creation Timestamp: 2024-04-01T18:55:31Z Finalizers: kubernetes-fleet.io/crp-cleanup kubernetes-fleet.io/scheduler-cleanup Generation: 2 Resource Version: 6949 UID: 815b1d81-61ae-4fb1-a2b1-06794be3f986 Spec: Policy: Placement Type: PickAll Resource Selectors: Group: Kind: Namespace Name: my-namespace Version: v1 Revision History Limit: 10 Strategy: Type: RollingUpdate Status: Conditions: Last Transition Time: 2024-04-01T18:55:31Z Message: found all the clusters needed as specified by the scheduling policy Observed Generation: 2 Reason: SchedulingPolicyFulfilled Status: True Type: ClusterResourcePlacementScheduled Last Transition Time: 2024-04-01T18:55:36Z Message: All 3 cluster(s) are synchronized to the latest resources on the hub cluster Observed Generation: 2 Reason: SynchronizeSucceeded Status: True Type: ClusterResourcePlacementSynchronized Last Transition Time: 2024-04-01T18:55:36Z Message: Successfully applied resources to 3 member clusters Observed Generation: 2 Reason: ApplySucceeded Status: True Type: ClusterResourcePlacementApplied Observed Resource Index: 0 Placement Statuses: Cluster Name: membercluster1 Conditions: Last Transition Time: 2024-04-01T18:55:31Z Message: Successfully scheduled resources for placement in membercluster1 (affinity score: 0, topology spread score: 0): picked by scheduling policy Observed Generation: 2 Reason: ScheduleSucceeded Status: True Type: ResourceScheduled Last Transition Time: 2024-04-01T18:55:36Z Message: Successfully Synchronized work(s) for placement Observed Generation: 2 Reason: WorkSynchronizeSucceeded Status: True Type: WorkSynchronized Last Transition Time: 2024-04-01T18:55:36Z Message: Successfully applied resources Observed Generation: 2 Reason: ApplySucceeded Status: True Type: ResourceApplied Cluster Name: membercluster2 Conditions: Last Transition Time: 2024-04-01T18:55:31Z Message: Successfully scheduled resources for placement in membercluster2 (affinity score: 0, topology spread score: 0): picked by scheduling policy Observed Generation: 2 Reason: ScheduleSucceeded Status: True Type: ResourceScheduled Last Transition Time: 2024-04-01T18:55:36Z Message: Successfully Synchronized work(s) for placement Observed Generation: 2 Reason: WorkSynchronizeSucceeded Status: True Type: WorkSynchronized Last Transition Time: 2024-04-01T18:55:36Z Message: Successfully applied resources Observed Generation: 2 Reason: ApplySucceeded Status: True Type: ResourceApplied Cluster Name: membercluster3 Conditions: Last Transition Time: 2024-04-01T18:55:31Z Message: Successfully scheduled resources for placement in membercluster3 (affinity score: 0, topology spread score: 0): picked by scheduling policy Observed Generation: 2 Reason: ScheduleSucceeded Status: True Type: ResourceScheduled Last Transition Time: 2024-04-01T18:55:36Z Message: Successfully Synchronized work(s) for placement Observed Generation: 2 Reason: WorkSynchronizeSucceeded Status: True Type: WorkSynchronized Last Transition Time: 2024-04-01T18:55:36Z Message: Successfully applied resources Observed Generation: 2 Reason: ApplySucceeded Status: True Type: ResourceApplied Selected Resources: Kind: Namespace Name: my-namespace Version: v1 Events: Type Reason Age From Message ---- ------ ---- ---- ------- Normal PlacementScheduleSuccess 108s cluster-resource-placement-controller Successfully scheduled the placement Normal PlacementSyncSuccess 103s cluster-resource-placement-controller Successfully synchronized the placement Normal PlacementRolloutCompleted 103s cluster-resource-placement-controller Resources have been applied to the selected clusters
Czyszczenie zasobów
Jeśli nie chcesz już używać ClusterResourcePlacement
obiektu, możesz go usunąć za pomocą kubectl delete
polecenia . Poniższy przykład usuwa ClusterResourcePlacement
obiekt o nazwie crp
:
kubectl delete clusterresourceplacement crp
Powiązana zawartość
Aby dowiedzieć się więcej na temat propagacji zasobów, zobacz następujące zasoby:
Azure Kubernetes Service