Распространение ресурсов из кластера Концентратора Azure Kubernetes Fleet Manager в кластеры-члены
В этой статье описывается распространение ресурсов из кластера концентратора Azure Kubernetes Fleet Manager (Kubernetes Fleet) в кластеры-члены.
Необходимые компоненты
- Если у вас еще нет подписки Azure, создайте бесплатную учетную запись Azure, прежде чем начинать работу.
- Ознакомьтесь с концептуальной обзором распространения ресурсов, чтобы понять понятия и терминологию, используемые в этой статье.
- Вам нужен ресурс Kubernetes Fleet с кластером концентраторов и кластерами-членами. Если у вас его нет, см. статью "Создание ресурса Azure Kubernetes Fleet Manager" и присоединение кластеров участников с помощью Azure CLI.
- Кластеры-члены должны быть помечены соответствующим образом в кластере концентратора, чтобы соответствовать требуемым критериям выбора. Примеры меток включают регион, среду, группу, зоны доступности, доступность узлов или что-либо другое, что требуется.
- Вам нужен доступ к API Kubernetes кластера концентратора. Если у вас нет доступа, ознакомьтесь с API Kubernetes для кластера Концентратора Azure Kubernetes Fleet Manager.
Использование API ClusterResourcePlacement для распространения ресурсов в кластеры-члены
ClusterResourcePlacement
Объект API создается в кластере концентратора и используется для распространения ресурсов в кластеры-члены. Он указывает ресурсы для распространения и политики размещения, используемой при выборе кластеров-членов. В этом примере показано, как распространить пространство имен на кластеры-члены с помощью ClusterResourcePlacement
объекта API с политикой PickAll
размещения.
Дополнительные сведения см. в статье о размещении ресурсов Kubernetes из концентратора в кластеры-члены и документацию по Kubernetes с открытым кодом.
Создайте пространство имен для размещения в кластерах-членах с помощью
kubectl create namespace
команды. В следующем примере создается пространство имен с именемmy-namespace
:kubectl create namespace my-namespace
ClusterResourcePlacement
Создайте объект API в кластере концентратора, чтобы распространить пространство имен в кластеры-члены и развернуть его с помощьюkubectl apply -f
команды. В следующем примереClusterResourcePlacement
создается объект с именемcrp
и используетсяmy-namespace
пространство имен сPickAll
политикой размещения для распространения пространства имен ко всем кластерам членов: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
Проверьте ход распространения ресурсов с помощью
kubectl get clusterresourceplacement
команды. В следующем примере проверяется состояниеClusterResourcePlacement
объекта с именемcrp
:kubectl get clusterresourceplacement crp
Результат должен выглядеть примерно следующим образом:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE crp 2 True 2 True 2 10s
Просмотрите сведения об
crp
объектеkubectl describe crp
с помощью команды. В следующем примере описываетсяClusterResourcePlacement
объект с именемcrp
:kubectl describe clusterresourceplacement crp
Результат должен выглядеть примерно следующим образом:
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
Очистка ресурсов
Если вы больше не хотите использовать ClusterResourcePlacement
объект, его можно удалить с помощью kubectl delete
команды. В следующем примере удаляется ClusterResourcePlacement
объект с именем crp
:
kubectl delete clusterresourceplacement crp
Связанный контент
Дополнительные сведения о распространении ресурсов см. в следующих ресурсах:
Azure Kubernetes Service