7.3. Bootstrap 虚拟机问题
OpenShift Container Platform 安装程序生成 bootstrap 节点虚拟机,该虚拟机处理置备 OpenShift Container Platform 集群节点。
流程
触发安装程序后大约 10 到 15 分钟,使用
virsh
命令检查 bootstrap 虚拟机是否正常工作:sudo virsh list
$ sudo virsh list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Id Name State -------------------------------------------- 12 openshift-xf6fq-bootstrap running
Id Name State -------------------------------------------- 12 openshift-xf6fq-bootstrap running
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意bootstrap 虚拟机的名称始终是集群名称,后跟一组随机字符,并以"bootstrap"结尾。
如果 bootstrap 虚拟机在 10-15 分钟后没有运行,请对它进行故障排除。可能的问题包括:
验证
libvirtd
是否在系统中运行:systemctl status libvirtd
$ systemctl status libvirtd
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 bootstrap 虚拟机可以正常工作,请登录它。
使用
virsh console
命令查找 bootstrap 虚拟机的 IP 地址:sudo virsh console example.com
$ sudo virsh console example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要当在没有
provisioning
网络的情况下部署 OpenShift Container Platform 集群时,您必须使用公共 IP 地址,而不是专用 IP 地址,如172.22.0.2
。获取 IP 地址后,使用
ssh
命令登录到 bootstrap 虚拟机:注意在上一步的控制台输出中,您可以使用 ens3 提供的 IPv6 IP 地址或
ens
4 提供的 IPv4 IP 地址。
ssh core@172.22.0.2
$ ssh core@172.22.0.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
如果您无法成功登录 bootstrap 虚拟机,您可能会遇到以下情况之一:
-
您无法访问
172.22.0.0/24
网络。验证 provisioner 和provisioning
网桥之间的网络连接。如果您使用provisioning
网络,则可能会出现此问题。' -
您无法通过公共网络访问 bootstrap 虚拟机。当尝试 SSH via
baremetal 网络
时,验证provisioner
主机上的连接情况,特别是baremetal
网桥的连接。 -
您遇到了
Permission denied(publickey,password,keyboard-interactive)
的问题。当尝试访问 bootstrap 虚拟机时,可能会出现Permission denied
错误。验证尝试登录到虚拟机的用户的 SSH 密钥是否在install-config.yaml
文件中设置。
7.3.1. Bootstrap 虚拟机无法引导集群节点 复制链接链接已复制到粘贴板!
在部署过程中,bootstrap 虚拟机可能无法引导集群节点,这会阻止虚拟机使用 RHCOS 镜像置备节点。这可能是因为以下原因:
-
install-config.yaml
文件存在问题。 - 使用 baremetal 网络时出现带外网络访问的问题。
要验证这个问题,有三个与 ironic
相关的容器:
-
ironic
-
ironic-inspector
流程
登录到 bootstrap 虚拟机:
ssh core@172.22.0.2
$ ssh core@172.22.0.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要检查容器日志,请执行以下操作:
sudo podman logs -f <container_name>
[core@localhost ~]$ sudo podman logs -f <container_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<container_name>
替换为ironic
或ironic-inspector
之一。如果您遇到 control plane 节点没有从 PXE 引导的问题,请检查ironic
pod。ironic
pod 包含有关尝试引导集群节点的信息,因为它尝试通过 IPMI 登录节点。
潜在原因
集群节点在部署启动时可能处于 ON
状态。
解决方案
在通过 IPMI 开始安装前关闭 OpenShift Container Platform 集群节点:
ipmitool -I lanplus -U root -P <password> -H <out_of_band_ip> power off
$ ipmitool -I lanplus -U root -P <password> -H <out_of_band_ip> power off
7.3.2. 检查日志 复制链接链接已复制到粘贴板!
在下载或访问 RHCOS 镜像时,首先验证 install-config.yaml
配置文件中的 URL 是否正确。
内部 webserver 托管 RHCOS 镜像的示例
bootstrapOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-qemu.<architecture>.qcow2.gz?sha256=9d999f55ff1d44f7ed7c106508e5deecd04dc3c06095d34d36bf1cd127837e0c clusterOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-openstack.<architecture>.qcow2.gz?sha256=a1bda656fa0892f7b936fdc6b6a6086bddaed5dafacedcd7a1e811abb78fe3b0
bootstrapOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-qemu.<architecture>.qcow2.gz?sha256=9d999f55ff1d44f7ed7c106508e5deecd04dc3c06095d34d36bf1cd127837e0c
clusterOSImage: http://<ip:port>/rhcos-43.81.202001142154.0-openstack.<architecture>.qcow2.gz?sha256=a1bda656fa0892f7b936fdc6b6a6086bddaed5dafacedcd7a1e811abb78fe3b0
coreos-downloader
容器从 webserver 或外部 quay.io registry 下载资源(由 install-config.yaml
配置文件指定)。验证 coreos-downloader
容器是否正在运行,并根据需要检查其日志。
流程
登录到 bootstrap 虚拟机:
ssh core@172.22.0.2
$ ssh core@172.22.0.2
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 bootstrap 虚拟机中的
coreos-downloader
容器的状态:sudo podman logs -f coreos-downloader
[core@localhost ~]$ sudo podman logs -f coreos-downloader
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 bootstrap 虚拟机无法访问镜像的 URL,请使用
curl
命令验证虚拟机是否可以访问镜像。要检查
bootkube
日志,以指示部署阶段是否启动了所有容器,请执行以下操作:journalctl -xe
[core@localhost ~]$ journalctl -xe
Copy to Clipboard Copied! Toggle word wrap Toggle overflow journalctl -b -f -u bootkube.service
[core@localhost ~]$ journalctl -b -f -u bootkube.service
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证包括
dnsmasq、mariadb
、httpd
和
ironic
等所有 pod 都在运行:sudo podman ps
[core@localhost ~]$ sudo podman ps
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 pod 存在问题,请检查有问题的容器日志。要检查
ironic
服务的日志,请运行以下命令:sudo podman logs ironic
[core@localhost ~]$ sudo podman logs ironic
Copy to Clipboard Copied! Toggle word wrap Toggle overflow