8.5.3. Bootstrap 虚拟机问题

OpenShift Container Platform 安装程序生成 bootstrap 节点虚拟机,该虚拟机处理置备 OpenShift Container Platform 集群节点。

流程

  1. 触发安装程序后约 10 到 15 分钟,使用 virsh 命令检查 bootstrap 虚拟机是否可正常工作:

    $ sudo virsh list
     Id    Name                           State
     --------------------------------------------
     12    openshift-xf6fq-bootstrap      running
    注意

    bootstrap 虚拟机的名称始终是集群名称再加上一组随机字符,并以"bootstrap"结尾。

    如果 bootstrap 虚拟机在 10 到 15 分钟后还没有运行,请检查其没有运行的原因。可能的问题包括:

  2. 确定在该系统中运行了 libvirtd:

    $ systemctl status libvirtd
    ● libvirtd.service - Virtualization daemon
       Loaded: loaded (/usr/lib/systemd/system/libvirtd.service; enabled; vendor preset: enabled)
       Active: active (running) since Tue 2020-03-03 21:21:07 UTC; 3 weeks 5 days ago
         Docs: man:libvirtd(8)
               https://libvirt.org
     Main PID: 9850 (libvirtd)
        Tasks: 20 (limit: 32768)
       Memory: 74.8M
       CGroup: /system.slice/libvirtd.service
               ├─ 9850 /usr/sbin/libvirtd

    如果 bootstrap 虚拟机可以正常工作,登录到它。

  3. 使用 virsh console 命令查找 bootstrap 虚拟机的 IP 地址:

    $ sudo virsh console example.com
    Connected to domain example.com
    Escape character is ^]
    
    Red Hat Enterprise Linux CoreOS 43.81.202001142154.0 (Ootpa) 4.3
    SSH host key: SHA256:BRWJktXZgQQRY5zjuAV0IKZ4WM7i4TiUyMVanqu9Pqg (ED25519)
    SSH host key: SHA256:7+iKGA7VtG5szmk2jB5gl/5EZ+SNcJ3a2g23o0lnIio (ECDSA)
    SSH host key: SHA256:DH5VWhvhvagOTaLsYiVNse9ca+ZSW/30OOMed8rIGOc (RSA)
    ens3:  fd35:919d:4042:2:c7ed:9a9f:a9ec:7
    ens4: 172.22.0.2 fe80::1d05:e52e:be5d:263f
    localhost login:
    重要

    当在没有 provisioning 网络的情况下部署 OpenShift Container Platform 集群时,您必须使用公共 IP 地址,而不是像 172.22.0.2 这样的私有 IP 地址。

  4. 获取 IP 地址后,使用 ssh 命令登录到 bootstrap 虚拟机:

    注意

    在上一步的控制台输出中,您可以使用 ens3 提供的 IPv6 IP 地址或 ens4 提供的 IPv4 IP。

    $ ssh core@172.22.0.2

如果您无法成功登录到 bootstrap 虚拟机,您可能会遇到以下情况之一:

  • 无法访问 172.22.0.0/24 网络。验证 provisioner 主机上的网络连接,特别是 provisioner 网桥上的连接。如果您不使用 provisioning 网络,则不会有这个问题。
  • 您无法通过公共网络访问 bootstrap 虚拟机。当尝试通过 baremetal 网络进行 SSH 时,验证 provisioner 主机的连接,特别是 baremetal 网桥的连接。
  • 存在 Permission denied (publickey,password,keyboard-interactive) 问题。当尝试访问 bootstrap 虚拟机时,可能会出现 Permission denied 错误。验证试图登录到虚拟机的用户的 SSH 密钥是否在 install-config.yaml 文件中设置。

8.5.3.1. Bootstrap 虚拟机无法引导集群节点

在部署期间,bootstrap 虚拟机可能无法引导集群节点,这会阻止虚拟机使用 RHCOS 镜像置备节点。这可能是因为以下原因:

  • install-config.yaml 文件有问题。
  • 通过裸机网络进行带外网络访问的问题。

要验证这个问题,有三个与 ironic 相关的容器:

  • ironic-api
  • ironic-conductor
  • ironic-inspector

流程

  1. 登录到 bootstrap 虚拟机:

    $ ssh core@172.22.0.2
  2. 要检查容器日志,请执行以下操作:

    [core@localhost ~]$ sudo podman logs -f <container-name>

    <container-name> 替换为 ironic-apiironic-conductorironic-inspector 之一。如果您遇到 control plane 节点没有通过 PXE 引导的问题,请检查 ironic-conductor pod。ironic-conductor pod 包含了有关尝试引导集群节点的最详细信息,因为它尝试通过 IPMI 登录该节点。

潜在原因

集群节点在部署启动时可能处于 ON 状态。

解决方案

在通过 IPMI 开始安装前关闭 OpenShift Container Platform 集群节点:

$ ipmitool -I lanplus -U root -P <password> -H <out-of-band-ip> power off