排查 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 如下:

  1. ClusterResourcePlacementScheduled:指示资源已计划放置。

    如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementScheduled condition status is false.

  2. ClusterResourcePlacementRolloutStarted:指示推出过程已开始。

    如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementRolloutStarted condition status is false.

  3. ClusterResourcePlacementOverridden:指示资源已被重写。

    如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementOverridden condition status is false.

  4. ClusterResourcePlacementWorkSynchronized:指示工作对象已同步。

    如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementWorkSynchronized condition status is false.

  5. ClusterResourcePlacementApplied:指示应用了资源。

    如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementApplied condition status is false.

  6. ClusterResourcePlacementAvailable:指示资源可用。

    如果为 false,请参阅 How to troubleshoot when the ClusterResourcePlacementAvailable condition status is false.

常见问题解答

如何调试某些群集是否未按预期选择?

检查确定选择的群集的状态 ClusterSchedulingPolicySnapshot 及其选择原因。

如果所选群集没有预期的资源,或者 ClusterResourcePlacement 未选取最新更改,如何调试?

  1. 检查状态中的条件是否ClusterResourcePlacementRolloutStarted设置为 true 还是 falseClusterResourcePlacement
  2. 检查条件是否 ClusterResourcePlacementApplied 设置为 未知false 还是 true
  3. placementStatuses检查特定群集的状态中的ClusterResourcePlacement部分。 本 FailedPlacements 部分应提供任何资源应用程序故障的原因。

如何查找和验证 ClusterResourcePlacement 部署的最新 ClusterSchedulingPolicySnapshot?

若要查找 API 部署的最新ClusterSchedulingPolicySnapshotClusterResourcePlacement版本,请运行以下命令:

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

示例

  1. 运行以下命令以查看部署的状态 ClusterResourcePlacement 。 在本例中,名称 ClusterResourcePlacementtest-crp.

    kubectl describe clusterresourceplacement test-crp
    
  2. 下面是示例输出。 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
    
  3. 若要获取 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 关联的正确工作资源?

若要查找正确的工作资源,请执行以下步骤:

  1. 标识成员群集命名空间和 ClusterResourcePlacement 名称。 命名空间的格式为 fleet-member-{clusterName}.

  2. 若要获取工作资源,请运行以下命令:

    kubectl get work -n fleet-member-{clusterName} -l kubernetes-fleet.io/parent-CRP={CRPName}
    

    注意

    在此命令中,替换 {clusterName}{CRPName} 一步中标识的名称。

联系我们寻求帮助

如果你有任何疑问或需要帮助,请创建支持请求联系 Azure 社区支持。 你还可以将产品反馈提交到 Azure 反馈社区