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>
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.