This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.16.8. 对 Topology Aware Lifecycle Manager 进行故障排除
Topology Aware Lifecycle Manager(TALM)是一个 OpenShift Container Platform Operator,用于修复 RHACM 策略。出现问题时,使用 oc adm must-gather
命令来收集详情和日志,并采取调试问题的步骤。
有关相关主题的更多信息,请参阅以下文档:
16.8.1. 常规故障排除 复制链接链接已复制到粘贴板!
您可以通过查看以下问题来确定问题的原因:
您要应用的配置是否被支持?
- RHACM 和 OpenShift Container Platform 版本是否兼容?
- TALM 和 RHACM 版本是否兼容?
以下哪个组件导致了此问题?
为确保 ClusterGroupUpgrade
配置可以正常工作,您可以执行以下操作:
-
创建
ClusterGroupUpgrade
CR,并将spec.enable
字段设置为false
。 - 等待状态更新,再完成故障排除问题。
-
如果所有内容都如预期,在
ClusterGroupUpgrade
CR 中将spec.enable
字段设置为true
。
在 ClusterUpgradeGroup
CR 中将 spec.enable
字段设置为 true
后,更新过程会启动,您无法再编辑 CR 的 spec
字段。
16.8.2. 无法修改 ClusterUpgradeGroup CR 复制链接链接已复制到粘贴板!
- 问题
-
在启用更新后,您无法编辑
ClusterUpgradeGroup
CR。 - 解决方案
通过执行以下步骤来重启操作:
运行以下命令删除旧
ClusterGroupUpgrade
CR:oc delete cgu -n <ClusterGroupUpgradeCR_namespace> <ClusterGroupUpgradeCR_name>
$ oc delete cgu -n <ClusterGroupUpgradeCR_namespace> <ClusterGroupUpgradeCR_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 检查并修复受管集群和策略的现有问题。
- 确保所有集群都是受管集群并可用。
-
确保所有策略都存在,并将
spec.remediationAction
字段设置为inform
。
使用正确的配置创建一个新的
ClusterGroupUpgrade
CR。oc apply -f <ClusterGroupUpgradeCR_YAML>
$ oc apply -f <ClusterGroupUpgradeCR_YAML>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.8.3. 受管策略 复制链接链接已复制到粘贴板!
检查系统中的受管策略
- 问题
- 您需要检查系统中是否有正确的受管策略。
- 解决方案
运行以下命令:
oc get cgu lab-upgrade -ojsonpath='{.spec.managedPolicies}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.managedPolicies}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
["group-du-sno-validator-du-validator-policy", "policy2-common-pao-sub-policy", "policy3-common-ptp-sub-policy"]
["group-du-sno-validator-du-validator-policy", "policy2-common-pao-sub-policy", "policy3-common-ptp-sub-policy"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查 remediationAction 模式
- 问题
-
您要检查在受管策略的
spec
中是否将remediationAction
字段设置为inform
。 - 解决方案
运行以下命令:
oc get policies --all-namespaces
$ oc get policies --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default policy1-common-cluster-version-policy inform NonCompliant 5d21h default policy2-common-pao-sub-policy inform Compliant 5d21h default policy3-common-ptp-sub-policy inform NonCompliant 5d21h default policy4-common-sriov-sub-policy inform NonCompliant 5d21h
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default policy1-common-cluster-version-policy inform NonCompliant 5d21h default policy2-common-pao-sub-policy inform Compliant 5d21h default policy3-common-ptp-sub-policy inform NonCompliant 5d21h default policy4-common-sriov-sub-policy inform NonCompliant 5d21h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查策略合规状态
- 问题
- 您需要检查策略的合规性状态。
- 解决方案
运行以下命令:
oc get policies --all-namespaces
$ oc get policies --all-namespaces
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default policy1-common-cluster-version-policy inform NonCompliant 5d21h default policy2-common-pao-sub-policy inform Compliant 5d21h default policy3-common-ptp-sub-policy inform NonCompliant 5d21h default policy4-common-sriov-sub-policy inform NonCompliant 5d21h
NAMESPACE NAME REMEDIATION ACTION COMPLIANCE STATE AGE default policy1-common-cluster-version-policy inform NonCompliant 5d21h default policy2-common-pao-sub-policy inform Compliant 5d21h default policy3-common-ptp-sub-policy inform NonCompliant 5d21h default policy4-common-sriov-sub-policy inform NonCompliant 5d21h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.8.4. Clusters 复制链接链接已复制到粘贴板!
检查是否有受管集群
- 问题
-
您需要检查
ClusterGroupUpgrade
CR 中的集群是受管集群。 - 解决方案
运行以下命令:
oc get managedclusters
$ oc get managedclusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true https://api.hub.example.com:6443 True Unknown 13d spoke1 true https://api.spoke1.example.com:6443 True True 13d spoke3 true https://api.spoke3.example.com:6443 True True 27h
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true https://api.hub.example.com:6443 True Unknown 13d spoke1 true https://api.spoke1.example.com:6443 True True 13d spoke3 true https://api.spoke3.example.com:6443 True True 27h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者,检查 TALM manager 日志:
运行以下命令,获取 TALM Manager 的名称:
oc get pod -n openshift-operators
$ oc get pod -n openshift-operators
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME READY STATUS RESTARTS AGE cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp 2/2 Running 0 45m
NAME READY STATUS RESTARTS AGE cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp 2/2 Running 0 45m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令检查 TALM manager 日志:
oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
$ oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ERROR controller-runtime.manager.controller.clustergroupupgrade Reconciler error {"reconciler group": "ran.openshift.io", "reconciler kind": "ClusterGroupUpgrade", "name": "lab-upgrade", "namespace": "default", "error": "Cluster spoke5555 is not a ManagedCluster"} sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
ERROR controller-runtime.manager.controller.clustergroupupgrade Reconciler error {"reconciler group": "ran.openshift.io", "reconciler kind": "ClusterGroupUpgrade", "name": "lab-upgrade", "namespace": "default", "error": "Cluster spoke5555 is not a ManagedCluster"}
1 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 错误消息显示集群不是受管集群。
检查受管集群是否可用
- 问题
-
您需要检查
ClusterGroupUpgrade
CR 中指定的受管集群是否可用。 - 解决方案
运行以下命令:
oc get managedclusters
$ oc get managedclusters
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true https://api.hub.testlab.com:6443 True Unknown 13d spoke1 true https://api.spoke1.testlab.com:6443 True True 13d spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE local-cluster true https://api.hub.testlab.com:6443 True Unknown 13d spoke1 true https://api.spoke1.testlab.com:6443 True True 13d
1 spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
2 Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查 clusterSelector
- 问题
-
您需要检查
clusterSelector
字段是否至少在ClusterGroupUpgrade
CR 中指定。 - 解决方案
运行以下命令:
oc get managedcluster --selector=upgrade=true
$ oc get managedcluster --selector=upgrade=true
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 要更新的集群标签是
upgrade:true
。
输出示例
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE spoke1 true https://api.spoke1.testlab.com:6443 True True 13d spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE spoke1 true https://api.spoke1.testlab.com:6443 True True 13d spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查是否有 canary 集群
- 问题
您要检查集群列表中是否存在 Canary 集群。
ClusterGroupUpgrade
CR 示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 解决方案
运行以下命令:
oc get cgu lab-upgrade -ojsonpath='{.spec.clusters}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.clusters}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
["spoke1", "spoke3"]
["spoke1", "spoke3"]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查与
clusterSelector
标签匹配的集群列表中是否存在 canary 集群:oc get managedcluster --selector=upgrade=true
$ oc get managedcluster --selector=upgrade=true
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE spoke1 true https://api.spoke1.testlab.com:6443 True True 13d spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
NAME HUB ACCEPTED MANAGED CLUSTER URLS JOINED AVAILABLE AGE spoke1 true https://api.spoke1.testlab.com:6443 True True 13d spoke3 true https://api.spoke3.testlab.com:6443 True True 27h
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
集群可以出现在 spec.clusters
中,还可与 spec.clusterSelecter
标签匹配。
检查 spoke 集群上的预缓存状态
在 spoke 集群中运行以下命令来检查预缓存的状态:
oc get jobs,pods -n openshift-talo-pre-cache
$ oc get jobs,pods -n openshift-talo-pre-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.8.5. 补救策略 复制链接链接已复制到粘贴板!
检查 ClusterGroupUpgrade CR 中是否存在 remediationStrategy
- 问题
-
您需要检查
ClusterGroupUpgrade
CR 是否存在remediationStrategy
。 - 解决方案
运行以下命令:
oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"maxConcurrency":2, "timeout":240}
{"maxConcurrency":2, "timeout":240}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查 ClusterGroupUpgrade CR 中是否指定了 maxConcurrency
- 问题
-
您需要检查是否在
ClusterGroupUpgrade
CR 中指定maxConcurrency
。 - 解决方案
运行以下命令:
oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy.maxConcurrency}'
$ oc get cgu lab-upgrade -ojsonpath='{.spec.remediationStrategy.maxConcurrency}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
2
2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
16.8.6. Topology Aware Lifecycle Manager 复制链接链接已复制到粘贴板!
检查 ClusterGroupUpgrade CR 中的条件消息和状态
- 问题
-
您要检查
ClusterGroupUpgrade
CR 中的status.conditions
字段的值。 - 解决方案
运行以下命令:
oc get cgu lab-upgrade -ojsonpath='{.status.conditions}'
$ oc get cgu lab-upgrade -ojsonpath='{.status.conditions}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
{"lastTransitionTime":"2022-02-17T22:25:28Z", "message":"The ClusterGroupUpgrade CR has managed policies that are missing:[policyThatDoesntExist]", "reason":"UpgradeCannotStart", "status":"False", "type":"Ready"}
{"lastTransitionTime":"2022-02-17T22:25:28Z", "message":"The ClusterGroupUpgrade CR has managed policies that are missing:[policyThatDoesntExist]", "reason":"UpgradeCannotStart", "status":"False", "type":"Ready"}
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查对应的复制策略
- 问题
-
您需要检查
status.managedPoliciesForUpgrade
的每个策略是否具有status.copiedPolicies
对应的策略。 - 解决方案
运行以下命令:
oc get cgu lab-upgrade -oyaml
$ oc get cgu lab-upgrade -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
检查 status.remediationPlan 是否已计算
- 问题
-
您需要检查
status.remediationPlan
是否被计算。 - 解决方案
运行以下命令:
oc get cgu lab-upgrade -ojsonpath='{.status.remediationPlan}'
$ oc get cgu lab-upgrade -ojsonpath='{.status.remediationPlan}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
[["spoke2", "spoke3"]]
[["spoke2", "spoke3"]]
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
TALM manager 容器中的错误
- 问题
- 您要检查 TALM 的 manager 容器的日志。
- 解决方案
运行以下命令:
oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
$ oc logs -n openshift-operators \ cluster-group-upgrades-controller-manager-75bcc7484d-8k8xp -c manager
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
ERROR controller-runtime.manager.controller.clustergroupupgrade Reconciler error {"reconciler group": "ran.openshift.io", "reconciler kind": "ClusterGroupUpgrade", "name": "lab-upgrade", "namespace": "default", "error": "Cluster spoke5555 is not a ManagedCluster"} sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
ERROR controller-runtime.manager.controller.clustergroupupgrade Reconciler error {"reconciler group": "ran.openshift.io", "reconciler kind": "ClusterGroupUpgrade", "name": "lab-upgrade", "namespace": "default", "error": "Cluster spoke5555 is not a ManagedCluster"}
1 sigs.k8s.io/controller-runtime/pkg/internal/controller.(*Controller).processNextWorkItem
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 显示错误。