This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.13.3. 为 OpenShift 安装设置环境
13.3.1. 在置备程序节点上安装 RHEL 复制链接链接已复制到粘贴板!
完成先决条件后,下一步是在置备程序节点上安装 RHEL 8.x。安装 OpenShift Container Platform 集群时,安装程序使用 provisioner 节点作为编配器。在本文档中,在 provisioner 节点上安装 RHEL 超出了范围。但是,选项包括但不限于使用 RHEL Satellite 服务器、PXE 或安装介质。
执行以下步骤准备环境。
流程
-
通过
ssh登录到 provisioner 节点。 创建非 root 用户(
kni)并为该用户提供sudo权限:useradd kni
# useradd kniCopy to Clipboard Copied! Toggle word wrap Toggle overflow passwd kni
# passwd kniCopy to Clipboard Copied! Toggle word wrap Toggle overflow echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
# echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kniCopy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 0440 /etc/sudoers.d/kni
# chmod 0440 /etc/sudoers.d/kniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新用户创建
ssh密钥:su - kni -c "ssh-keygen -t ed25519 -f /home/kni/.ssh/id_rsa -N ''"
# su - kni -c "ssh-keygen -t ed25519 -f /home/kni/.ssh/id_rsa -N ''"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以新用户身份登录到 provisioner 节点:
su - kni
# su - kniCopy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 Red Hat Subscription Manager 注册 provisioner 节点:
sudo subscription-manager register --username=<user> --password=<pass> --auto-attach sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms --enable=rhel-8-for-x86_64-baseos-rpms
$ sudo subscription-manager register --username=<user> --password=<pass> --auto-attach $ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms --enable=rhel-8-for-x86_64-baseos-rpmsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意有关 Red Hat Subscription Manager 的详情,请参考 使用和配置 Red Hat Subscription Manager。
安装以下软件包:
sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
$ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitoolCopy to Clipboard Copied! Toggle word wrap Toggle overflow 修改用户,将
libvirt组添加到新创建的用户:sudo usermod --append --groups libvirt <user>
$ sudo usermod --append --groups libvirt <user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重启
firewalld并启用http服务:sudo systemctl start firewalld
$ sudo systemctl start firewalldCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --zone=public --add-service=http --permanentCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --reload
$ sudo firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 启动并启用
libvirtd服务:sudo systemctl enable libvirtd --now
$ sudo systemctl enable libvirtd --nowCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
默认存储池并启动它:sudo virsh pool-define-as --name default --type dir --target /var/lib/libvirt/images
$ sudo virsh pool-define-as --name default --type dir --target /var/lib/libvirt/imagesCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo virsh pool-start default
$ sudo virsh pool-start defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo virsh pool-autostart default
$ sudo virsh pool-autostart defaultCopy to Clipboard Copied! Toggle word wrap Toggle overflow 配置网络.
注意您还可以从 Web 控制台配置网络。
导出
baremetal 网络NIC 名称:export PUB_CONN=<baremetal_nic_name>
$ export PUB_CONN=<baremetal_nic_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 配置
baremetal网络:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用
provisioning网络部署,请导出provisioning网络 NIC 名称:export PROV_CONN=<prov_nic_name>
$ export PROV_CONN=<prov_nic_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果使用
provisioning网络部署,请配置置备网络:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意执行这些步骤后
ssh连接可能会断开。只要无法通过
baremetal 网络路由,IPv6 地址可以是任何地址。在使用 IPv6 地址时,请确保启用了 UEFI,并将 UEFI PXE 设置设置为 IPv6 协议。
在
provisioning网络连接中配置 IPv4 地址:nmcli connection modify provisioning ipv4.addresses 172.22.0.254/24 ipv4.method manual
$ nmcli connection modify provisioning ipv4.addresses 172.22.0.254/24 ipv4.method manualCopy to Clipboard Copied! Toggle word wrap Toggle overflow ssh到provisioner节点(如果需要)。ssh kni@provisioner.<cluster-name>.<domain>
# ssh kni@provisioner.<cluster-name>.<domain>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证连接网桥是否已正确创建:
sudo nmcli con show
$ sudo nmcli con showCopy to Clipboard Copied! Toggle word wrap Toggle overflow Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建
pull-secret.txt文件:vim pull-secret.txt
$ vim pull-secret.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Web 浏览器中,进入 Install OpenShift on Bare Metal with installer-provisioned infrastructure。点 Copy pull secret。将内容粘贴到
pull-secret.txt文件中,并将内容保存到kni用户的主目录中。
13.3.3. 在子网间建立通信 复制链接链接已复制到粘贴板!
在典型的 OpenShift Container Platform 集群设置中,所有节点(包括 control plane 和 worker 节点)都驻留在同一网络中。但是,对于边缘计算场景,找到接近边缘的 worker 节点会很有用。这通常涉及为与 control plane 和本地 worker 节点使用的子网不同的远程 worker 节点使用不同的网络片段或子网。此类设置可以降低边缘的延迟并允许增强的可扩展性。但是,在安装 OpenShift Container Platform 前,必须正确配置网络,以确保包含远程 worker 节点的边缘子网可以访问包含 control plane 节点的子网,并从 control plane 节点接收流量。
所有 control plane 节点必须在同一子网中运行。当使用多个子网时,您还可以使用清单将 Ingress VIP 配置为在 control plane 节点上运行。详情请参阅"配置要在 control plane 上运行的网络组件"。
使用多个子网部署集群需要使用虚拟介质。
此流程详细介绍了允许第二个子网中的远程 worker 节点与第一个子网中的 control plane 节点有效通信所需的网络配置,并允许第一个子网中的 control plane 节点与第二个子网中的远程 worker 节点有效通信。
在此过程中,集群跨越两个子网:
-
第一个子网 (
10.0.0.0) 包含 control plane 和本地 worker 节点。 -
第二个子网 (
192.168.0.0) 包含边缘工作程序节点。
流程
配置第一个子网与第二个子网通信:
运行以下命令,以
root用户身份登录 control plane 节点:sudo su -
$ sudo su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取网络接口名称:
nmcli dev status
# nmcli dev statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
通过网关将路由添加到第二个子网(
192.168.0.0):s+
nmcli connection modify <interface_name> +ipv4.routes "192.168.0.0/24 via <gateway>"
# nmcli connection modify <interface_name> +ipv4.routes "192.168.0.0/24 via <gateway>"
+ 将 <interface_name> 替换为接口名称。使用实际网关的 IP 地址替换 <gateway>。
+ .Example
+
nmcli connection modify eth0 +ipv4.routes "192.168.0.0/24 via 192.168.0.1"
# nmcli connection modify eth0 +ipv4.routes "192.168.0.0/24 via 192.168.0.1"
应用更改:
nmcli connection up <interface_name>
# nmcli connection up <interface_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<interface_name>替换为接口名称。验证路由表以确保路由已被成功添加:
ip route
# ip routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对第一个子网中的每个 control plane 节点重复前面的步骤。
注意调整命令以匹配您的实际接口名称和网关。
- 将第二个子网配置为与第一个子网通信:
以
root用户身份登录远程 worker 节点:sudo su -
$ sudo su -Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取网络接口名称:
nmcli dev status
# nmcli dev statusCopy to Clipboard Copied! Toggle word wrap Toggle overflow 通过网关将路由添加到第一个子网 (
10.0.0.0):nmcli connection modify <interface_name> +ipv4.routes "10.0.0.0/24 via <gateway>"
# nmcli connection modify <interface_name> +ipv4.routes "10.0.0.0/24 via <gateway>"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<interface_name>替换为接口名称。使用实际网关的 IP 地址替换<gateway>。示例
nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 via 10.0.0.1"
# nmcli connection modify eth0 +ipv4.routes "10.0.0.0/24 via 10.0.0.1"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 应用更改:
nmcli connection up <interface_name>
# nmcli connection up <interface_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<interface_name>替换为接口名称。验证路由表以确保路由已被成功添加:
ip route
# ip routeCopy to Clipboard Copied! Toggle word wrap Toggle overflow 对第二个子网中的每个 worker 节点重复前面的步骤。
注意调整命令以匹配您的实际接口名称和网关。
- 配置网络后,测试连接以确保远程 worker 节点可以访问 control plane 节点,control plane 节点可以访问远程 worker 节点。
从第一个子网中的 control plane 节点,ping 第二个子网中的远程 worker 节点:
ping <remote_worker_node_ip_address>
$ ping <remote_worker_node_ip_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 ping 成功,这意味着第一个子网中的 control plane 节点可以访问第二个子网中的远程 worker 节点。如果您没有收到响应,请检查网络配置并重复该节点的步骤。
从第二个子网中的远程 worker 节点,ping 第一个子网中的 control plane 节点:
ping <control_plane_node_ip_address>
$ ping <control_plane_node_ip_address>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果 ping 成功,则意味着第二个子网中的远程 worker 节点可以访问第一个子网中的 control plane。如果您没有收到响应,请检查网络配置并重复该节点的步骤。
13.3.4. 检索 OpenShift Container Platform 安装程序 复制链接链接已复制到粘贴板!
使用安装程序的 stable-4.x 版本来部署 OpenShift Container Platform 的通用稳定版本:
export VERSION=stable-4.10
$ export VERSION=stable-4.10
export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
13.3.5. 提取 OpenShift Container Platform 安装程序 复制链接链接已复制到粘贴板!
在获取安装程序后,下一步是提取它。
流程
设置环境变量:
export cmd=openshift-baremetal-install
$ export cmd=openshift-baremetal-installCopy to Clipboard Copied! Toggle word wrap Toggle overflow export pullsecret_file=~/pull-secret.txt
$ export pullsecret_file=~/pull-secret.txtCopy to Clipboard Copied! Toggle word wrap Toggle overflow export extract_dir=$(pwd)
$ export extract_dir=$(pwd)Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取
oc二进制文件:curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
$ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - ocCopy to Clipboard Copied! Toggle word wrap Toggle overflow 解压安装程序:
sudo cp oc /usr/local/bin
$ sudo cp oc /usr/local/binCopy to Clipboard Copied! Toggle word wrap Toggle overflow oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}$ oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo cp openshift-baremetal-install /usr/local/bin
$ sudo cp openshift-baremetal-install /usr/local/binCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.6. (可选)创建 RHCOS 镜像缓存 复制链接链接已复制到粘贴板!
要使用镜像缓存,您必须下载 bootstrap 虚拟机使用的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像,以置备集群节点。镜像缓存是可选的,但在有限带宽的网络中运行安装程序时特别有用。
安装程序不再需要 clusterOSImage RHCOS 镜像,因为正确的镜像位于发行版本有效负载中。
如果您在带有有限带宽的网络中运行安装程序,且 RHCOS 镜像下载时间超过 15 到 20 分钟,安装程序会超时。在这种情况下,将映像缓存到 Web 服务器上将有所帮助。
安装包含镜像的容器。
流程
安装
podman:sudo dnf install -y podman
$ sudo dnf install -y podmanCopy to Clipboard Copied! Toggle word wrap Toggle overflow 打开防火墙端口
8080以用于 RHCOS 镜像缓存:sudo firewall-cmd --add-port=8080/tcp --zone=public --permanent
$ sudo firewall-cmd --add-port=8080/tcp --zone=public --permanentCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --reload
$ sudo firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建用于存储
bootstraposimage的目录:mkdir /home/kni/rhcos_image_cache
$ mkdir /home/kni/rhcos_image_cacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为新创建的目录设置适当的 SELinux 上下文:
sudo semanage fcontext -a -t httpd_sys_content_t "/home/kni/rhcos_image_cache(/.*)?"
$ sudo semanage fcontext -a -t httpd_sys_content_t "/home/kni/rhcos_image_cache(/.*)?"Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo restorecon -Rv /home/kni/rhcos_image_cache/
$ sudo restorecon -Rv /home/kni/rhcos_image_cache/Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取安装程序要在 bootstrap 虚拟机上部署的 RHCOS 镜像的 URI:
export RHCOS_QEMU_URI=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.qemu.formats["qcow2.gz"].disk.location')
$ export RHCOS_QEMU_URI=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.qemu.formats["qcow2.gz"].disk.location')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取安装程序要在 bootstrap 虚拟机上部署的镜像名称:
export RHCOS_QEMU_NAME=${RHCOS_QEMU_URI##*/}$ export RHCOS_QEMU_NAME=${RHCOS_QEMU_URI##*/}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取要在 bootstrap 虚拟机上部署的 RHCOS 镜像的 SHA 哈希:
export RHCOS_QEMU_UNCOMPRESSED_SHA256=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.qemu.formats["qcow2.gz"].disk["uncompressed-sha256"]')
$ export RHCOS_QEMU_UNCOMPRESSED_SHA256=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.qemu.formats["qcow2.gz"].disk["uncompressed-sha256"]')Copy to Clipboard Copied! Toggle word wrap Toggle overflow 下载镜像并将其放在
/home/kni/rhcos_image_cache目录中:curl -L ${RHCOS_QEMU_URI} -o /home/kni/rhcos_image_cache/${RHCOS_QEMU_NAME}$ curl -L ${RHCOS_QEMU_URI} -o /home/kni/rhcos_image_cache/${RHCOS_QEMU_NAME}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为新文件确认 SELinux 类型为
httpd_sys_content_t:ls -Z /home/kni/rhcos_image_cache
$ ls -Z /home/kni/rhcos_image_cacheCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建 pod:
podman run -d --name rhcos_image_cache \ -v /home/kni/rhcos_image_cache:/var/www/html \ -p 8080:8080/tcp \ quay.io/centos7/httpd-24-centos7:latest
$ podman run -d --name rhcos_image_cache \1 -v /home/kni/rhcos_image_cache:/var/www/html \ -p 8080:8080/tcp \ quay.io/centos7/httpd-24-centos7:latestCopy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 创建名为
rhcos_image_cache的缓存 webserver。此 pod 在install-config.yaml文件中为部署提供bootstrapOSImage镜像。
生成
bootstrapOSImage配置:export BAREMETAL_IP=$(ip addr show dev baremetal | awk '/inet /{print $2}' | cut -d"/" -f1)$ export BAREMETAL_IP=$(ip addr show dev baremetal | awk '/inet /{print $2}' | cut -d"/" -f1)Copy to Clipboard Copied! Toggle word wrap Toggle overflow export BOOTSTRAP_OS_IMAGE="http://${BAREMETAL_IP}:8080/${RHCOS_QEMU_NAME}?sha256=${RHCOS_QEMU_UNCOMPRESSED_SHA256}"$ export BOOTSTRAP_OS_IMAGE="http://${BAREMETAL_IP}:8080/${RHCOS_QEMU_NAME}?sha256=${RHCOS_QEMU_UNCOMPRESSED_SHA256}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow echo " bootstrapOSImage=${BOOTSTRAP_OS_IMAGE}"$ echo " bootstrapOSImage=${BOOTSTRAP_OS_IMAGE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 platform.
baremetal下将所需的配置添加到install-config.yaml文件中:platform: baremetal: bootstrapOSImage: <bootstrap_os_image>platform: baremetal: bootstrapOSImage: <bootstrap_os_image>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 将
<bootstrap_os_image>替换为$BOOTSTRAP_OS_IMAGE的值。
如需了解更多详细信息,请参阅"配置 install-config.yaml 文件"部分。
13.3.7. 配置 install-config.yaml 文件 复制链接链接已复制到粘贴板!
13.3.7.1. 配置 install-config.yaml 文件 复制链接链接已复制到粘贴板!
install-config.yaml 文件需要一些额外的详情。大多数信息都教授安装程序,生成的集群有足够的集群来完全管理它。
安装程序不再需要 clusterOSImage RHCOS 镜像,因为正确的镜像位于发行版本有效负载中。
配置
install-config.yaml。更改适当的变量以匹配环境,包括pullSecret和sshKey。Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 根据作为 OpenShift Container Platform 集群一部分的 worker 节点数量,扩展 worker 机器。
replicas值可以是0,以及大于或等于2的整数。将副本数设置为0以部署一个三节点集群,该集群仅包含三个 control plane 机器。三节点集群是一个较小的、效率更高的集群,可用于测试、开发和生产。您不能只使用一个 worker 安装集群。 - 2 4 6 8
- 如需了解更多选项,请参阅 BMC 寻址部分。
- 3 5 7 9
- 要设置安装磁盘驱动器的路径,请输入磁盘的内核名称。例如:
/dev/sda。重要由于磁盘发现顺序无法保证,因此磁盘的内核名称可以在具有多个磁盘的机器的引导选项之间更改。例如,
/dev/sda变成/dev/sdb,反之亦然。要避免这个问题,您必须使用持久性磁盘属性,如 disk World Wide Name (WWN)。要使用磁盘 WWN,请将deviceName参数替换为wwnWithExtension参数。根据您使用的参数,输入磁盘名称,如/dev/sda或磁盘 WWN,例如"0x64cd98f04fde100024684cf3034da5c2"。确保您在引号中输入磁盘 WWN 值,使其用作字符串值,而不是十六进制值。无法满足
rootDeviceHints参数的这些要求可能会导致以下错误:ironic-inspector inspection failed: No disks satisfied root device hints
ironic-inspector inspection failed: No disks satisfied root device hintsCopy to Clipboard Copied! Toggle word wrap Toggle overflow
创建用于存储集群配置的目录:
mkdir ~/clusterconfigs
$ mkdir ~/clusterconfigsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
install-config.yaml文件复制到新目录中:cp install-config.yaml ~/clusterconfigs
$ cp install-config.yaml ~/clusterconfigsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在安装 OpenShift Container Platform 集群前,请确保关闭所有裸机节点:
ipmitool -I lanplus -U <user> -P <password> -H <management-server-ip> power off
$ ipmitool -I lanplus -U <user> -P <password> -H <management-server-ip> power offCopy to Clipboard Copied! Toggle word wrap Toggle overflow 如果以前的部署尝试中保留了旧的 bootstrap 资源,请删除旧的 bootstrap 资源:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.7.2. 其他 install-config 参数 复制链接链接已复制到粘贴板!
下表列出了 install-config.yaml 文件所需的 参数、hosts 参数和 bmc 参数。
| 参数 | default | 描述 |
|---|---|---|
|
|
集群的域名。例如: | |
|
|
|
节点的引导模式。选项为 |
|
|
| |
|
|
| |
metadata:
name:
|
提供给 OpenShift Container Platform 集群的名称。例如: | |
networking:
machineNetwork:
- cidr:
|
外部网络的公共 CIDR(Classless Inter-Domain Routing)。例如: | |
compute: - name: worker
| OpenShift Container Platform 集群需要为 worker(或计算节点)节点提供一个名称,即使没有节点也是如此。 | |
compute:
replicas: 2
| replicas 设置 OpenShift Container Platform 集群中 worker(或计算)节点的数量。 | |
controlPlane:
name: master
| OpenShift Container Platform 集群需要一个 control plane(master)节点的名称。 | |
controlPlane:
replicas: 3
| replicas 设置作为 OpenShift Container Platform 集群一部分的 control plane(master)节点数量。 | |
|
|
连接到 provisioning 网络的节点上的网络接口名称。对于 OpenShift Container Platform 4.9 及更新的版本,使用 | |
|
| 用于没有平台配置的机器池的默认配置。 | |
|
| (可选)用于 Kubernetes API 通信的虚拟 IP 地址。
此设置必须在 | |
|
|
|
|
|
| (可选)入口流量的虚拟 IP 地址。
此设置必须在 |
| 参数 | default | 描述 |
|---|---|---|
|
|
| 定义 provisioning 网络上节点的 IP 范围。 |
|
|
| 用于置备的网络的 CIDR。在 provisioning 网络中不使用默认地址范围时需要这个选项。 |
|
|
|
运行置备服务的集群中的 IP 地址。默认为 provisioning 子网的第三个 IP 地址。例如: |
|
|
|
在安装程序部署 control plane(master)节点时运行置备服务的 bootstrap 虚拟机上的 IP 地址。默认为 provisioning 子网的第二个 IP 地址。例如: |
|
|
| 附加到裸机网络的虚拟机监控程序的裸机网桥名称。 |
|
|
|
附加到 provisioning 网络的 |
|
| 用于没有平台配置的机器池的默认配置。 | |
|
|
用于覆盖 bootstrap 节点的默认操作系统镜像的 URL。URL 必须包含镜像的 SHA-256 哈希。例如: | |
|
|
| |
|
| 将此参数设置为环境中使用的适当 HTTP 代理。 | |
|
| 将此参数设置为环境中使用的适当 HTTPS 代理。 | |
|
| 将此参数设置为适合环境中代理使用的排除项。 |
主机
hosts 参数是用于构建集群的独立裸机资产列表。
| 名称 | default | 描述 |
|---|---|---|
|
|
与详细信息 | |
|
|
裸机节点的角色。 | |
|
| 基板管理控制器的连接详情。如需了解更多详细信息,请参阅 BMC 寻址部分。 | |
|
|
主机用于 provisioning 网络的 NIC 的 MAC 地址。Ironic 使用 注意 如果您禁用了 provisioning 网络,则必须从主机提供有效的 MAC 地址。 | |
|
| 设置此可选参数来配置主机的网络接口。如需了解更多详细信息,请参阅"(可选)配置主机网络接口"。 |
13.3.7.3. BMC 地址 复制链接链接已复制到粘贴板!
大多数供应商支持使用智能平台管理接口(IPMI)寻址的基板管理控制器(BMC)。IPMI 不加密通信。它适用于通过安全或专用管理网络在数据中心内使用。检查您的供应商,了解它们是否支持 Redfish 网络引导。RedFish 为融合、混合型 IT 和软件定义型数据中心(SDDC)提供简单而安全的管理。RedFish 是人类可读的,能够使用通用的互联网和 Web 服务标准将信息直接公开给现代工具链。如果您的硬件不支持 Redfish 网络引导,请使用 IPMI。
IPMI
使用 IPMI 的主机使用 ipmi://<out-of-band-ip>:<port> 地址格式,如果未指定则默认为端口 623。以下示例演示了 install-config.yaml 文件中的 IPMI 配置。
当 PXE 引导使用 IPMI 进行 BMC 寻址时,需要 provisioning 网络。没有 provisioning 网络,就无法 PXE 引导主机。如果您在没有 provisioning 网络的情况下部署,则必须使用虚拟介质 BMC 寻址选项,如 redfish-virtualmedia 或 idrac-virtualmedia。详情请查看 "Redfish 虚拟介质 for HPE iLO" 部分的"适用于 HPE iLO 的 BMC 寻址"部分或"适用于戴尔 iDRAC 的"红帽虚拟媒体"部分中的"红帽虚拟介质"。
RedFish 网络引导
要启用 Redfish,请使用 redfish:// 或 redfish+http:// 禁用 TLS。安装程序需要主机名或 IP 地址,以及系统 ID 的路径。以下示例演示了 install-config.yaml 文件中的 Redfish 配置。
虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。
13.3.7.4. 适用于 Dell iDRAC 的 BMC 寻址 复制链接链接已复制到粘贴板!
每个 bmc 条目 的地址 字段是连接到 OpenShift Container Platform 集群节点的 URL,包括 URL 方案中的控制器类型及其网络中的位置。
- 1
地址配置设置指定协议。
对于 Dell 硬件,红帽支持集成 Dell Remote Access Controller(iDRAC)虚拟介质、Redfish 网络引导和 IPMI。
Dell iDRAC 的 BMC 地址格式
| 协议 | 地址格式 |
|---|---|
| iDRAC 虚拟介质 |
|
| RedFish 网络引导 |
|
| IPMI |
|
使用 idrac-virtualmedia 作为 Redfish 虚拟介质的协议。RedFish-virtualmedia 无法在 Dell 硬件上运行。Dell 的 idrac-virtualmedia 使用带 Dell OEM 扩展的 Redfish 标准。
详情请查看以下部分。
Dell iDRAC 的 RedFish 虚拟介质
对于 Dell 服务器上的 Redfish 虚拟介质,在 address 设置中使用 idrac-virtualmedia://。使用 redfish-virtualmedia:// 无法正常工作。
以下示例演示了在 install-config.yaml 文件中使用 iDRAC 虚拟介质。
虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。
对于裸机部署中的安装程序置备安装,Dell iDRAC 9 存在一个带有固件版本 04.40.00.00 或更高版本的已知问题。Virtual Console 插件默认为 eHTML5,它是 HTML5 的增强版本,这会导致 InsertVirtualMedia 工作流出现问题。将插件设置为使用 HTML5 以避免出现这个问题。菜单路径为 Configuration
通过 iDRAC 控制台,确保 OpenShift Container Platform 集群节点启用了 AutoAttach。菜单路径为: Configuration
使用 idrac-virtualmedia:// 作为 Redfish 虚拟介质的协议。使用 redfish-virtualmedia:// 无法在 Dell 硬件中工作,因为 idrac-virtualmedia:// 协议与 Ironic 中的 idrac 硬件类型和 Redfish 协议对应。Dell 的 idrac-virtualmedia:// 协议使用带有 Dell OEM 扩展的 Redfish 标准。Ironic 还支持带有 WSMAN 协议的 idrac 类型。因此,您必须指定 idrac-virtualmedia://,以避免在 Dell 硬件上选择使用 Redfish 和虚拟介质时出现意外行为。
iDRAC 的 RedFish 网络引导
要启用 Redfish,请使用 redfish:// 或 redfish+http:// 禁用传输层安全(TLS)。安装程序需要主机名或 IP 地址,以及系统 ID 的路径。以下示例演示了 install-config.yaml 文件中的 Redfish 配置。
虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。
Dell iDRAC 9 中存在一个已知问题,带有固件版本 04.40.00.00,所有版本都包括 5xx 系列,用于裸机部署中的安装程序置备安装。虚拟控制台插件默认为 eHTML5,它是 HTML5 的增强版本,这会导致 InsertVirtualMedia 工作流出现问题。将插件设置为使用 HTML5 以避免出现这个问题。菜单路径为 Configuration
通过 iDRAC 控制台,确保 OpenShift Container Platform 集群节点启用了 AutoAttach。菜单路径为: Configuration
13.3.7.5. HPE iLO 的 BMC 寻址 复制链接链接已复制到粘贴板!
每个 bmc 条目 的地址 字段是连接到 OpenShift Container Platform 集群节点的 URL,包括 URL 方案中的控制器类型及其网络中的位置。
- 1
地址配置设置指定协议。
对于 HPE 集成 Lights Out(iLO),红帽支持红帽虚拟媒体、Redfish 网络引导和 IPMI。
| 协议 | 地址格式 |
|---|---|
| RedFish 虚拟介质 |
|
| RedFish 网络引导 |
|
| IPMI |
|
详情请查看以下部分。
HPE iLO 的 RedFish 虚拟介质
要为 HPE 服务器启用 Redfish 虚拟介质,请在 address 设置中使用 redfish-virtualmedia://。以下示例演示了在 install-config.yaml 文件中使用 Redfish 虚拟介质。
虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。
运行 iLO4 的 9 代系统上不支持 RedFish 虚拟介质,因为 Ironic 不支持使用虚拟介质的 iLO4。
HPE iLO 的 RedFish 网络引导
要启用 Redfish,请使用 redfish:// 或 redfish+http:// 禁用 TLS。安装程序需要主机名或 IP 地址,以及系统 ID 的路径。以下示例演示了 install-config.yaml 文件中的 Redfish 配置。
虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。
13.3.7.6. Fujitsu iRMC 的 BMC 寻址 复制链接链接已复制到粘贴板!
每个 bmc 条目 的地址 字段是连接到 OpenShift Container Platform 集群节点的 URL,包括 URL 方案中的控制器类型及其网络中的位置。
- 1
地址配置设置指定协议。
对于富士通硬件,红帽支持集成远程管理控制器(iRMC)和 IPMI。
| 协议 | 地址格式 |
|---|---|
| iRMC |
|
| IPMI |
|
iRMC
Fujitsu 节点可以使用 irmc://<out-of-band-ip>,默认为端口 443。以下示例演示了 install-config.yaml 文件中的 iRMC 配置。
目前,Fujitsu 支持 iRMC S5 固件版本 3.05 及更高版本用于裸机上的安装程序置备安装。
13.3.7.7. Root 设备提示 复制链接链接已复制到粘贴板!
rootDeviceHints 参数可让安装程序将 Red Hat Enterprise Linux CoreOS(RHCOS)镜像置备到特定的设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。安装程序使用第一个与 hint 值匹配的发现设备。配置可以组合多个 hint,但设备必须与所有提示匹配,以便安装程序进行选择。
| 子字段 | 描述 |
|---|---|
|
|
包含类似 |
|
|
包含类似 |
|
| 包含特定厂商的设备标识符的字符串。hint 可以是实际值的子字符串。 |
|
| 包含该设备厂商或制造商名称的字符串。hint 可以是实际值的子字符串。 |
|
| 包含设备序列号的字符串。hint 必须与实际值完全匹配。 |
|
| 以 GB 为单位代表设备的最小大小的整数。 |
|
| 包含唯一存储标识符的字符串。hint 必须与实际值完全匹配。 |
|
| 包含唯一存储标识符的字符串,并附加厂商扩展。hint 必须与实际值完全匹配。 |
|
| 包含唯一厂商存储标识符的字符串。hint 必须与实际值完全匹配。 |
|
| 指明该设备为旋转磁盘(true)还是非旋转磁盘(false)的布尔值。 |
用法示例
13.3.7.8. (可选)设置代理设置 复制链接链接已复制到粘贴板!
要使用代理部署 OpenShift Container Platform 集群,请对 install-config.yaml 文件进行以下更改。
以下是带有值的 noProxy 示例。
noProxy: .example.com,172.22.0.0/24,10.10.0.0/24
noProxy: .example.com,172.22.0.0/24,10.10.0.0/24
启用代理后,在对应的键/值对中设置代理的适当值。
主要考虑:
-
如果代理没有 HTTPS 代理,请将
httpsProxy 的值从 https:// 改为http://。 -
如果使用 provisioning 网络,将其包含在
noProxy设置中,否则安装程序将失败。 -
将所有代理设置设置为 provisioner 节点中的环境变量。例如:
HTTP_PROXY、HTTPS_PROXY和NO_PROXY。
使用 IPv6 置备时,您无法在 noProxy 设置中定义 CIDR 地址块。您必须单独定义每个地址。
13.3.7.9. (可选)在没有 provisioning 网络的情况下部署 复制链接链接已复制到粘贴板!
要在没有 provisioning 网络的情况下部署 OpenShift Container Platform 集群,请对 install-config.yaml 文件进行以下更改。
platform:
baremetal:
apiVIP: <api_VIP>
ingressVIP: <ingress_VIP>
provisioningNetwork: "Disabled"
platform:
baremetal:
apiVIP: <api_VIP>
ingressVIP: <ingress_VIP>
provisioningNetwork: "Disabled"
- 1
- 如果需要,添加
provisioningNetwork配置设置并将其设置为Disabled。
PXE 引导需要 provisioning 网络。如果您在没有 provisioning 网络的情况下部署,则必须使用虚拟介质 BMC 寻址选项,如 redfish-virtualmedia 或 idrac-virtualmedia。详情请查看 "Redfish 虚拟介质 for HPE iLO" 部分的"适用于 HPE iLO 的 BMC 寻址"部分或"适用于戴尔 iDRAC 的"红帽虚拟媒体"部分中的"红帽虚拟介质"。
13.3.7.10. (可选)使用双栈网络部署 复制链接链接已复制到粘贴板!
要使用双栈网络部署 OpenShift Container Platform 集群,请编辑 install-config.yaml 文件中的 machineNetwork, clusterNetwork, 和 serviceNetwork 配置。每个设置必须分别有两个 CIDR 条目。确保第一个 CIDR 条目是 IPv4 设置,第二个 CIDR 条目是 IPv6 设置。
使用双栈网络时,API VIP IP 地址和 Ingress VIP 地址必须是主 IP 地址系列。目前,红帽不支持将 IPv6 作为主要 IP 地址系列的双栈 VIP 或双栈网络。但是,红帽确实支持将 IPv4 作为主要 IP 地址系列的双栈网络。因此,IPv4 条目必须放在 IPv6 条目 前面。
13.3.7.11. (可选)配置主机网络接口 复制链接链接已复制到粘贴板!
在安装前,您可以在 install-config.yaml 文件中设置 networkConfig 配置设置,以使用 NMState 配置主机网络接口。
此功能的最常见用例是在 bare-metal 网络中指定一个静态 IP 地址,但您也可以配置其他网络,如存储网络。此功能支持 VLAN、VXLAN、网桥、绑定、路由、MTU 和 DNS 解析器设置等其他 NMState 功能。
先决条件
-
使用静态 IP 地址为每个节点配置带有有效主机名的
PTRDNS 记录。 -
安装 NMState CLI (
nmstate)。
流程
可选:在
install-config.yaml文件中包括nmstatectl gc前测试 NMState 语法,因为安装程序不会检查 NMState YAML 语法。注意YAML 语法中的错误可能会导致无法应用网络配置。另外,在部署后或在扩展集群时应用 Kubernetes NMState 更改时,维护所验证的 YAML 语法会很有用。
创建 NMState YAML 文件:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令来测试配置文件:
nmstatectl gc <nmstate_yaml_file>
$ nmstatectl gc <nmstate_yaml_file>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<nmstate_yaml_file>替换为配置文件名称。
通过在
install-config.yaml文件中的主机中添加 NMState 配置,使用networkConfig配置设置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要部署集群后,您无法修改
install-config.yaml文件的networkConfig配置设置,以更改主机网络接口。在部署后,使用 Kubernetes NMState Operator 更改主机网络接口。
13.3.7.12. 为子网配置主机网络接口 复制链接链接已复制到粘贴板!
对于边缘计算场景,找到接近边缘的 worker 节点会很有用。要在子网中定位远程 worker 节点,您可以对远程 worker 节点使用不同的网络片段或子网,而不是用于 control plane 子网和本地 worker 节点。您可以通过为边缘计算场景设置子网来减少边缘延迟并允许增强可扩展性。
如果您为远程 worker 节点创建了不同的网络段或子网,如 "Establishing communication" 部分所述,如果 worker 使用静态 IP 地址、绑定或其他高级网络,您必须在 machineNetwork 配置设置中指定子网。当为每个远程 worker 节点设置 networkConfig 参数中的节点 IP 地址时,还必须在使用静态 IP 地址时为包含 control plane 节点的子网指定网关和 DNS 服务器。这样可确保远程 worker 节点可以访问包含 control plane 节点的子网,它们可以从 control plane 接收网络流量。
所有 control plane 节点必须在同一子网中运行。当使用多个子网时,您还可以使用清单将 Ingress VIP 配置为在 control plane 节点上运行。详情请参阅"配置要在 control plane 上运行的网络组件"。
使用多个子网部署集群需要使用虚拟介质,如 redfish-virtualmedia 和 idrac-virtualmedia。
流程
在使用静态 IP 地址时,将子网添加到
install-config.yaml文件中的machineNetwork中:networking: machineNetwork: - cidr: 10.0.0.0/24 - cidr: 192.168.0.0/24 networkType: OVNKubernetes
networking: machineNetwork: - cidr: 10.0.0.0/24 - cidr: 192.168.0.0/24 networkType: OVNKubernetesCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在使用静态 IP 地址或高级网络(如绑定)时,使用 NMState 语法将网关和 DNS 配置添加到每个边缘 worker 节点的
networkConfig参数中:Copy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.7.13. 配置多个集群节点 复制链接链接已复制到粘贴板!
您可以使用相同的设置同时配置 OpenShift Container Platform 集群节点。配置多个集群节点可避免在 install-config.yaml 文件中添加每个节点的冗余信息。这个文件包含特定的参数,可将相同的配置应用到集群中的多个节点。
Compute 节点与控制器节点独立配置。但是,两个节点类型的配置都使用 install-config.yaml 文件中突出显示的参数启用多节点配置。将 networkConfig 参数设置为 BOND,如下例所示:
配置多个集群节点仅适用于安装程序置备的基础架构上的初始部署。
13.3.7.14. (可选)配置受管安全引导 复制链接链接已复制到粘贴板!
在使用 Redfish BMC 寻址(如 redfish, redfish-virtualmedia, 或 idrac-virtualmedia)部署安装程序置备的集群时,您可以启用受管安全引导。要启用受管安全引导,请在每个节点中添加 bootMode 配置设置:
示例
请参阅"先决条件"中的"配置节点",以确保节点能够支持受管安全引导。如果节点不支持受管安全引导,请参阅"配置节点"部分中的"手动配置安全引导节点"。手动配置安全引导机制需要 Redfish 虚拟介质。
红帽不支持使用 IPMI 进行安全引导,因为 IPMI 不提供安全引导管理功能。
13.3.8. 清单配置文件 复制链接链接已复制到粘贴板!
13.3.8.1. 创建 OpenShift Container Platform 清单 复制链接链接已复制到粘贴板!
创建 OpenShift Container Platform 清单。
./openshift-baremetal-install --dir ~/clusterconfigs create manifests
$ ./openshift-baremetal-install --dir ~/clusterconfigs create manifestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow INFO Consuming Install Config from target directory WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regenerated
INFO Consuming Install Config from target directory WARNING Making control-plane schedulable by setting MastersSchedulable to true for Scheduler cluster settings WARNING Discarding the OpenShift Manifest that was provided in the target directory because its dependencies are dirty and it needs to be regeneratedCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.8.2. (可选)为断开连接的集群配置 NTP 复制链接链接已复制到粘贴板!
OpenShift Container Platform 在集群节点上安装 chrony 网络时间协议(NTP)服务。
OpenShift Container Platform 节点必须在日期和时间上达成一致才能正确运行。当 worker 节点从 control plane 节点上的 NTP 服务器检索日期和时间时,它会启用未连接到可路由网络的集群的安装和操作,因此无法访问更高的 stratum NTP 服务器。
流程
为 control plane 节点创建一个 Butane 配置
99-master-chrony-conf-override.bu,包括chrony.conf文件的内容。注意如需有关 Butane 的信息,请参阅"使用 Butane 创建机器配置"。
但ane 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您必须将
<cluster-name>替换为集群名称,并将<domain>替换为完全限定域名。
使用 Butane 生成
MachineConfig对象文件99-master-chrony-conf-override.yaml,其中包含要发送到 control plane 节点的配置:butane 99-master-chrony-conf-override.bu -o 99-master-chrony-conf-override.yaml
$ butane 99-master-chrony-conf-override.bu -o 99-master-chrony-conf-override.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为引用 control plane 节点上的 NTP 服务器的 worker 节点创建 Butane 配置
99-worker-chrony-conf-override.bu,包括chrony.conf文件的内容。但ane 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 您必须将
<cluster-name>替换为集群名称,并将<domain>替换为完全限定域名。
使用 Butane 生成
MachineConfig对象文件99-worker-chrony-conf-override.yaml,其中包含要交付至 worker 节点的配置:butane 99-worker-chrony-conf-override.bu -o 99-worker-chrony-conf-override.yaml
$ butane 99-worker-chrony-conf-override.bu -o 99-worker-chrony-conf-override.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.8.3. (可选)配置要在 control plane 上运行的网络组件 复制链接链接已复制到粘贴板!
您可以配置网络组件,使其仅在 control plane 节点上运行。默认情况下,OpenShift Container Platform 允许机器配置池中的任何节点托管 ingressVIP 虚拟 IP 地址。但是,某些环境在与 control plane 节点独立的子网中部署 worker 节点。在单独的子网中部署远程 worker 时,您必须将 ingressVIP 虚拟 IP 地址专门用于 control plane 节点。
流程
进入存储
install-config.yaml文件的目录:cd ~/clusterconfigs
$ cd ~/clusterconfigsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 切换到
manifests子目录:cd manifests
$ cd manifestsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建名为
cluster-network-avoid-workers-99-config.yaml的文件:touch cluster-network-avoid-workers-99-config.yaml
$ touch cluster-network-avoid-workers-99-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 在编辑器中打开
cluster-network-avoid-workers-99-config.yaml文件,并输入描述 Operator 配置的自定义资源(CR):Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此清单将
ingressVIP虚拟 IP 地址放在 control plane 节点上。另外,此清单仅在 control plane 节点上部署以下进程:-
openshift-ingress-operator -
keepalived
-
-
保存
cluster-network-avoid-workers-99-config.yaml文件。 创建
manifests/cluster-ingress-default-ingresscontroller.yaml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
考虑备份
manifests目录。在创建集群时,安装程序会删除manifests/目录。 通过将
mastersSchedulable字段设置为true来修改cluster-scheduler-02-config.yml清单,使 control plane 节点可以调度。默认情况下,control plane 节点不可调度。例如:sed -i "s;mastersSchedulable: false;mastersSchedulable: true;g" clusterconfigs/manifests/cluster-scheduler-02-config.yml
$ sed -i "s;mastersSchedulable: false;mastersSchedulable: true;g" clusterconfigs/manifests/cluster-scheduler-02-config.ymlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意如果在完成此步骤后 control plane 节点不可调度,则部署集群将失败。
13.3.8.4. (可选)在 worker 节点上部署路由器 复制链接链接已复制到粘贴板!
在安装过程中,安装程序会在 worker 节点上部署路由器 Pod。默认情况下,安装程序会安装两个路由器 Pod。如果部署的集群需要额外的路由器来处理用于 OpenShift Container Platform 集群中服务的外部流量负载,您可以创建一个 yaml 文件来设置适当数量的路由器副本。
不支持只使用一个 worker 节点部署集群。虽然在使用一个 worker 时修改路由器副本数量会解决降级状态的问题,但集群丢失了入口 API 的高可用性,它不适用于生产环境。
默认情况下,安装程序会部署两个路由器。如果集群没有 worker 节点,安装程序默认会在 control plane 节点上部署两个路由器。
流程
创建
router-replicas.yaml文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意将
<num-of-router-pods>替换为适当的值。如果只使用一个 worker 节点,请将replicas:设置为1。如果使用 3 个以上 worker 节点,您可以根据情况增加replicas:的默认值2。将
router-replicas.yaml文件复制到clusterconfigs/openshift目录中:cp ~/router-replicas.yaml clusterconfigs/openshift/99_router-replicas.yaml
$ cp ~/router-replicas.yaml clusterconfigs/openshift/99_router-replicas.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.8.5. (可选)为 worker 节点配置 BIOS 复制链接链接已复制到粘贴板!
以下流程在安装过程中为 worker 节点配置 BIOS。
流程
- 创建清单。
修改与 worker 对应的 BMH 文件:
vim clusterconfigs/openshift/99_openshift-cluster-api_hosts-3.yaml
$ vim clusterconfigs/openshift/99_openshift-cluster-api_hosts-3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 BIOS 配置添加到 BMH 文件的
spec部分:spec: firmware: simultaneousMultithreadingEnabled: true sriovEnabled: true virtualizationEnabled: truespec: firmware: simultaneousMultithreadingEnabled: true sriovEnabled: true virtualizationEnabled: trueCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意-
红帽支持三种 BIOS 配置:详情请查看 BMH 文档。仅支持 BMC 类型
irmc的服务器。目前不支持其他类型的服务器。
-
红帽支持三种 BIOS 配置:详情请查看 BMH 文档。仅支持 BMC 类型
- 创建集群。
13.3.8.6. (可选)为 worker 节点配置 RAID 复制链接链接已复制到粘贴板!
以下流程在安装过程中为 worker 节点配置独立磁盘的冗余阵列(RAID)。
- OpenShift Container Platform 仅支持使用 iRMC 协议进行基板管理控制器 (BMC) 的硬件 RAID。OpenShift Container Platform 4.10 不支持软件 RAID。
- 如果要为节点配置硬件 RAID,请验证节点是否具有 RAID 控制器。
流程
- 创建清单。
修改与 worker 对应的 BMH(Bare Metal Host)文件:
vim clusterconfigs/openshift/99_openshift-cluster-api_hosts-3.yaml
$ vim clusterconfigs/openshift/99_openshift-cluster-api_hosts-3.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意以下示例使用硬件 RAID 配置,因为 OpenShift Container Platform 4.10 不支持软件 RAID。
如果您在
spec部分添加了特定的 RAID 配置,这会导致 worker 节点在preparing阶段删除原始 RAID 配置,并在 RAID 上执行指定的配置。例如:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
level是必填字段,另一个是可选字段。
如果您在
spec部分添加了空的 RAID 配置,这个空配置会导致 worker 节点在preparing阶段删除原始 RAID 配置,但不会执行新配置。例如:spec: raid: hardwareRAIDVolumes: []spec: raid: hardwareRAIDVolumes: []Copy to Clipboard Copied! Toggle word wrap Toggle overflow -
如果您没有在
spec部分添加raid字段,则原始 RAID 配置不会被删除,且不会执行新的配置。
- 创建集群。
13.3.9. 创建断开连接的 registry 复制链接链接已复制到粘贴板!
在某些情况下,您可能想要使用安装 registry 的本地副本安装 OpenShift Container Platform 集群。这可能是为了提高网络效率,因为集群节点位于无法访问互联网的网络中。
一个本地的或被镜像的 registry 副本需要以下内容:
- registry 节点的证书。这可以是自签名证书。
- 系统中的容器将服务的 Web 服务器。
- 包含证书和本地存储库信息的更新的 pull secret。
在 registry 节点上创建断开连接的 registry 是可选的。如果需要在 registry 节点上创建断开连接的 registry,您必须完成以下所有子章节。
先决条件
13.3.9.1. 准备 registry 节点以托管已镜像的 registry 复制链接链接已复制到粘贴板!
在裸机上托管镜像的 registry 之前,必须完成以下步骤。
流程
打开 registry 节点上的防火墙端口:
sudo firewall-cmd --add-port=5000/tcp --zone=libvirt --permanent
$ sudo firewall-cmd --add-port=5000/tcp --zone=libvirt --permanentCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --add-port=5000/tcp --zone=public --permanent
$ sudo firewall-cmd --add-port=5000/tcp --zone=public --permanentCopy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --reload
$ sudo firewall-cmd --reloadCopy to Clipboard Copied! Toggle word wrap Toggle overflow 为 registry 节点安装所需的软件包:
sudo yum -y install python3 podman httpd httpd-tools jq
$ sudo yum -y install python3 podman httpd httpd-tools jqCopy to Clipboard Copied! Toggle word wrap Toggle overflow 创建保存存储库信息的目录结构:
sudo mkdir -p /opt/registry/{auth,certs,data}$ sudo mkdir -p /opt/registry/{auth,certs,data}Copy to Clipboard Copied! Toggle word wrap Toggle overflow
完成以下步骤,为断开连接的 registry 镜像 OpenShift Container Platform 镜像存储库。
先决条件
- 您的镜像主机可访问互联网。
- 您已将镜像 registry 配置为在受限网络中使用,并可访问您配置的证书和凭证。
- 您已从 Red Hat OpenShift Cluster Manager 下载了 pull secret,并已修改为包含镜像存储库身份验证信息。
流程
- 查看 OpenShift Container Platform 下载页面,以确定您要安装的 OpenShift Container Platform 版本,并决定 Repository Tags 页中的相应标签(tag)。
设置所需的环境变量:
导出发行版本信息:
OCP_RELEASE=<release_version>
$ OCP_RELEASE=<release_version>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<release_version>,请指定与 OpenShift Container Platform 版本对应的标签,用于您的架构,如4.5.4。导出本地 registry 名称和主机端口:
LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'
$ LOCAL_REGISTRY='<local_registry_host_name>:<local_registry_host_port>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<local_registry_host_name>,请指定镜像存储库的 registry 域名;对于<local_registry_host_port>,请指定用于提供内容的端口。导出本地存储库名称:
LOCAL_REPOSITORY='<local_repository_name>'
$ LOCAL_REPOSITORY='<local_repository_name>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<local_repository_name>,请指定要在 registry 中创建的仓库名称,如ocp4/openshift4。导出要进行镜像的存储库名称:
PRODUCT_REPO='openshift-release-dev'
$ PRODUCT_REPO='openshift-release-dev'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于生产环境版本,必须指定
openshift-release-dev。导出 registry pull secret 的路径:
LOCAL_SECRET_JSON='<path_to_pull_secret>'
$ LOCAL_SECRET_JSON='<path_to_pull_secret>'Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于
<path_to_pull_secret>,请指定您创建的镜像 registry 的 pull secret 的绝对路径和文件名。导出发行版本镜像:
RELEASE_NAME="ocp-release"
$ RELEASE_NAME="ocp-release"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 对于生产环境版本,您必须指定
ocp-release。为您的服务器导出构架类型,如
x86_64:ARCHITECTURE=<server_architecture>
$ ARCHITECTURE=<server_architecture>Copy to Clipboard Copied! Toggle word wrap Toggle overflow 导出托管镜像的目录的路径:
REMOVABLE_MEDIA_PATH=<path>
$ REMOVABLE_MEDIA_PATH=<path>1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定完整路径,包括开始的前斜杠(/)字符。
将版本镜像(mirror)到镜像 registry:
如果您的镜像主机无法访问互联网,请执行以下操作:
- 将可移动介质连接到连接到互联网的系统。
查看要镜像的镜像和配置清单:
oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-run$ oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE} --dry-runCopy to Clipboard Copied! Toggle word wrap Toggle overflow -
记录上一命令输出中的
imageContentSources部分。您的镜像信息与您的镜像存储库相对应,您必须在安装过程中将imageContentSources部分添加到install-config.yaml文件中。 将镜像镜像到可移动介质的目录中:
oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}$ oc adm release mirror -a ${LOCAL_SECRET_JSON} --to-dir=${REMOVABLE_MEDIA_PATH}/mirror quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将介质上传到受限网络环境中,并将镜像上传到本地容器 registry。
oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}$ oc image mirror -a ${LOCAL_SECRET_JSON} --from-dir=${REMOVABLE_MEDIA_PATH}/mirror "file://openshift/release:${OCP_RELEASE}*" ${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 对于
REMOVABLE_MEDIA_PATH,您必须使用与镜像镜像时指定的同一路径。
如果本地容器 registry 连接到镜像主机,请执行以下操作:
使用以下命令直接将发行版镜像推送到本地 registry:
oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}$ oc adm release mirror -a ${LOCAL_SECRET_JSON} \ --from=quay.io/${PRODUCT_REPO}/${RELEASE_NAME}:${OCP_RELEASE}-${ARCHITECTURE} \ --to=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY} \ --to-release-image=${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}Copy to Clipboard Copied! Toggle word wrap Toggle overflow 该命令将发行信息提取为摘要,其输出包括安装集群时所需的
imageContentSources数据。记录上一命令输出中的
imageContentSources部分。您的镜像信息与您的镜像存储库相对应,您必须在安装过程中将imageContentSources部分添加到install-config.yaml文件中。注意镜像名称在镜像过程中被修补到 Quay.io, podman 镜像将在 bootstrap 虚拟机的 registry 中显示 Quay.io。
要创建基于您镜像内容的安装程序,请提取内容并将其固定到发行版中:
如果您的镜像主机无法访问互联网,请运行以下命令:
oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}"$ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果本地容器 registry 连接到镜像主机,请运行以下命令:
oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"$ oc adm release extract -a ${LOCAL_SECRET_JSON} --command=openshift-install "${LOCAL_REGISTRY}/${LOCAL_REPOSITORY}:${OCP_RELEASE}-${ARCHITECTURE}"Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要要确保将正确的镜像用于您选择的 OpenShift Container Platform 版本,您必须从镜像内容中提取安装程序。
您必须在有活跃互联网连接的机器上执行这个步骤。
如果您位于断开连接的环境中,请使用
--image标志作为 must-gather 的一部分,指向有效负载镜像。
对于使用安装程序置备的基础架构的集群,运行以下命令:
openshift-install
$ openshift-installCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.9.3. 修改 install-config.yaml 文件以使用断开连接的 registry 复制链接链接已复制到粘贴板!
在 provisioner 节点上,install -config.yaml 文件应该使用从 pull-secret- update.txt 文件中新创建的 pull-secret。install-config.yaml 文件还必须包含断开连接的 registry 节点的证书和 registry 信息。
流程
将断开连接的 registry 节点的证书添加到
install-config.yaml文件中:echo "additionalTrustBundle: |" >> install-config.yaml
$ echo "additionalTrustBundle: |" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 证书应跟在
"additionalTrustBundle: |"行后面,并正确缩进(通常为两个空格)。sed -e 's/^/ /' /opt/registry/certs/domain.crt >> install-config.yaml
$ sed -e 's/^/ /' /opt/registry/certs/domain.crt >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将 registry 的镜像信息添加到
install-config.yaml文件中:echo "imageContentSources:" >> install-config.yaml
$ echo "imageContentSources:" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow echo "- mirrors:" >> install-config.yaml
$ echo "- mirrors:" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow echo " - registry.example.com:5000/ocp4/openshift4" >> install-config.yaml
$ echo " - registry.example.com:5000/ocp4/openshift4" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
registry.example.com替换为 registry 的完全限定域名。echo " source: quay.io/openshift-release-dev/ocp-release" >> install-config.yaml
$ echo " source: quay.io/openshift-release-dev/ocp-release" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow echo "- mirrors:" >> install-config.yaml
$ echo "- mirrors:" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow echo " - registry.example.com:5000/ocp4/openshift4" >> install-config.yaml
$ echo " - registry.example.com:5000/ocp4/openshift4" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
registry.example.com替换为 registry 的完全限定域名。echo " source: quay.io/openshift-release-dev/ocp-v4.0-art-dev" >> install-config.yaml
$ echo " source: quay.io/openshift-release-dev/ocp-v4.0-art-dev" >> install-config.yamlCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.10. 为 bootstrap 虚拟机分配静态 IP 地址 复制链接链接已复制到粘贴板!
如果要在 baremetal 网络中在没有 DHCP 服务器的情况下部署 OpenShift Container Platform,则必须使用 Ignition 为 bootstrap 虚拟机配置静态 IP 地址。
流程
创建 ignition 配置文件:
./openshift-baremetal-install --dir <cluster_configs> create ignition-configs
$ ./openshift-baremetal-install --dir <cluster_configs> create ignition-configsCopy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<cluster_configs>替换为集群配置文件的路径。创建
bootstrap_config.sh文件:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<ip_address>和<cidr>替换为地址范围的 IP 地址和 CIDR。使用baremetal网络上的网关的 IP 地址替换<gateway_ip_address>。将<dns_ip_address>替换为baremetal网络上的 DNS 服务器的 IP 地址。将<cluster_configs>替换为集群配置文件的路径。使
bootstrap_config.sh文件可执行:chmod 755 bootstrap_config.sh
$ chmod 755 bootstrap_config.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
bootstrap_config.sh脚本来创建bootstrap_network_config.ign文件:./bootstrap_config.sh
$ ./bootstrap_config.shCopy to Clipboard Copied! Toggle word wrap Toggle overflow
13.3.11. 安装的验证清单 复制链接链接已复制到粘贴板!
- ❏ 已检索到 OpenShift Container Platform 安装程序。
- ❏ 已提取 OpenShift Container Platform 安装程序。
-
❏ 已配置了
install-config.yaml的必要参数。 -
❏ 已配置了
install-config.yaml的hosts参数。 -
❏ 已配置了
install-config.yaml的bmc参数。 -
❏ 在
bmcaddress字段中配置的值已被应用。 - ❏ 创建 OpenShift Container Platform 清单。
- ❏ (可选)在 worker 节点上部署路由器。
- ❏ (可选)创建断开连接的 registry。
- ❏ (可选)如果使用,验证断开连接的 registry 设置。
13.3.12. 通过 OpenShift Container Platform 安装程序部署集群 复制链接链接已复制到粘贴板!
运行 OpenShift Container Platform 安装程序:
./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster
$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster
13.3.13. 安装后 复制链接链接已复制到粘贴板!
在部署过程中,您可以通过向安装目录文件夹中的 .openshift_install.log 日志文件发出 tail 命令来检查安装的整体状态:
tail -f /path/to/install-dir/.openshift_install.log
$ tail -f /path/to/install-dir/.openshift_install.log
13.3.14. 验证静态 IP 地址配置 复制链接链接已复制到粘贴板!
如果集群节点的 DHCP 保留指定了无限租期,安装程序成功置备该节点后,分配程序脚本会检查节点的网络配置。如果脚本确定网络配置包含无限 DHCP 租期,它将 DHCP 租期的 IP 地址用作静态 IP 地址来创建新连接。
分配程序脚本可能会在成功置备的节点上运行,同时持续置备集群中的其他节点。
验证网络配置是否正常工作。
流程
- 检查节点上的网络接口配置。
- 关闭 DHCP 服务器并重启 OpenShift Container Platform 节点,并确保网络配置可以正常工作。