安装 IBM Cloud Bare Metal (Classic)
在 IBM Cloud Bare Metal (Classic) 上安装 OpenShift Container Platform
摘要
第 1 章 先决条件 复制链接链接已复制到粘贴板!
您可以使用安装程序置备的安装在 IBM Cloud® Bare Metal (Classic) 节点上安装 OpenShift Container Platform。本文档描述了在 IBM Cloud 节点上安装 OpenShift Container Platform 时的先决条件和步骤。
红帽仅在置备网络上支持 IPMI 和 PXE。红帽尚未测试 Red Hat Fish、虚拟介质或其他补充技术,如 IBM 云部署的安全引导。需要 provisioning 网络。
OpenShift Container Platform 安装程序置备的安装需要:
- 安装了 Red Hat Enterprise Linux CoreOS (RHCOS) 8.x 的一个节点,用于运行置备程序
- 三个 control plane 节点
- 一个可路由的网络
- 一个 provisioning 网络
在 IBM Cloud® Bare Metal (Classic) 上启动 OpenShift Container Platform 安装程序置备的安装前,需要满足以下先决条件和要求。
1.1. 设置 IBM Cloud Bare Metal (Classic) 基础架构 复制链接链接已复制到粘贴板!
要在 IBM Cloud® Bare Metal (Classic) 基础架构上部署 OpenShift Container Platform 集群,您必须首先置备 IBM Cloud 节点。
红帽支持 provisioning
网络上的 IPMI 和 PXE。红帽尚未测试 Red Hat Fish、虚拟介质或其他补充技术,如 IBM 云部署的安全引导。provisioning
网络是必需的。
您可以使用 IBM Cloud API 自定义 IBM Cloud 节点。在创建 IBM Cloud 节点时,您必须考虑以下要求:
每个集群使用一个数据中心
OpenShift Container Platform 集群中的所有节点必须在同一 IBM Cloud 数据中心中运行。
创建公共和私有 VLAN
创建具有单个公共 VLAN 和单个私有 VLAN 的所有节点。
确定子网有足够的 IP 地址
IBM Cloud public VLAN 子网默认使用一个 /28
前缀,该前缀提供 16 个 IP 地址。这足以一个包含三个 control plane 节点、四个 worker 节点以及两个用于 baremetal
网络上的 API VIP 和 Ingress VIP 的集群。对于较大的集群,可能需要一个较小的前缀。
IBM Cloud 私有 VLAN 子网默认使用一个 /26
前缀,该前缀提供 64 个 IP 地址。IBM Cloud® Bare Metal (Classic) 使用专用网络 IP 地址访问每个节点的 Baseboard Management Controller (BMC)。OpenShift Container Platform 为 provisioning
网络创建一个额外的子网。用于 provisioning
网络子网路由的网络流量,通过专用 VLAN 进行路由。对于较大的集群,可能需要一个较小的前缀。
IP 地址 | prefix |
---|---|
32 |
|
64 |
|
128 |
|
256 |
|
配置 NIC
OpenShift Container Platform 使用两个网络部署:
-
provisioning
:provisioning
网络是一个不可路由的网络,用于在作为 OpenShift Container Platform 集群一部分的每个节点上置备底层操作系统。 -
baremetal
:baremetal
网络是一个可路由的网络。您可以使用任何 NIC 顺序与baremetal
网络进行接口,只要它不是provisioningNetworkInterface
配置设置中指定的 NIC,或者 NIC 关联到用于provisioning
网络的节点的bootMACAddress
配置设置。
虽然集群节点可以包含多于 2 个 NIC,但安装过程只关注于前两个 NIC:例如:
NIC | 网络 | VLAN |
---|---|---|
NIC1 |
| <provisioning_vlan> |
NIC2 |
| <baremetal_vlan> |
在上例中,所有 control plane 和 worker 节点上的 NIC1 连接到仅用于安装 OpenShift Container Platform 集群的不可路由网络(provisioning
)。所有 control plane 和 worker 节点上的 NIC2 连接到 routable baremetal
网络。
PXE | 引导顺序 |
---|---|
NIC1 PXE-enabled | 1 |
NIC2 | 2 |
确保用于 provisioning
网络的 NIC 上启用了 PXE,并在所有其他 NIC 上禁用。
配置规范名称
客户端通过 baremetal
网络访问 OpenShift Container Platform 集群节点。配置 IBM Cloud 子域或子区,其中规范名称扩展是集群名称。
<cluster_name>.<domain>
<cluster_name>.<domain>
例如:
test-cluster.example.com
test-cluster.example.com
创建 DNS 条目
您必须为以下内容创建 DNS A
记录条目,解析为公共子网中未使用的 IP 地址:
用法 | 主机名 | IP |
---|---|---|
API | api.<cluster_name>.<domain> | <ip> |
Ingress LB(apps) | *.apps.<cluster_name>.<domain> | <ip> |
在置备后,control plane 和 worker 节点已经有 DNS 条目。
下表提供了完全限定域名的示例。API 和 Nameserver 地址以规范名称扩展开头。control plane 和 worker 节点的主机名是示例,您可以使用您喜欢的任何主机命名约定。
用法 | 主机名 | IP |
---|---|---|
API | api.<cluster_name>.<domain> | <ip> |
Ingress LB(apps) | *.apps.<cluster_name>.<domain> | <ip> |
provisioner 节点 | provisioner.<cluster_name>.<domain> | <ip> |
Master-0 | openshift-master-0.<cluster_name>.<domain> | <ip> |
Master-1 | openshift-master-1.<cluster_name>.<domain> | <ip> |
Master-2 | openshift-master-2.<cluster_name>.<domain> | <ip> |
Worker-0 | openshift-worker-0.<cluster_name>.<domain> | <ip> |
Worker-1 | openshift-worker-1.<cluster_name>.<domain> | <ip> |
Worker-n | openshift-worker-n.<cluster_name>.<domain> | <ip> |
OpenShift Container Platform 包含使用集群成员资格信息来生成 A
记录的功能。这会将节点名称解析为其 IP 地址。使用 API 注册节点后,集群可以在不使用 CoreDNS-mDNS 的情况下分散节点信息。这可消除与多播 DNS 关联的网络流量。
置备 IBM Cloud 节点后,您必须为外部 DNS 上的 api.<cluster_name>.<domain>
域名创建一个 DNS 条目,因为删除 CoreDNS 会导致本地条目消失。未能在外部 DNS 服务器中为 api.<cluster_name>.<domain>
域名创建 DNS 记录会阻止 worker 节点加入集群。
网络时间协议(NTP)
集群中的每个 OpenShift Container Platform 节点都必须有权访问 NTP 服务器。OpenShift Container Platform 节点使用 NTP 来同步其时钟。例如,集群节点使用需要验证的 SSL 证书,如果节点之间的日期和时间未同步,则可能会失败。
在每个群集节点的 BIOS 设置中定义一致的时钟日期和时间格式,或者安装可能会失败。
配置 DHCP 服务器
IBM Cloud® Bare Metal (Classic) 不会在公共或私有 VLAN 上运行 DHCP。在置备 IBM Cloud 节点后,您必须为公共 VLAN 设置 DHCP 服务器,这与 OpenShift Container Platform 的 baremetal
网络对应。
分配给每个节点的 IP 地址不需要与 IBM Cloud® Bare Metal (Classic) 置备系统分配的 IP 地址匹配。
详情请参阅"配置公共子网"部分。
确保 BMC 访问权限
仪表板上每个节点的"远程管理"页面包含节点的智能平台管理接口(IPMI)凭证。默认 IPMI 特权阻止用户进行某些引导目标更改。您必须将特权级别更改为 OPERATOR
,以便 Ironic 能够进行这些更改。
在 install-config.yaml
文件中,将 privilegelevel
参数添加到用于配置每个 BMC 的 URL 中。如需了解更多详细信息,请参阅"配置 install-config.yaml 文件"部分。例如:
ipmi://<IP>:<port>?privilegelevel=OPERATOR
ipmi://<IP>:<port>?privilegelevel=OPERATOR
或者,联系 IBM 云支持并请求它们将 IPMI 权限增加到 ADMINISTRATOR
。
创建裸机服务器
在 IBM Cloud dashboard 中,进入到 Create resource → Bare Metal Servers for Classic 来创建裸机服务器。
或者,您可以使用 ibmcloud
CLI 实用程序创建裸机服务器。例如:
有关装 IBM Cloud CLI 的详情,请参阅安装独立 IBM Cloud CLI。
IBM 云服务器可能需要 3-5 个小时才能使用。
第 2 章 为 OpenShift Container Platform 安装设置环境 复制链接链接已复制到粘贴板!
执行以下步骤准备 provisioner 节点。
流程
-
通过
ssh
登录到 provisioner 节点。 创建非 root 用户(
kni
)并为该用户提供sudo
权限:useradd kni
# useradd kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow passwd kni
# passwd kni
Copy 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/kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow chmod 0440 /etc/sudoers.d/kni
# chmod 0440 /etc/sudoers.d/kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为新用户创建
ssh
密钥:su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
# su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 以新用户身份登录到 provisioner 节点:
su - kni
# su - kni
Copy 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 register --username=<user> --password=<pass> --auto-attach
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \ --enable=rhel-8-for-x86_64-baseos-rpms
$ sudo subscription-manager repos --enable=rhel-8-for-x86_64-appstream-rpms \ --enable=rhel-8-for-x86_64-baseos-rpms
Copy 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 ipmitool
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 修改用户,将
libvirt
组添加到新创建的用户:sudo usermod --append --groups libvirt kni
$ sudo usermod --append --groups libvirt kni
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
firewalld
:sudo systemctl start firewalld
$ sudo systemctl start firewalld
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
firewalld
:sudo systemctl enable firewalld
$ sudo systemctl enable firewalld
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动
http
服务:sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --zone=public --add-service=http --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --reload
$ sudo firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启动并启用
libvirtd
服务:sudo systemctl enable libvirtd --now
$ sudo systemctl enable libvirtd --now
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置 provisioner 节点的 ID:
PRVN_HOST_ID=<ID>
$ PRVN_HOST_ID=<ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下
ibmcloud
命令查看 ID:ibmcloud sl hardware list
$ ibmcloud sl hardware list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置公共子网的 ID:
PUBLICSUBNETID=<ID>
$ PUBLICSUBNETID=<ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下
ibmcloud
命令查看 ID:ibmcloud sl subnet list
$ ibmcloud sl subnet list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置专用子网的 ID:
PRIVSUBNETID=<ID>
$ PRIVSUBNETID=<ID>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以使用以下
ibmcloud
命令查看 ID:ibmcloud sl subnet list
$ ibmcloud sl subnet list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置 provisioner 节点公共 IP 地址:
PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
$ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为公共网络设置 CIDR:
PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
$ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为公共网络设置 IP 地址和 CIDR:
PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
$ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为公共网络设置网关:
PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
$ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置 provisioner 节点的专用 IP 地址:
PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \ jq .primaryBackendIpAddress -r)
$ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \ jq .primaryBackendIpAddress -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为专用网络设置 CIDR:
PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
$ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 设置专用网络的 IP 地址和 CIDR:
PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
$ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为专用网络设置网关:
PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
$ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 为
baremetal
设置网桥并置备
网络:Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意对于
eth1
和eth2
,根据需要替换相应的接口名称。如果需要,通过 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 show
Copy 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.txt
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 Web 浏览器中,导航到 Install on Bare Metal with user-provisioned infrastructure。在第 1 步中,点击 Download pull secret。将内容粘贴到
pull-secret.txt
文件中,并将内容保存到kni
用户的主目录中。
2.2. 配置公共子网 复制链接链接已复制到粘贴板!
所有 OpenShift Container Platform 集群节点都必须位于公共子网中。IBM Cloud® Bare Metal (Classic) 不会在子网上提供 DHCP 服务器。在 provisioner 节点上单独设置它。
您必须重置准备 provisioner 节点时定义的 BASH 变量。在准备完置备程序节点后,重新引导置备程序节点将删除之前设置的 BASH 变量。
流程
安装
dnsmasq
:sudo dnf install dnsmasq
$ sudo dnf install dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 打开
dnsmasq
配置文件:sudo vi /etc/dnsmasq.conf
$ sudo vi /etc/dnsmasq.conf
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在
dnsmasq
配置文件中添加以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 设置 DHCP 范围。将
<ip_addr>
实例替换为一个来自公共子网的未使用的 IP 地址,以便baremetal
网络的dhcp-range
并以相同的 IP 地址开始和结尾。将<pub_cidr>
替换为公共子网的 CIDR。 - 2
- 设置 DHCP 选项。将
<pub_gateway>
替换为baremetal
网络的网关 IP 地址。将<prvn_priv_ip>
替换为provisioning
网络上 provisioner 节点的专用 IP 地址的 IP 地址。将<prvn_pub_ip>
替换为baremetal
网络中 provisioner 节点的公共 IP 地址的 IP 地址。
要检索
<pub_cidr>
的值,请执行:ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr
$ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .cidr
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<publicsubnetid>
替换为公共子网的 ID。要检索
<pub_gateway>
的值,请执行:ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r
$ ibmcloud sl subnet detail <publicsubnetid> --output JSON | jq .gateway -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<publicsubnetid>
替换为公共子网的 ID。要检索
<prvn_priv_ip>
的值,请执行:ibmcloud sl hardware detail <id> --output JSON | \ jq .primaryBackendIpAddress -r
$ ibmcloud sl hardware detail <id> --output JSON | \ jq .primaryBackendIpAddress -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<id>
替换为 provisioner 节点的 ID。要检索
<prvn_pub_ip>
的值,请执行:ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r
$ ibmcloud sl hardware detail <id> --output JSON | jq .primaryIpAddress -r
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<id>
替换为 provisioner 节点的 ID。获取集群的硬件列表:
ibmcloud sl hardware list
$ ibmcloud sl hardware list
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 获取每个节点的 MAC 地址和 IP 地址:
ibmcloud sl hardware detail <id> --output JSON | \ jq '.networkComponents[] | \ "\(.primaryIpAddress) \(.macAddress)"' | grep -v null
$ ibmcloud sl hardware detail <id> --output JSON | \ jq '.networkComponents[] | \ "\(.primaryIpAddress) \(.macAddress)"' | grep -v null
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<id>
替换为节点的 ID。输出示例
"10.196.130.144 00:e0:ed:6a:ca:b4" "141.125.65.215 00:e0:ed:6a:ca:b5"
"10.196.130.144 00:e0:ed:6a:ca:b4" "141.125.65.215 00:e0:ed:6a:ca:b5"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 记录公共网络的 MAC 地址和 IP 地址。单独记录专用网络的 MAC 地址,稍后您将在
install-config.yaml
文件中使用它。对每个节点重复这个过程,直到您拥有公共baremetal
网络的所有公共 MAC 和 IP 地址,以及私有provisioning
网络的 MAC 地址。将每个节点的 public
baremetal
网络的 MAC 和 IP 地址对添加到dnsmasq.hostsfile
文件中:sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile
$ sudo vim /var/lib/dnsmasq/dnsmasq.hostsfile
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输入示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<mac>,<ip>
替换为相应节点名称的公共 MAC 地址和公共 IP 地址。启动
dnsmasq
:sudo systemctl start dnsmasq
$ sudo systemctl start dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 启用
dnsmasq
,以便在引导节点时启动:sudo systemctl enable dnsmasq
$ sudo systemctl enable dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 验证
dnsmasq
是否正在运行:sudo systemctl status dnsmasq
$ sudo systemctl status dnsmasq
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 UDP 协议打开端口
53
和67
:sudo firewall-cmd --add-port 53/udp --permanent
$ sudo firewall-cmd --add-port 53/udp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow sudo firewall-cmd --add-port 67/udp --permanent
$ sudo firewall-cmd --add-port 67/udp --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 masquerade 为外部区添加
置备
:sudo firewall-cmd --change-zone=provisioning --zone=external --permanent
$ sudo firewall-cmd --change-zone=provisioning --zone=external --permanent
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 这一步可确保将 IPMI 调用的网络地址转换为管理子网。
重新载入
firewalld
配置:sudo firewall-cmd --reload
$ sudo firewall-cmd --reload
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.3. 检索 OpenShift Container Platform 安装程序 复制链接链接已复制到粘贴板!
使用安装程序的 stable-4.x
版本和您选择的架构来部署 OpenShift Container Platform 的一般稳定版本:
export VERSION=stable-4.13
$ export VERSION=stable-4.13
export RELEASE_ARCH=<architecture>
$ export RELEASE_ARCH=<architecture>
export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/$RELEASE_ARCH/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
$ export RELEASE_IMAGE=$(curl -s https://mirror.openshift.com/pub/openshift-v4/$RELEASE_ARCH/clients/ocp/$VERSION/release.txt | grep 'Pull From: quay.io' | awk -F ' ' '{print $3}')
2.4. 提取 OpenShift Container Platform 安装程序 复制链接链接已复制到粘贴板!
在获取安装程序后,下一步是提取它。
流程
设置环境变量:
export cmd=openshift-baremetal-install
$ export cmd=openshift-baremetal-install
Copy to Clipboard Copied! Toggle word wrap Toggle overflow export pullsecret_file=~/pull-secret.txt
$ export pullsecret_file=~/pull-secret.txt
Copy 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 - oc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 解压安装程序:
sudo cp oc /usr/local/bin
$ sudo cp oc /usr/local/bin
Copy 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/bin
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.5. 配置 install-config.yaml 文件 复制链接链接已复制到粘贴板!
install-config.yaml
文件需要一些额外的详情。大多数信息用于指导安装程序,从而让集群足够了解可用的 IBM Cloud® Bare Metal (Classic) 硬件,以便它可以完全管理它。在裸机上安装和在 IBM Cloud® Bare Metal (Classic)上安装之间的材料区别在于,您必须在 install-config.yaml
文件的 BMC 部分中明确设置 IPMI 的权限级别。
流程
配置
install-config.yaml
。更改适当的变量以匹配环境,包括pullSecret
和sshKey
。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意您可以使用
ibmcloud
命令行实用程序来检索密码。ibmcloud sl hardware detail <id> --output JSON | \ jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'
$ ibmcloud sl hardware detail <id> --output JSON | \ jq '"(.networkManagementIpAddress) (.remoteManagementAccounts[0].password)"'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
<id>
替换为节点的 ID。创建用于存储集群配置的目录:
mkdir ~/clusterconfigs
$ mkdir ~/clusterconfigs
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 将
install-config.yaml
文件复制到目录中:cp install-config.yaml ~/clusterconfigs
$ cp install-config.yaml ~/clusterconfigs
Copy 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 off
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果以前的部署尝试中保留了旧的 bootstrap 资源,请删除旧的 bootstrap 资源:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.6. 其他 install-config 参数 复制链接链接已复制到粘贴板!
下表列出了 install-config.yaml
文件所需的 参数
、hosts 参数和 bmc
参数。
参数 | default | 描述 |
---|---|---|
|
集群的域名。例如: | |
|
|
节点的引导模式。选项为 |
| bootstrap 虚拟机的静态 IP 地址。当 bare-metal 网络中没有 DHCP 服务器时部署使用静态 IP 地址的集群时,必须设置这个值。 | |
| bootstrap 虚拟机网关的静态 IP 地址。当 bare-metal 网络中没有 DHCP 服务器时部署使用静态 IP 地址的集群时,必须设置这个值。 | |
|
| |
|
| |
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 地址。
此设置必须在 注意
在 OpenShift Container Platform 4.12 之前,集群安装程序只接受 | |
|
|
|
| (可选)入口流量的虚拟 IP 地址。
此设置必须在 注意
在 OpenShift Container Platform 4.12 之前,集群安装程序只接受 |
参数 | 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 地址。 | |
| 设置此可选参数来配置主机的网络接口。如需了解更多详细信息,请参阅"(可选)配置主机网络接口"。 |
2.7. Root 设备提示 复制链接链接已复制到粘贴板!
rootDeviceHints
参数可让安装程序将 Red Hat Enterprise Linux CoreOS(RHCOS)镜像置备到特定的设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。安装程序使用第一个与 hint 值匹配的发现设备。配置可以组合多个 hint,但设备必须与所有提示匹配,以便安装程序进行选择。
子字段 | 描述 |
---|---|
|
包含 Linux 设备名称的字符串(如 |
|
包含类似 |
| 包含特定厂商的设备标识符的字符串。hint 可以是实际值的子字符串。 |
| 包含该设备厂商或制造商名称的字符串。hint 可以是实际值的子字符串。 |
| 包含设备序列号的字符串。hint 必须与实际值完全匹配。 |
| 以 GB 为单位代表设备的最小大小的整数。 |
| 包含唯一存储标识符的字符串。hint 必须与实际值完全匹配。 |
| 包含唯一存储标识符的字符串,并附加厂商扩展。hint 必须与实际值完全匹配。 |
| 包含唯一厂商存储标识符的字符串。hint 必须与实际值完全匹配。 |
| 指明该设备为旋转磁盘(true)还是非旋转磁盘(false)的布尔值。 |
示例用法
2.8. 创建 OpenShift Container Platform 清单 复制链接链接已复制到粘贴板!
创建 OpenShift Container Platform 清单。
./openshift-baremetal-install --dir ~/clusterconfigs create manifests
$ ./openshift-baremetal-install --dir ~/clusterconfigs create manifests
Copy 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 regenerated
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
2.9. 通过 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
2.10. 监控安装进度 复制链接链接已复制到粘贴板!
在部署过程中,您可以通过向安装目录文件夹中的 .openshift_install.log
日志文件发出 tail
命令来检查安装的整体状态:
tail -f /path/to/install-dir/.openshift_install.log
$ tail -f /path/to/install-dir/.openshift_install.log
Legal Notice
复制链接链接已复制到粘贴板!
Copyright © 2025 Red Hat
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.