×

使用集群 API 管理机器只是一个技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。

有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅 技术预览功能支持范围

使用本节中的信息来了解和恢复您可能遇到的问题。通常,集群 API 问题的故障排除步骤与机器 API 问题的故障排除步骤类似。

集群 CAPI 运算符及其操作数在openshift-cluster-api命名空间中进行配置,而机器 API 使用openshift-machine-api命名空间。当使用引用命名空间的oc命令时,请确保引用正确的命名空间。

使用 CLI 时引用目标对象

对于使用集群 API 的集群,OpenShift CLI (oc) 命令优先处理集群 API 对象而不是机器 API 对象。

此行为会影响作用于集群 API 和机器 API 中都表示的任何对象的任何oc命令。本说明使用删除机器的oc delete machine命令为例。

原因

运行oc命令时,oc会与 Kube API 服务器通信以确定要作用于哪些对象。当运行oc命令时,Kube API 服务器会按字母顺序使用遇到的第一个已安装的自定义资源定义 (CRD)。

集群 API 对象的 CRD 位于cluster.x-k8s.io组中,而机器 API 对象的 CRD 位于machine.openshift.io组中。由于字母“c”在字母“m”之前,因此 Kube API 服务器与集群 API 对象 CRD 匹配。因此,oc命令会作用于集群 API 对象。

后果

由于此行为,在使用集群 API 的集群上可能会出现以下意外结果:

  • 对于包含两种类型对象的命名空间,例如oc get machine的命令只会返回集群 API 对象。

  • 对于仅包含机器 API 对象的命名空间,例如oc get machine的命令不会返回任何结果。

解决方法

您可以通过使用相应的完全限定名称来确保oc命令作用于您打算使用的对象类型。

先决条件
  • 您可以使用具有cluster-admin权限的帐户访问集群。

  • 您已安装 OpenShift CLI (oc)。

步骤
  • 要删除机器 API 机器,请在运行oc delete machine命令时使用完全限定名称machine.machine.openshift.io

    $ oc delete machine.machine.openshift.io <machine_name>
  • 要删除集群 API 机器,请在运行oc delete machine命令时使用完全限定名称machine.cluster.x-k8s.io

    $ oc delete machine.cluster.x-k8s.io <machine_name>