你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文介绍如何使用 Azure Kubernetes 舰队管理器群集资源放置在集群群组中的多个群集上部署工作负载。
先决条件
- 如果没有 Azure 帐户,请在开始前创建一个免费帐户。
- 阅读资源传播概念概述,了解本文中使用的概念和术语。
- 需要包含一个中心群集和多个成员群集的舰队管理器。 如果没有,请参阅使用 Azure CLI 创建 Azure Kubernetes 舰队管理器资源并加入成员群集。
- 必须在中心群集中适当标记成员群集,以匹配所需的选择条件。 示例标签包括区域、环境、团队、可用性区域、节点可用性或想要的任何其他内容。
- 需要访问中心群集的 Kubernetes API。 如果没有访问权限,请参阅访问 Azure Kubernetes 舰队管理器中心群集的 Kubernetes API。
使用 ClusterResourcePlacement 将资源放置在成员群集上
对象 ClusterResourcePlacement
在中心群集上创建,用于将资源传播到成员群集。 它指定要传播的资源,以及选择成员群集时使用的放置策略。 此示例演示如何使用 ClusterResourcePlacement
具有放置策略的对象 PickAll
将命名空间传播到成员群集。
有关详细信息,请参阅使用 Azure Kubernetes 舰队管理器群集资源放置进行资源放置和开源的 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
使用创建的文件的名称代替 distribute-my-namespace.yaml
,通过发出 kubectl apply -f 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 文档。