7.3. Bootstrap 虚拟机问题
OpenShift Container Platform 安装程序生成 bootstrap 节点虚拟机,该虚拟机处理置备 OpenShift Container Platform 集群节点。
流程
触发安装程序后大约 10 到 15 分钟,使用
virsh命令检查 bootstrap 虚拟机是否正常工作:sudo virsh list
$ sudo virsh listCopy to Clipboard Copied! Toggle word wrap Toggle overflow Id Name State -------------------------------------------- 12 openshift-xf6fq-bootstrap running
Id Name State -------------------------------------------- 12 openshift-xf6fq-bootstrap runningCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意bootstrap 虚拟机的名称始终是集群名称,后跟一组随机字符,并以"bootstrap"结尾。
如果 bootstrap 虚拟机在 10-15 分钟后没有运行,请对它进行故障排除。可能的问题包括:
验证
libvirtd是否在系统中运行:systemctl status libvirtd
$ systemctl status libvirtdCopy 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.comCopy 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 地址或
ens4 提供的 IPv4 IP 地址。ssh core@172.22.0.2
$ ssh core@172.22.0.2Copy 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.2Copy 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 引导的问题,请检查ironicpod。ironicpod 包含有关尝试引导集群节点的信息,因为它尝试通过 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.2Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,检查 bootstrap 虚拟机中的
coreos-downloader容器的状态:sudo podman logs -f coreos-downloader
[core@localhost ~]$ sudo podman logs -f coreos-downloaderCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 bootstrap 虚拟机无法访问镜像的 URL,请使用
curl命令验证虚拟机是否可以访问镜像。要检查
bootkube日志,以指示部署阶段是否启动了所有容器,请执行以下操作:journalctl -xe
[core@localhost ~]$ journalctl -xeCopy to Clipboard Copied! Toggle word wrap Toggle overflow journalctl -b -f -u bootkube.service
[core@localhost ~]$ journalctl -b -f -u bootkube.serviceCopy to Clipboard Copied! Toggle word wrap Toggle overflow 验证包括
dnsmasq、mariadb、httpd和ironic等所有 pod 都在运行:sudo podman ps
[core@localhost ~]$ sudo podman psCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 pod 存在问题,请检查有问题的容器日志。要检查
ironic服务的日志,请运行以下命令:sudo podman logs ironic
[core@localhost ~]$ sudo podman logs ironicCopy to Clipboard Copied! Toggle word wrap Toggle overflow