1.3.2. 为 OpenShift Container Platform 安装准备 provisioner 序节点

执行以下步骤准备环境。

流程

  1. 通过 ssh 登录到 provisioner 节点。
  2. 创建一个非 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
  3. 为新用户生成 ssh 密钥。

    # su - kni -c "ssh-keygen -t ed25519 -f /home/kni/.ssh/id_rsa -N ''"
  4. 使用新创建的用户登陆到 provisioner 节点。

    # su - kni
    $
  5. 使用 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 的详情,请查看使用和配置 Red Hat Subscription Manager

  6. 安装以下软件包。

    $ sudo dnf install -y libvirt qemu-kvm mkisofs python3-devel jq ipmitool
  7. 修改用户以便为新创建的用户中添加 libvirt 组。

    $ sudo usermod --append --groups libvirt <user>
  8. 重启 firewalld 并启用 http 服务。

    $ sudo systemctl start firewalld
    $ sudo firewall-cmd --zone=public --add-service=http --permanent
    $ sudo firewall-cmd --reload
  9. 启动并启用 libvirtd 服务。

    $ sudo systemctl enable libvirtd --now
  10. 创建 default 存储池并启动它。

    $ sudo virsh pool-define-as --name default --type dir --target /var/lib/libvirt/images
    $ sudo virsh pool-start default
    $ sudo virsh pool-autostart default
  11. 配置网络。

    注意

    此步骤也可以从 web 控制台运行。

    $ export PUB_CONN=<baremetal_nic_name>
    $ export PROV_CONN=<prov_nic_name>
    $ sudo nohup bash -c "
        nmcli con down \"$PROV_CONN\"
        nmcli con down \"$PUB_CONN\"
        nmcli con delete \"$PROV_CONN\"
        nmcli con delete \"$PUB_CONN\"
        # RHEL 8.1 appends the word \"System\" in front of the connection, delete in case it exists
        nmcli con down \"System $PUB_CONN\"
        nmcli con delete \"System $PUB_CONN\"
        nmcli connection add ifname provisioning type bridge con-name provisioning
        nmcli con add type bridge-slave ifname \"$PROV_CONN\" master provisioning
        nmcli connection add ifname baremetal type bridge con-name baremetal
        nmcli con add type bridge-slave ifname \"$PUB_CONN\" master baremetal
        pkill dhclient;dhclient baremetal
        nmcli connection modify provisioning ipv6.addresses fd00:1101::1/64 ipv6.method manual
        nmcli con down provisioning
        nmcli con up provisioning
    "
    注意

    执行此步骤后 ssh 连接可能会断开。

    只要无法通过 baremetal 网络路由,IPv6 地址可以是任何地址。

    在使用 IPv6 地址时,请确保启用了 UEFI,并且将 UEFI PXE 设置设为 IPv6 协议。

  12. provisioning 网络连接上配置 IPv4 地址。

    $ nmcli connection modify provisioning ipv4.addresses 172.22.0.254/24 ipv4.method manual
  13. 重新 sshprovisioner 节点(如果需要)。

    # ssh kni@provisioner.<cluster-name>.<domain>
  14. 验证连接桥接是否已正确创建。

    $ 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-eno1  76a8ed50-c7e5-4999-b4f6-6d9014dd0812  ethernet  eno1
    bridge-slave-eno2  f31c3353-54b7-48de-893a-02d2b34c4736  ethernet  eno2
  15. 创建一个 pull-secret.txt 文件。

    $ vim pull-secret.txt

    在 Web 浏览器中,进入 Install on Bare Metal with user-provisioned infrastructure,再向下滚动到 Downloads 部分。点 Copy pull secret。将内容粘贴到 pull-secret.txt 文件中,并将内容保存到 kni 用户的主目录中。