Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В этой статье описывается, как использовать размещение ресурсов кластера Azure Kubernetes Fleet Manager для развертывания рабочих нагрузок в кластерах в флоте.
Предпосылки
- Если у вас нет аккаунта Azure, создайте бесплатную учетную запись перед началом.
- Ознакомьтесь с концептуальной обзором распространения ресурсов , чтобы понять понятия и терминологию, используемые в этой статье.
- Вам нужен диспетчер парка с кластером концентраторов и кластерами-членами. Если у вас его нет, см. статью "Создание ресурса Azure Kubernetes Fleet Manager" и присоединение кластеров участников с помощью Azure CLI.
- Кластеры-члены должны быть помечены соответствующим образом в кластере концентратора, чтобы соответствовать требуемым критериям выбора. Примеры меток включают регион, среду, группу, зоны доступности, доступность узлов или что-либо другое, что требуется.
- Вам нужен доступ к API Kubernetes кластера концентратора. При отсутствии доступа ознакомьтесь с документацией по доступу к API Kubernetes для узлового кластера Azure Kubernetes Fleet Manager.
Использование ClusterResourcePlacement для размещения ресурсов в кластерах-членах
Объект ClusterResourcePlacement
создается в кластере концентратора и используется для распространения ресурсов в кластеры-члены. Он указывает ресурсы для распространения и политики размещения, используемой при выборе кластеров-членов. В этом примере показано, как распространить пространство имен на кластеры-члены с помощью ClusterResourcePlacement
объекта с политикой PickAll
размещения.
Для получения дополнительной информации см. размещение ресурсов с использованием кластерного размещения ресурсов Azure Kubernetes Fleet Manager и открыто исходную документацию KubeFleet.
- Создайте пространство имен для размещения в кластерах-членах:
kubectl create namespace my-namespace
-
ClusterResourcePlacement
Создайте объект и примените его к кластеру концентратора Fleet Manager. В следующем примереClusterResourcePlacement
, именованныйdistribute-my-namespace
, используется для развертывания пространства именmy-namespace
во всех входящих кластерах сPickAll
политикой размещения.
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: distribute-my-namespace
spec:
resourceSelectors:
- group: ""
kind: Namespace
version: v1
name: my-namespace
policy:
placementType: PickAll
Примените это к кластеру концентратора Fleet Manager, используя kubectl apply -f distribute-my-namespace.yaml
, заменив его именем созданного вами файла вместо distribute-my-namespace.yaml
.
- Проверьте ход распространения ресурсов:
kubectl get clusterresourceplacement distribute-my-namespace
Ваш результат должен выглядеть подобно следующему примеру:
NAME GEN SCHEDULED SCHEDULEDGEN APPLIED APPLIEDGEN AGE
distribute-my-namespace 2 True 2 True 2 10s
- Просмотрите сведения о объекте размещения:
kubectl describe clusterresourceplacement distribute-my-namespace
Ваш результат должен выглядеть подобно следующему примеру:
Name: distribute-my-namespace
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
объект с именем distribute-my-namespace
:
kubectl delete clusterresourceplacement distribute-my-namespace
Связанный контент
Дополнительные сведения о распространении ресурсов см. в следующих ресурсах:
- Интеллектуальное размещение ресурсов Kubernetes между кластерами на основе свойств кластеров членов
- Управление вытеснениями и нарушением размещения ресурсов кластера.
- Определение стратегии развертывания для размещения ресурсов кластера.
- Часто задаваемые вопросы о размещении ресурсов кластера.
- Документация по KubeFleet с открытым кодом.
Azure Kubernetes Service