documentation.suse.com / SUSE Edge 文档 / 查错 / 定向网络置备查错

49 定向网络置备查错

定向网络置备场景涉及使用 Metal3 和 CAPI 组件置备下游群集,以及使用 EIB 创建操作系统映像。当主机首次引导时,或者在检查或置备过程中,可能会发生问题。

常见问题
  • 固件过旧:验证物理主机上使用的所有固件是否为最新版本,包括 BMC 固件(有时 Metal3 需要特定版本/更新的固件)。

  • 置备因 SSL 错误失败:如果提供映像的 Web 服务器使用 https,需要配置 Metal3 以在 IPA 映像中注入并信任证书。请参见第 40.3.4 节 “Kubernetes 文件夹”了解如何将 ca-additional.crt 文件包含到 Metal3 chart 中。

  • 使用 IPA 引导主机时的证书问题:某些服务器供应商在将虚拟媒体 ISO 映像挂接到 BMC 时会验证 SSL 连接,这可能导致出现问题,因为针对 Metal3 部署生成的证书是自我签名证书。在这种情况下,主机在引导时可能会回退到 UEFI 外壳。请参见第 1.6.2 节 “对虚拟媒体 ISO 挂接禁用 TLS”了解如何解决此问题。

  • 名称或标签引用错误:如果群集通过错误的名称或标签引用节点,群集可能显示为已部署,但 BMH 仍处于“可用”状态。请仔细检查 BMH 关联对象的引用。

  • BMC 通讯问题:确保管理群集上运行的 Metal3 Pod 能够访问待置备主机的 BMC(通常 BMC 网络的限制极为严格)。

  • 裸机主机状态不正确:BMH 对象在其生命周期(状态机流转过程)中会经历不同状态(正在检查、正在准备、已置备等)。如果检测到状态不正确,请使用以下命令检查 BMH 对象的 status 字段以获取更多信息:kubectl get bmh <name> -o jsonpath=’{.status}’| jq

  • 主机无法取消置备:如果主机取消置备失败,可尝试为 BMH 对象添加“detached”注解后再尝试去除,具体命令为 kubectl annotate bmh/<BMH> baremetalhost.metal3.io/detached=””

  • 映像错误:验证通过 EIB 为下游群集构建的映像是否可用、是否具有正确的校验和,且其大小不会导致解压失败或超出磁盘容量。

  • 磁盘大小不匹配:默认情况下,磁盘不会自动扩容至其最大容量。如第 1.3.4.1.2 节 “Growfs 脚本”所述,通过 EIB 为下游群集主机构建映像时,需要包含一个 growfs 脚本。

  • 清理过程卡住:清理过程会重试多次。如果由于主机问题导致清理过程无法继续,需要先将 BMH 对象的 automatedCleanMode 字段设置为 disabled,以禁用清理功能。

    警告
    警告

    当清理过程耗时过长或失败时,不建议手动去除终结器。这样做会从 Kubernetes 中去除主机记录,但会在 Ironic 中残留该记录。后台当前运行的操作会继续,再次添加主机时可能会因发生冲突而失败。

  • Metal3/Rancher Turtles/CAPI Pod 问题:所有必需组件的部署流程如下:

    • Rancher Turtles 控制器部署 CAPI 操作器控制器。

    • CAPI 操作器控制器随后部署提供程序控制器(CAPI 核心、CAPM3 和 RKE2 控制平面/引导组件)。

验证所有 Pod 是否正常运行,若非如此,请检查日志。

日志
  • Metal3 日志:检查不同 Pod 的日志。

    kubectl logs -n metal3-system -l app.kubernetes.io/component=baremetal-operator
    kubectl logs -n metal3-system -l app.kubernetes.io/component=ironic
    注意
    注意

    metal3-ironic Pod 至少包含 4 个不同的容器(ironic-httpd、`ironic-log-watch`、ironicironic-ipa-downloader (init))。带 -c 标志运行 kubectl logs 可校验其中每个容器的日志。

    注意
    注意

    ironic-log-watch 容器会在检查/置备主机后从主机公开控制台日志(前提是网络连接允许将这些日志发送回管理群集)。当发生置备错误,但您无法直接访问 BMC 控制台日志时,此功能非常有用。

  • Rancher Turtles 日志:检查不同 Pod 的日志。

    kubectl logs -n rancher-turtles-system -l control-plane=controller-manager
    kubectl logs -n rancher-turtles-system -l app.kubernetes.io/name=cluster-api-operator
    kubectl logs -n rke2-bootstrap-system -l cluster.x-k8s.io/provider=bootstrap-rke2
    kubectl logs -n rke2-control-plane-system -l cluster.x-k8s.io/provider=control-plane-rke2
    kubectl logs -n capi-system -l cluster.x-k8s.io/provider=cluster-api
    kubectl logs -n capm3-system -l cluster.x-k8s.io/provider=infrastructure-metal3
  • BMC 日志:BMC 通常会提供一个可用于执行大多数交互操作的 UI,其中一般都会有一个“日志”部分,您可在其中查看潜在问题(无法访问映像、硬件故障等)。

  • 控制台日志:连接到 BMC 控制台(通过 BMC Web UI、串行接口等),检查实时写入的日志中的错误。

查错步骤
  1. 检查 BareMetalHost 状态

    • 运行 kubectl get bmh -A 可显示当前状态。查找 provisioningreadyerrorregistering

    • 运行 kubectl describe bmh -n <namespace> <bmh_name> 可提供详细事件和状态,解释 BMH 可能出现卡死状态的原因。

  2. 测试 RedFish 连通性

    • 从 Metal3 控制平面使用 curl 测试能否通过 redfish 连接到 BMC。

    • 确保在 BareMetalHost-Secret 定义中提供了正确的 BMC 身份凭证。

  3. 验证 Turtles/CAPI/Metal3 Pod 状态:分别使用以下命令确保管理群集上的容器处于正常运行状态:kubectl get pods -n metal3-systemkubectl get pods -n rancher-turtles-system(另请参见 capi-systemcapm3-systemrke2-bootstrap-systemrke2-control-plane-system)。

  4. 验证待置备的主机可访问 Ironic 端点:待置备的主机需要能够访问 Ironic 端点以向 Metal3 回传状态信息。请使用 kubectl get svc -n metal3-system metal3-metal3-ironic 获取 IP,然后通过 curl/nc 尝试访问该端点。

  5. 验证 BMC 可访问 IPA 映像:IPA 由 Ironic 端点提供,BMC 必须能够访问 IPA,因为后者用作虚拟 CD。

  6. 验证待置备的主机可访问操作系统映像:运行 IPA 时,待置备主机自身必须能够访问用于置备该主机的映像,因为该映像会被临时下载并写入磁盘。

  7. 检查 Metal3 组件日志:请参见上文。

  8. 重新触发 BMH 检查:如果检查失败或可用主机的硬件发生变化,可通过为 BMH 对象添加注解 inspect.metal3.io: "" 触发新的检查过程。有关详细信息,请参见 Metal3 控制检查指南。

  9. 裸机 IPA 控制台:您可以通过以下几种方法来排查 IPA 问题:

    • 启用“自动登录”:这样 root 用户在连接到 IPA 控制台时便会自动登录。

      警告
      警告

      此功能仅用于调试目的,因为这会授予对主机的完全访问权限。

      要启用自动登录功能,应将 Metal3 helm 的 global.ironicKernelParams 设置为 console=ttyS0 suse.autologin=ttyS0(根据控制台的不同,可将 ttyS0 替换为其他值)。然后需要重新部署 Metal3 chart。(注意:ttyS0 是示例,具体的值应与实际终端匹配。例如在裸机上,该值通常为 tty1,可通过查看主机引导时 IPA 内存盘的控制台输出来确定,因为其中的 /etc/issue 会列显控制台名称。)

      另一种方法是更改 metal3-system 名称空间内 ironic-bmo configmap 中的 IRONIC_KERNEL_PARAMS 参数。通过 kubectl edit 进行操作会更简单,但更新 chart 时,该参数会被覆盖。之后需要使用 kubectl delete pod -n metal3-system -l app.kubernetes.io/component=ironic 重启 Metal3 Pod。

    • 为 IPA 的 root 用户注入 SSH 密钥。

      警告
      警告

      此功能仅用于调试目的,因为这会授予对主机的完全访问权限。

      可通过 Metal3 Helm 的 debug.ironicRamdiskSshKey 参数注入 root 用户的 SSH 密钥。然后需要重新部署 Metal3 chart。

      另一种方法是更改 metal3-system 名称空间内 ironic-bmo configmap 中的 IRONIC_RAMDISK_SSH_KEY 参数。通过 kubectl edit 进行操作会更简单,但更新 chart 时,该参数会被覆盖。之后需要使用 kubectl delete pod -n metal3-system -l app.kubernetes.io/component=ironic 重启 Metal3 Pod。

注意
注意

请参见 CAPI 查错指南和 Metal3 查错指南。

Documentation survey