适用于: ✔️具有中心群集的 Fleet Manager
使用 Azure Kubernetes Fleet Manager 时,了解资源的状态ClusterResourcePlacement对于监视部署进度和故障排除问题至关重要。
使用 Azure Kubernetes Fleet Manager 时,了解资源的状态ResourcePlacement对于监视部署进度和故障排除问题至关重要。
先决条件
- 你有一个具有中心群集和一个或多个成员群集的机群管理器。 如果没有,请参阅 创建 Azure Kubernetes Fleet Manager 资源并加入成员群集。
- 有权访问 Fleet Manager 中心群集。 有关详细信息,请参阅 访问 Azure Kubernetes Fleet Manager 中心群集的 Kubernetes API。
- 您已部署至少一个
ClusterResourcePlacement,用于分发您的资源。 如果没有,请参阅 使用群集资源放置在多个群集之间部署工作负载。
- 部署了至少一个 ResourcePlacement API 对象,将资源放入机群中。 如果没有,请参阅 使用群集资源放置在多个群集之间部署工作负载。
放置状态结构的概述
对象 ClusterResourcePlacement 不仅包含有关放置的描述性规范,还包含放置操作的状态。
对象 ResourcePlacement 不仅包含有关放置的描述性规范,还包含放置操作的状态。
状态部分提供有关以下内容的详细信息:
- 通过条件表示的总体放置状态
- 根据位置选择的资源
- 每个群集的放置状态通过条件来表达
-
Failed、drifted和diffed每个群集中的位置
若要查看放置状态,请使用以下命令:
kubectl describe clusterresourceplacement <placement-name>
kubectl describe resourceplacement <placement-name> -n <namespace-name>
若要获取原始 YAML 输出,请使用以下命令:
kubectl get clusterresourceplacement <placement-name> -o yaml
kubectl get resourceplacement <placement-name> -n <namespace-name> -o yaml
顶级状态字段
状态部分包含以下顶级字段:
- selectedResources:由部署选择的资源列表
- 条件:总体放置条件数组
- observedResourceIndex:当前资源快照的索引
- placementStatuses:每个群集的放置状态信息
以下部分将详细检查每个字段。
所选资源
该 selectedResources 字段列出选择器所选择的所有资源。 使用此字段检查投放中是否包含预期的资源。 下面是一个示例:
selectedResources:
- kind: Namespace
name: test
version: v1
- kind: ConfigMap
name: test-config
namespace: test
version: v1
envelope:
name: example-envelope
namespace: test
type: ResourceEnvelope
- kind: Deployment
name: web-app
namespace: test
group: apps
version: v1
- kind: Service
name: web-service
namespace: test
version: v1
- kind: Secret
name: app-secrets
namespace: test
version: v1
selectedResources:
- kind: ConfigMap
name: test-config
version: v1
envelope:
name: example-envelope
namespace: test
type: ResourceEnvelope
- kind: Deployment
name: web-app
group: apps
version: v1
- kind: Service
name: web-service
version: v1
- kind: Secret
name: app-secrets
version: v1
每个资源条目包括:
- 群组:API 群组(为核心资源时为空)
-
版本:API 版本(例如,
v1)v1beta1 - kind:资源类型
- 名称:资源名称
- 命名空间:命名空间(用于命名空间中的资源)
-
信封:如果资源包装在信封中,则还会提供信封元数据,其中包括:
- 名称:信封的名称
- 命名空间:信封的命名空间
-
类型:信封的类型(例如
ResourceEnvelope)
放置条件
该 conditions 数组提供了有关整个布局的高级状态信息。 每个条件都遵循 Kubernetes 通用定义,该定义具有以下标准字段:
- 类型:条件类型(以下部分所述)。
-
状态:
True、False或Unknown。 - 原因:条件的简短原因代码。
- 消息:人工可读说明。
- lastTransitionTime:条件上次更改时。
- observedGeneration:设置该条件时部署的代次。
ClusterResourcePlacement 条件类型
以下条件类型可用于 ClusterResourcePlacement:
集群资源下发已排程
ResourcePlacement 条件类型
以下条件类型可用于 ResourcePlacement:
资源部署已安排
指示放置是否成功安排至目标集群。
- True:根据放置策略选择所有必需的群集。
- False:计划失败(例如,群集可用不足)。
- 未知:调度决策尚待确定。
conditions:
- type: ClusterResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
群集资源定位展开已启动
资源定位部署已启动
显示是否在所选群集中开始部署。
- True:资源已开始部署到预定群集。
- False:尚未启动推出。
- 未知:发布决定待定。
conditions:
- type: ClusterResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 3 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 3 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
群集资源放置被覆盖
ResourcePlacementOverridden
指示是否成功应用资源替代。
- True:处理所有适用的替代。
- False:某些替代无法应用。
- 未知:覆盖处理正在等待。
conditions:
- type: ClusterResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
ClusterResourcePlacementWorkSynchronized
资源放置工作同步
指示进程是否在中心群集的每个群集命名空间中创建工作对象。
- True:所有工作对象都已同步。
- False:工作同步失败或不完整。
- 未知:作业同步待处理。
conditions:
- type: ClusterResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:23:43Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:23:43Z"
observedGeneration: 5
ClusterResourcePlacementApplied
资源定位已应用
指示是否将所有资源成功应用于成员群集。
- True:所有资源均已成功应用到所有目标集群。
-
False:某些资源无法应用(检查
failedPlacements)。 - 未知:应用操作正在等待处理。
conditions:
- type: ClusterResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 3 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 3 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
集群资源放置可用
资源位置可用
指示放置的资源是否完全可用,并且已准备好在成员集群中使用。
- True:所有资源在所有目标群集上均可用。
- False:某些资源尚不可用。
- 未知:可用性检查仍在等待结果。
conditions:
- type: ClusterResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 3 clusters are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 3 clusters are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
群集资源布局差异报告
资源放置差异报告
指示是否报告配置差异(使用 ReportDiff 策略时)。
- True:可提供完整的差异报告。
- False:差异报告失败或不完整。
- 未知:差异报告正在生成中。
conditions:
- type: ClusterResourcePlacementDiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for all target clusters"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
conditions:
- type: ResourcePlacementDiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for all target clusters"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
资源快照
该 observedResourceIndex 字段指明当前正在部署的是哪个资源快照。
observedResourceIndex: "1"
根据推出策略,Fleet Manager 会以不同的方式创建资源快照:
对于 RollingUpdate 策略(默认):当以下情况时,Fleet Manager 会自动创建资源快照:
- 资源选择器发生了变化
- 您可以修改所选资源
对于 External 策略:Fleet Manager 不会自动创建资源快照。 相反,当你执行分阶段更新运行并省略 resourceSnapshotIndex 字段时,系统会创建它们。 这种情况意味着,当您首次使用 External 滚动发布策略创建 Placement 时,在运行首次分阶段更新运行之前,不会存在任何资源快照。
注释
如果某个部署位置此前使用的是 RollingUpdate 策略,而你将其更改为 External,现有的资源快照仍然可用。 创建暂存更新运行时,可以引用这些现有快照。
每个快照都有唯一的索引。 可以使用以下方法查看快照:
kubectl get clusterresourcesnapshot --selector=kubernetes-fleet.io/resource-index=1
kubectl get resourcesnapshot -n <namespace-name> --selector=kubernetes-fleet.io/resource-index=1
按群集放置状态
该 placementStatuses 数组包含放置或尝试放置资源的每个群集的详细状态:
placementStatuses:
- clusterName: aks-member-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-1"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-member-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-2"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply some manifests"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
failedPlacements:
- kind: Deployment
name: web-app
namespace: test
version: apps/v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: insufficient resources"
lastTransitionTime: "2023-11-10T08:16:15Z"
每个群集的条件类型
每个群集的状态包括跟踪部署生命周期的条件:
资源已调度
表示是否已成功选中该群集用于放置。
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-member-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
开始推出
指示是否在此特定的群集上启动部署。
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
重写
指示是否为此群集应用资源替代。
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
WorkSynchronized
指示是否为此群集创建工作对象。
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
已应用
指示是否成功将所有资源应用于此群集。
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
可用
检查此群集中所有资源是否都已可用并已就绪。
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
DiffReported
指示是否报告此群集的配置差异。
- type: DiffReported
status: "True"
reason: DiffReportComplete
message: "Configuration differences are reported for this cluster"
lastTransitionTime: "2023-11-10T08:16:45Z"
observedGeneration: 5
放置失败
当资源无法应用于群集时,系统会记录数组中 failedPlacements 的详细信息:
failedPlacements:
- kind: Deployment
name: my-app
namespace: default
version: apps/v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: namespaces 'app' not found"
lastTransitionTime: "2023-12-06T00:09:53Z"
envelope:
name: example
namespace: app
type: ResourceEnvelope
- kind: Service
name: my-service
namespace: default
version: v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: Service 'my-service' is forbidden: User 'system:serviceaccount:fleet-system:fleet-agent' cannot create resource 'services' in API group '' in the namespace 'default'"
lastTransitionTime: "2023-12-06T00:10:15Z"
- kind: ConfigMap
name: app-config
namespace: production
version: v1
condition:
type: Applied
status: "False"
reason: AppliedManifestFailedReason
message: "Failed to apply manifest: configmaps 'app-config' already exists"
lastTransitionTime: "2023-12-06T00:10:30Z"
每个失败的位置包括:
- 资源标识:组、版本、类型、名称、命名空间
- 条件:特定故障条件
- 信封:信封信息(如果适用)
偏移位置
机群管理器始终会报告偏离其期望状态的资源:
driftedPlacements:
- kind: Namespace
name: web
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 12
observedDrifts:
- path: "/metadata/labels/owner"
valueInHub: "simon"
valueInMember: "chen"
- path: "/metadata/annotations/purpose"
valueInHub: "production"
valueInMember: "testing"
- kind: Deployment
name: web-app
namespace: web
group: apps
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 8
observedDrifts:
- path: "/spec/replicas"
valueInHub: "3"
valueInMember: "5"
- path: "/spec/template/spec/containers/0/image"
valueInHub: "nginx:1.20"
valueInMember: "nginx:1.21"
- kind: ConfigMap
name: app-config
namespace: web
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDriftedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 5
observedDrifts:
- path: "/data/environment"
valueInHub: "production"
valueInMember: "staging"
每个偏移位置包括:
- 资源标识:组、版本、类型、名称、命名空间
- 观察时间:上次观测偏移时间
- firstDriftedObservedTime:首次检测到偏移时
- targetClusterObservedGeneration:在成员群集上生成资源
- observedDrifts:配置差异的详细列表
对比放置
使用 ReportDiff 应用策略时,Fleet Manager 会报告配置差异。
diffedPlacements:
- kind: Service
name: my-service
namespace: default
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDiffedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 8
observedDiffs:
- path: "/spec/ports/0/nodePort"
valueInHub: ""
valueInMember: "30080"
- path: "/spec/clusterIP"
valueInHub: ""
valueInMember: "10.96.100.200"
- kind: Deployment
name: web-app
namespace: default
group: apps
version: v1
observationTime: "2025-03-19T06:50:25Z"
firstDiffedObservedTime: "2025-03-19T06:49:54Z"
targetClusterObservedGeneration: 12
observedDiffs:
- path: "/status/replicas"
valueInHub: ""
valueInMember: "3"
- path: "/status/readyReplicas"
valueInHub: ""
valueInMember: "3"
- path: "/metadata/generation"
valueInHub: "1"
valueInMember: "2"
差分放置的结构与漂移放置类似,但用于不同的情况。
- 偏移位置:在应用资源时使用,但随后更改它们。
- 差异广告位:与 ReportDiff 策略配合使用,或在不满足接管条件时使用。
监视放置进度
若要有效监视放置进度,请检查以下关键指标:
-
资源已放置:请验证
ClusterResourcePlacementWorkSynchronized为 True -
整体健康状况:查看
ClusterResourcePlacementApplied状况 - 每个群集的状态:审查每个目标群集的条件
-
投放失败:检查
failedPlacements数组中的所有条目
-
资源已放置:请验证
ResourcePlacementWorkSynchronized为 True -
整体健康状况:查看
ResourcePlacementApplied状况 - 每个群集的状态:审查每个目标群集的条件
-
投放失败:检查
failedPlacements数组中的所有条目
完成状态示例
下面是显示 ClusterResourcePlacement 的完整状态的综合示例:
apiVersion: placement.kubernetes-fleet.io/v1
kind: ClusterResourcePlacement
metadata:
name: web-app-placement
generation: 5
spec:
resourceSelectors:
- group: ""
kind: Namespace
name: web-app
version: v1
- group: apps
kind: Deployment
name: web-server
namespace: web-app
version: v1
- group: ""
kind: Service
name: web-service
namespace: web-app
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- matchLabels:
region: chinanorth3
status:
conditions:
- type: ClusterResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: ClusterResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 2 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: ClusterResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: ClusterResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: ClusterResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 2 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: ClusterResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 2 cluster are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
observedResourceIndex: "1"
selectedResources:
- group: ""
kind: Namespace
name: web-app
version: v1
- group: apps
kind: Deployment
name: web-server
namespace: web-app
version: v1
- group: ""
kind: Service
name: web-service
namespace: web-app
version: v1
placementStatuses:
- clusterName: aks-chinanorth3-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-chinanorth3-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-chinanorth3-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-chinanorth3-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
下面是显示 ResourcePlacement 的完整状态的综合示例:
apiVersion: placement.kubernetes-fleet.io/v1beta1
kind: ResourcePlacement
metadata:
name: web-app-placement
namespace: web-app
generation: 5
spec:
resourceSelectors:
- group: apps
kind: Deployment
name: web-server
version: v1
- group: ""
kind: Service
name: web-service
version: v1
policy:
placementType: PickN
numberOfClusters: 2
affinity:
clusterAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
clusterSelectorTerms:
- matchLabels:
region: chinanorth3
status:
conditions:
- type: ResourcePlacementScheduled
status: "True"
reason: SchedulingPolicyFulfilled
message: "found all the clusters needed as specified by the scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: ResourcePlacementRolloutStarted
status: "True"
reason: RolloutStarted
message: "All 2 cluster(s) start rolling out the latest resource"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: ResourcePlacementOverridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: ResourcePlacementWorkSynchronized
status: "True"
reason: SynchronizeSucceeded
message: "All 2 cluster(s) are synchronized to the latest resources on the hub cluster"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: ResourcePlacementApplied
status: "True"
reason: ApplySucceeded
message: "The selected resources are successfully applied to 2 clusters"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: ResourcePlacementAvailable
status: "True"
reason: ResourceAvailable
message: "The selected resources in 2 cluster are available now"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
observedResourceIndex: "1"
selectedResources:
- group: apps
kind: Deployment
name: web-server
version: v1
- group: ""
kind: Service
name: web-service
version: v1
placementStatuses:
- clusterName: aks-west-1
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-1 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected the new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
- clusterName: aks-west-2
observedResourceIndex: "1"
conditions:
- type: ResourceScheduled
status: "True"
reason: ScheduleSucceeded
message: "Successfully scheduled resources for placement in aks-west-2 (affinity score: 0, topology spread score: 0): picked by scheduling policy"
lastTransitionTime: "2023-11-10T08:14:52Z"
observedGeneration: 5
- type: RolloutStarted
status: "True"
reason: RolloutStarted
message: "Detected new changes on the resources and started the rollout process"
lastTransitionTime: "2023-11-10T08:15:30Z"
observedGeneration: 5
- type: Overridden
status: "True"
reason: NoOverrideSpecified
message: "No override rules are configured for the selected resources"
lastTransitionTime: "2023-11-10T08:15:45Z"
observedGeneration: 5
- type: WorkSynchronized
status: "True"
reason: AllWorkSynced
message: "All of the works are synchronized to the latest"
lastTransitionTime: "2023-11-10T08:16:00Z"
observedGeneration: 5
- type: Applied
status: "True"
reason: AllWorkHaveBeenApplied
message: "All corresponding work objects are applied"
lastTransitionTime: "2023-11-10T08:16:15Z"
observedGeneration: 5
- type: Available
status: "True"
reason: ResourceAvailable
message: "All resources are available on the target cluster"
lastTransitionTime: "2023-11-10T08:16:30Z"
observedGeneration: 5
failedPlacements: []
driftedPlacements: []
diffedPlacements: []
此示例显示:
- 调度成功:放置结果找到了两个符合放置策略的集群。
- 成功推出:所有资源都部署到这两个目标群集。
- 无替代:未配置或需要任何资源替代。
- 同步的工作:创建和同步工作对象。
- 已应用的资源:已成功应用所有资源。
- 可用资源:所有资源都在运行且可用。
- 状态正常:没有失败、发生漂移或存在差异的放置项。
相关内容
若要了解有关资源放置的详细信息,请参阅以下文章: