本文說明如何使用 Azure Kubernetes Fleet Manager 叢集資源放置,在車隊中跨叢集部署工作負載。
先決條件
- 如果您沒有 Azure 帳戶,請在開始之前建立 免費帳戶 。
- 請閱讀資源傳播的概念概觀,以了解本文中使用的概念和術語。
- 您需要一個具有中樞叢集和成員叢集的機群管理員。 如果沒有,請參閱使用 Azure CLI 建立 Azure Kubernetes 機群管理員資源並加入成員叢集。
- 成員叢集必須在中樞叢集中適當地標示,以符合所需的選取準則。 範例標籤包括區域、環境、小組、可用性區域、節點可用性,或您想要的任何其他項目。
- 您需要中樞叢集的 Kubernetes API 存取權。 如果您沒有存取權,請參閱存取 Azure Kubernetes 機群管理員中樞叢集的 Kubernetes API。
使用 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
發出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 命令加以刪除。 下列範例會刪除名為 distribute-my-namespace 的 ClusterResourcePlacement 物件:
kubectl delete clusterresourceplacement distribute-my-namespace
相關內容
若要深入了解資源傳播,請參閱下列資源: