13.6. 对使用 Cluster API 的集群进行故障排除
使用集群 API 管理机器只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
使用本节中的信息从您可能会遇到的问题了解和恢复。通常,对集群 API 问题进行故障排除的步骤与 Machine API 存在问题的步骤类似。
Cluster CAPI Operator 及其操作对象在 openshift-cluster-api
命名空间中置备,而 Machine API 使用 openshift-machine-api
命名空间。使用引用命名空间的 oc
命令时,请务必引用正确的命名空间。
13.6.1. 使用 CLI 引用预期的对象
对于使用 Cluster API 的集群,OpenShift CLI (oc
) 命令会优先选择 Cluster API(与 Machine API 对象相比)。
此行为会影响任何对集群 API 和 Machine API 中代表的对象执行操作的 oc
命令。本说明使用 oc delete machine
命令,该命令删除机器,作为示例。
原因
运行 oc
命令时,oc
与 Kube API 服务器通信以确定要采取哪些对象。Kube API 服务器使用第一个安装的自定义资源定义 (CRD),它在运行 oc
命令时按字母顺序进行。
Cluster API 对象的 CRD 位于 cluster.x-k8s.io
组中,而 Machine API 对象的 CRD 位于 machine.openshift.io
组中。因为字母 c
在字母 m
前面,所以 Kube API 服务器在 Cluster API 对象 CRD 上匹配。因此,oc
命令会操作 Cluster API 对象。
结果
由于此行为,使用 Cluster API 的集群中可能会出现以下意外结果:
-
对于包含两种类型的对象的命名空间,
oc get machine
等命令只返回 Cluster API 对象。 -
对于仅包含 Machine API 对象的命名空间,
oc get machine
等命令不会返回任何结果。
临时解决方案
您可以使用对应的完全限定名称来确保 oc
命令对您想要的对象类型进行操作。
先决条件
-
您可以使用具有
cluster-admin
权限的账户访问集群。 -
已安装 OpenShift CLI(
oc
)。
流程
要删除 Machine API 机器,在运行
oc delete machine
命令时使用完全限定名称machine.machine.openshift.io
:$ oc delete machine.machine.openshift.io <machine_name>
要删除 Cluster API 机器,在运行
oc delete machine
命令时使用完全限定名称machine.cluster.x-k8s.io
:$ oc delete machine.cluster.x-k8s.io <machine_name>