排查 Azure Kubernetes Fleet Manager 中的 ClusterResourcePlacement API 问题
使用 Azure Kubernetes Fleet Manager 时,此故障排除指南可帮助你解决 ClusterResourcePlacement
API 对象相关问题。 排查中心群集上的这些错误需要了解以下对象:
ClusterResourceSnapshot
ClusterSchedulingPolicySnapshot
ClusterResourceBinding
Work
有关每个对象的更多详细信息,请参阅 API 参考。
ClusterResourcePlacement 部署的完整进度
了解自定义资源的进度和状态 ClusterResourcePlacement
对于诊断和识别故障至关重要。 可以使用以下命令查看自定义资源的状态 ClusterResourcePlacement
:
kubectl describe clusterresourceplacement <name>
有关详细信息,请参阅 使用 ClusterResourcePlacement API 将资源传播到成员群集。
完整进度 ClusterResourcePlacement
如下:
ClusterResourcePlacementScheduled:指示资源已计划放置。
如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementScheduled condition status is false.
ClusterResourcePlacementRolloutStarted:指示推出过程已开始。
如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementRolloutStarted condition status is false.
ClusterResourcePlacementOverridden:指示资源已被重写。
如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementOverridden condition status is false.
ClusterResourcePlacementWorkSynchronized:指示工作对象已同步。
如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementWorkSynchronized condition status is false.
ClusterResourcePlacementApplied:指示应用了资源。
如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementApplied condition status is false.
ClusterResourcePlacementAvailable:指示资源可用。
如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementAvailable condition status is false.
常见问题解答
如何调试某些群集是否未按预期选择?
检查确定选择的群集的状态 ClusterSchedulingPolicySnapshot
及其选择原因。
如果所选群集没有预期的资源,或者 ClusterResourcePlacement 未选取最新更改,如何调试?
- 检查状态中的条件是否
ClusterResourcePlacementRolloutStarted
设置为 true 还是 false。ClusterResourcePlacement
- 如果 为 false,请参阅 如何调试 ClusterResourcePlacementScheduled 条件状态设置为 false。
- 如果 为 true,请转到步骤 2。
- 检查条件是否
ClusterResourcePlacementApplied
设置为 未知、 false 还是 true。- 如果 未知,请等待进程完成,因为资源仍在应用于成员群集。 如果状态在一段时间内仍 未知 ,请提出 问题 ,因为这是异常行为。
- 如果 为 false,请参阅 如何调试 ClusterResourcePlacementApplied 条件状态设置为 false。
- 如果 为 true,请验证中心群集上是否存在资源。
placementStatuses
检查特定群集的状态中的ClusterResourcePlacement
部分。 本FailedPlacements
部分应提供任何资源应用程序故障的原因。
如何查找和验证 ClusterResourcePlacement 部署的最新 ClusterSchedulingPolicySnapshot?
若要查找 API 部署的最新ClusterSchedulingPolicySnapshot
ClusterResourcePlacement
版本,请运行以下命令:
kubectl get clusterschedulingpolicysnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}
注意
在此命令中,替换为 {CRPName}
名称 ClusterResourcePlacement
。
然后,将 ClusterSchedulingPolicySnapshot
策略与 ClusterResourcePlacement
策略进行比较,以确保它们匹配,从“ClusterResourcePlacement”规范中排除字段 numberOfClusters
。
如果放置类型为 PickN
,请检查策略中 ClusterResourcePlacement
请求的群集数是否与标签的值 number-of-clusters
匹配。
如何查找最新的 ClusterResourceBinding 资源?
以下命令列出与ClusterResourcePlacement
以下项关联的所有ClusterResourceBindings
实例:
Kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP={CRPName}
注意
在此命令中,替换为 {CRPName}
名称 ClusterResourcePlacement
。
示例
运行以下命令以查看部署的状态
ClusterResourcePlacement
。 在本例中,名称ClusterResourcePlacement
为test-crp
.kubectl describe clusterresourceplacement test-crp
下面是示例输出。
placementStatuses
从状态部分test-crp
,请注意,它已将资源分发到两个成员群集,因此有两ClusterResourceBindings
个实例:status: conditions: - lastTransitionTime: "2023-11-23T00:49:29Z" ... placementStatuses: - clusterName: kind-cluster-1 conditions: ... type: ResourceApplied - clusterName: kind-cluster-2 conditions: ... reason: ApplySucceeded status: "True" type: ResourceApplied
若要获取
ClusterResourceBindings
该值,请运行以下命令:kubectl get clusterresourcebinding -l kubernetes-fleet.io/parent-CRP=test-crp
NAME WORKCREATED RESOURCESAPPLIED AGE test-crp-kind-cluster-1-be990c3e True True 33s test-crp-kind-cluster-2-ec4d953c True True 33s
输出列出与
test-crp
.ClusterResourceBindings
. 资源ClusterResourceBinding
名称使用以下格式:{CRPName}-{clusterName}-{suffix}
如何查找最新的 ClusterResourceSnapshot 资源?
若要查找最新的 ClusterResourceSnapshot 资源,请运行以下命令:
kubectl get clusterresourcesnapshot -l kubernetes-fleet.io/is-latest-snapshot=true,kubernetes-fleet.io/parent-CRP={CRPName}
注意
在此命令中,替换为 {CRPName}
名称 ClusterResourcePlacement
。
如何查找与 ClusterResourcePlacement 关联的正确工作资源?
若要查找正确的工作资源,请执行以下步骤:
标识成员群集命名空间和
ClusterResourcePlacement
名称。 命名空间的格式为fleet-member-{clusterName}
.若要获取工作资源,请运行以下命令:
kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
注意
在此命令中,替换
{clusterName}
第{CRPName}
一步中标识的名称。
联系我们寻求帮助
如果你有任何疑问或需要帮助,请创建支持请求或联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区。