第 2 章 为 OpenShift Container Platform 安装设置环境
2.1. 在 IBM Cloud (R) Bare Metal (Classic)基础架构上准备 provisioner 节点
执行以下步骤准备 provisioner 节点。
流程
-
通过
ssh
登录到 provisioner 节点。 创建非 root 用户(
kni
)并为该用户提供sudo
权限:# useradd kni
# passwd kni
# echo "kni ALL=(root) NOPASSWD:ALL" | tee -a /etc/sudoers.d/kni
# chmod 0440 /etc/sudoers.d/kni
为新用户创建
ssh
密钥:# su - kni -c "ssh-keygen -f /home/kni/.ssh/id_rsa -N ''"
以新用户身份登录到 provisioner 节点:
# su - kni
使用 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
注意有关 Red Hat Subscription Manager 的更多信息,请参阅使用命令行工具注册 RHEL 系统。
安装以下软件包:
$ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
修改用户,将
libvirt
组添加到新创建的用户:$ sudo usermod --append --groups libvirt kni
启动
firewalld
:$ sudo systemctl start firewalld
启用
firewalld
:$ sudo systemctl enable firewalld
启动
http
服务:$ sudo firewall-cmd --zone=public --add-service=http --permanent
$ sudo firewall-cmd --reload
启动并启用
libvirtd
服务:$ sudo systemctl enable libvirtd --now
设置 provisioner 节点的 ID:
$ PRVN_HOST_ID=<ID>
您可以使用以下
ibmcloud
命令查看 ID:$ ibmcloud sl hardware list
设置公共子网的 ID:
$ PUBLICSUBNETID=<ID>
您可以使用以下
ibmcloud
命令查看 ID:$ ibmcloud sl subnet list
设置专用子网的 ID:
$ PRIVSUBNETID=<ID>
您可以使用以下
ibmcloud
命令查看 ID:$ ibmcloud sl subnet list
设置 provisioner 节点公共 IP 地址:
$ PRVN_PUB_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | jq .primaryIpAddress -r)
为公共网络设置 CIDR:
$ PUBLICCIDR=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .cidr)
为公共网络设置 IP 地址和 CIDR:
$ PUB_IP_CIDR=$PRVN_PUB_IP/$PUBLICCIDR
为公共网络设置网关:
$ PUB_GATEWAY=$(ibmcloud sl subnet detail $PUBLICSUBNETID --output JSON | jq .gateway -r)
设置 provisioner 节点的专用 IP 地址:
$ PRVN_PRIV_IP=$(ibmcloud sl hardware detail $PRVN_HOST_ID --output JSON | \ jq .primaryBackendIpAddress -r)
为专用网络设置 CIDR:
$ PRIVCIDR=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .cidr)
设置专用网络的 IP 地址和 CIDR:
$ PRIV_IP_CIDR=$PRVN_PRIV_IP/$PRIVCIDR
为专用网络设置网关:
$ PRIV_GATEWAY=$(ibmcloud sl subnet detail $PRIVSUBNETID --output JSON | jq .gateway -r)
为
baremetal
设置网桥并置备
网络:$ sudo nohup bash -c " nmcli --get-values UUID con show | xargs -n 1 nmcli con delete nmcli connection add ifname provisioning type bridge con-name provisioning nmcli con add type bridge-slave ifname eth1 master provisioning nmcli connection add ifname baremetal type bridge con-name baremetal nmcli con add type bridge-slave ifname eth2 master baremetal nmcli connection modify baremetal ipv4.addresses $PUB_IP_CIDR ipv4.method manual ipv4.gateway $PUB_GATEWAY nmcli connection modify provisioning ipv4.addresses 172.22.0.1/24,$PRIV_IP_CIDR ipv4.method manual nmcli connection modify provisioning +ipv4.routes \"10.0.0.0/8 $PRIV_GATEWAY\" nmcli con down baremetal nmcli con up baremetal nmcli con down provisioning nmcli con up provisioning init 6 "
注意对于
eth1
和eth2
,根据需要替换相应的接口名称。如果需要,通过 SSH 重新连接到
provisioner
节点:# ssh kni@provisioner.<cluster-name>.<domain>
验证连接网桥是否已正确创建:
$ sudo nmcli con show
输出示例
NAME UUID TYPE DEVICE baremetal 4d5133a5-8351-4bb9-bfd4-3af264801530 bridge baremetal provisioning 43942805-017f-4d7d-a2c2-7cb3324482ed bridge provisioning virbr0 d9bca40f-eee1-410b-8879-a2d4bb0465e7 bridge virbr0 bridge-slave-eth1 76a8ed50-c7e5-4999-b4f6-6d9014dd0812 ethernet eth1 bridge-slave-eth2 f31c3353-54b7-48de-893a-02d2b34c4736 ethernet eth2
创建
pull-secret.txt
文件:$ vim pull-secret.txt
在 Web 浏览器中,导航到 Install on Bare Metal with user-provisioned infrastructure。在第 1 步中,点击 Download pull secret。将内容粘贴到
pull-secret.txt
文件中,并将内容保存到kni
用户的主目录中。