10.3. 为 OpenShift 安装设置环境


10.3.1. 在置备程序节点上安装 RHEL

在网络配置完成后,下一步是在置备程序节点上安装 RHEL 8.x。安装 OpenShift Container Platform 集群时,安装程序使用 provisioner 节点作为编配器。在本文档中,在 provisioner 节点上安装 RHEL 超出了范围。但是,选项包括但不限于使用 RHEL Satellite 服务器、PXE 或安装介质。

10.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. 创建 默认 存储池并启动它:

    $ 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 控制台配置网络。

    导出 baremetal 网络 NIC 名称:

    $ export PUB_CONN=<baremetal_nic_name>

    配置 baremetal 网络:

    $ sudo nohup bash -c "
        nmcli con down \"$PUB_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 baremetal type bridge con-name baremetal bridge.stp no
        nmcli con add type bridge-slave ifname \"$PUB_CONN\" master baremetal
        pkill dhclient;dhclient baremetal
    "

    如果使用 provisioning 网络部署,请导出 provisioning 网络 NIC 名称:

    $ export PROV_CONN=<prov_nic_name>

    如果使用 provisioning 网络部署,请配置 置备 网络:

    $ sudo nohup bash -c "
        nmcli con down \"$PROV_CONN\"
        nmcli con delete \"$PROV_CONN\"
        nmcli connection add ifname provisioning type bridge con-name provisioning
        nmcli con add type bridge-slave ifname \"$PROV_CONN\" master provisioning
        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. 重新 SSH 到 provisioner 节点(如果需要)。

    # 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 OpenShift on Bare Metal with installer-provisioned infrastructure,再向下滚动到 Downloads 部分。点 Copy pull secret。将内容粘贴到 pull-secret.txt 文件中,并将内容保存到 kni 用户的主目录中。

10.3.3. 检索 OpenShift Container Platform 安装程序

使用安装程序的 stable-4.x 版本来部署 OpenShift Container Platform 的通用稳定版本:

$ export VERSION=stable-4.9
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}')

10.3.4. 提取 OpenShift Container Platform 安装程序

在获取安装程序后,下一步是提取它。

流程

  1. 设置环境变量:

    $ export cmd=openshift-baremetal-install
    $ export pullsecret_file=~/pull-secret.txt
    $ export extract_dir=$(pwd)
  2. 获取 oc 二进制文件:

    $ curl -s https://mirror.openshift.com/pub/openshift-v4/clients/ocp/$VERSION/openshift-client-linux.tar.gz | tar zxvf - oc
  3. 解压安装程序:

    $ sudo cp oc /usr/local/bin
    $ oc adm release extract --registry-config "${pullsecret_file}" --command=$cmd --to "${extract_dir}" ${RELEASE_IMAGE}
    $ sudo cp openshift-baremetal-install /usr/local/bin

10.3.5. 创建 RHCOS 镜像缓存(可选)

要使用镜像缓存,您必须下载两个镜像:bootstrap 虚拟机使用的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像和安装程序用来置备不同节点的 RHCOS 镜像。镜像缓存是可选的,但在有限带宽的网络中运行安装程序时特别有用。

如果您在有限带宽的网络上运行安装程序,并且 RHCOS 镜像下载时间超过 15 到 20 分钟,安装程序会超时。在这种情况下,将映像缓存到 Web 服务器上将有所帮助。

安装包含镜像的容器。

流程

  1. 安装 podman:

    $ sudo dnf install -y podman
  2. 打开防火墙端口 8080 以用于 RHCOS 镜像缓存:

    $ sudo firewall-cmd --add-port=8080/tcp --zone=public --permanent
    $ sudo firewall-cmd --reload
  3. 创建用于存储 bootstraposimageclusterosimage 的目录:

    $ mkdir /home/kni/rhcos_image_cache
  4. 为新创建的目录设置适当的 SELinux 上下文:

    $ sudo semanage fcontext -a -t httpd_sys_content_t "/home/kni/rhcos_image_cache(/.*)?"
    $ sudo restorecon -Rv /home/kni/rhcos_image_cache/
  5. 获取安装程序要在 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')
  6. 获取安装程序要在 bootstrap 虚拟机上部署的镜像名称:

    $ export export RHCOS_QEMU_NAME=${RHCOS_QEMU_URI##*/}
  7. 获取要在节点上部署的 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"]')
  8. 获取安装程序要在集群节点上部署的镜像的 URI:

    $ export RHCOS_OPENSTACK_URI=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.openstack.formats["qcow2.gz"].disk.location')
  9. 获取安装程序要在集群节点上部署的镜像名称:

    $ export RHCOS_OPENSTACK_NAME=${RHCOS_OPENSTACK_URI##*/}
  10. 获取安装程序要在集群节点上部署的镜像的 SHA 哈希:

    $ export RHCOS_OPENSTACK_UNCOMPRESSED_SHA256=$(/usr/local/bin/openshift-baremetal-install coreos print-stream-json | jq -r --arg ARCH "$(arch)" '.architectures[$ARCH].artifacts.openstack.formats["qcow2.gz"].disk["uncompressed-sha256"]')
  11. 下载镜像并将其放在 /home/kni/rhcos_image_cache 目录中:

    $ curl -L ${RHCOS_QEMU_URI} -o /home/kni/rhcos_image_cache/${RHCOS_QEMU_NAME}
    $ curl -L ${RHCOS_OPENSTACK_URI} -o /home/kni/rhcos_image_cache/${RHCOS_OPENSTACK_NAME}
  12. 为新创建的文件确认 SELinux 类型为 httpd_sys_content_t

    $ ls -Z /home/kni/rhcos_image_cache
  13. 创建 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

    以上命令会创建一个名为 rhcos_image_cache 的缓存 webserver,它将提供用于部署的镜像。第一个镜像 ${RHCOS_PATH}${RHCOS_QEMU_URI}?sha256=${RHCOS_QEMU_SHA_UNCOMPRESSED}bootstrapOSImage,第二个镜像 ${RHCOS_PATH}${RHCOS_OPENSTACK_URI}?sha256=${RHCOS_OPENSTACK_SHA_COMPRESSED}install-config.yaml 文件中的 clusterOSImage

  14. 生成 bootstrapOSImageclusterOSImage 配置:

    $ export BAREMETAL_IP=$(ip addr show dev baremetal | awk '/inet /{print $2}' | cut -d"/" -f1)
    $ export BOOTSTRAP_OS_IMAGE="http://${BAREMETAL_IP}:8080/${RHCOS_QEMU_NAME}?sha256=${RHCOS_QEMU_UNCOMPRESSED_SHA256}"
    $ export CLUSTER_OS_IMAGE="http://${BAREMETAL_IP}:8080/${RHCOS_OPENSTACK_NAME}?sha256=${RHCOS_OPENSTACK_UNCOMPRESSED_SHA256}"
    $ echo "    bootstrapOSImage=${BOOTSTRAP_OS_IMAGE}"
    $ echo "    clusterOSImage=${CLUSTER_OS_IMAGE}"
  15. 在 platform. baremetal 下将所需的配置添加到 install-config.yaml 文件中:

    platform:
      baremetal:
        bootstrapOSImage: <bootstrap_os_image>  1
        clusterOSImage: <cluster_os_image>  2
    1
    <bootstrap_os_image> 替换为 $BOOTSTRAP_OS_IMAGE 的值。
    2
    <cluster_os_image> 替换为 $CLUSTER_OS_IMAGE 的值。

    详情请查看"配置文件"部分。

10.3.6. 配置文件

10.3.6.1. 配置 install-config.yaml 文件

install-config.yaml 文件需要一些额外的详情。大多数信息用于指导安装程序,从而让集群足够了解可用硬件,以便其能够全面管理硬件。

  1. 配置 install-config.yaml。更改适当的变量以匹配环境,包括 pullSecretsshKey

    apiVersion: v1
    baseDomain: <domain>
    metadata:
      name: <cluster-name>
    networking:
      machineNetwork:
      - cidr: <public-cidr>
      networkType: OVNKubernetes
    compute:
    - name: worker
      replicas: 2 1
    controlPlane:
      name: master
      replicas: 3
      platform:
        baremetal: {}
    platform:
      baremetal:
        apiVIP: <api-ip>
        ingressVIP: <wildcard-ip>
        provisioningNetworkCIDR: <CIDR>
        hosts:
          - name: openshift-master-0
            role: master
            bmc:
              address: ipmi://<out-of-band-ip> 2
              username: <user>
              password: <password>
            bootMACAddress: <NIC1-mac-address>
            rootDeviceHints:
             deviceName: "/dev/disk/by-id/<disk_id>" 3
          - name: <openshift-master-1>
            role: master
            bmc:
              address: ipmi://<out-of-band-ip> 4
              username: <user>
              password: <password>
            bootMACAddress: <NIC1-mac-address>
            rootDeviceHints:
             deviceName: "/dev/disk/by-id/<disk_id>" 5
          - name: <openshift-master-2>
            role: master
            bmc:
              address: ipmi://<out-of-band-ip> 6
              username: <user>
              password: <password>
            bootMACAddress: <NIC1-mac-address>
            rootDeviceHints:
             deviceName: "/dev/disk/by-id/<disk_id>" 7
          - name: <openshift-worker-0>
            role: worker
            bmc:
              address: ipmi://<out-of-band-ip> 8
              username: <user>
              password: <password>
            bootMACAddress: <NIC1-mac-address>
          - name: <openshift-worker-1>
            role: worker
            bmc:
              address: ipmi://<out-of-band-ip>
              username: <user>
              password: <password>
            bootMACAddress: <NIC1-mac-address>
            rootDeviceHints:
             deviceName: "/dev/disk/by-id/<disk_id>" 9
    pullSecret: '<pull_secret>'
    sshKey: '<ssh_pub_key>'
    1
    根据作为 OpenShift Container Platform 集群一部分的 worker 节点数量,扩展 worker 机器。replicas 值可以是 0,以及大于或等于 2 的整数。将副本数设置为 0 以部署一个三节点集群,该集群仅包含三个 control plane 机器。三节点集群是一个较小的、效率更高的集群,可用于测试、开发和生产。您不能只使用一个 worker 安装集群。
    2 4 6 8
    如需了解更多选项,请参阅 BMC 寻址部分。
    3 5 7 9
    设置安装磁盘驱动器的路径,例如: /dev/disk/by-id/wwn-0x64cd98f04fde100024684cf3034da5c2
  2. 创建用于存储集群配置的目录。

    $ mkdir ~/clusterconfigs
    $ cp install-config.yaml ~/clusterconfigs
  3. 在安装 OpenShift Container Platform 集群前,请确保关闭所有裸机节点。

    $ ipmitool -I lanplus -U <user> -P <password> -H <management-server-ip> power off
  4. 如果以前的部署尝试中遗留了任何旧的 bootstrap 资源,则删除旧的 bootstrap 资源。

    for i in $(sudo virsh list | tail -n +3 | grep bootstrap | awk {'print $2'});
    do
      sudo virsh destroy $i;
      sudo virsh undefine $i;
      sudo virsh vol-delete $i --pool $i;
      sudo virsh vol-delete $i.ign --pool $i;
      sudo virsh pool-destroy $i;
      sudo virsh pool-undefine $i;
    done

10.3.6.2. 在 install-config.yaml 文件中设置代理设置(可选)

要使用代理部署 OpenShift Container Platform 集群,请对 install-config.yaml 文件进行以下更改。

apiVersion: v1
baseDomain: <domain>
proxy:
  httpProxy: http://USERNAME:PASSWORD@proxy.example.com:PORT
  httpsProxy: https://USERNAME:PASSWORD@proxy.example.com:PORT
  noProxy: <WILDCARD_OF_DOMAIN>,<PROVISIONING_NETWORK/CIDR>,<BMC_ADDRESS_RANGE/CIDR>

以下是带有值的 noProxy 示例。

noProxy: .example.com,172.22.0.0/24,10.10.0.0/24

启用代理后,在对应的键/值对中设置代理的适当值。

主要考虑:

  • 如果代理没有 HTTPS 代理,请将 httpsProxy 的值从 https :// 改为 http://
  • 如果使用 provisioning 网络,将其包含在 noProxy 设置中,否则安装程序将失败。
  • 将所有代理设置设置为 provisioner 节点中的环境变量。例如: HTTP_PROXYHTTPS_PROXYNO_PROXY
注意

使用 IPv6 置备时,您无法在 noProxy 设置中定义 CIDR 地址块。您必须单独定义每个地址。

10.3.6.3. 为没有 provisioning 网络修改 install-config.yaml 文件(可选)

要在没有 provisioning 网络的情况下部署 OpenShift Container Platform 集群,请对 install-config.yaml 文件进行以下更改。

platform:
  baremetal:
    apiVIP: <api_VIP>
    ingressVIP: <ingress_VIP>
    provisioningNetwork: "Disabled" 1
1
如果需要,添加 provisioningNetwork 配置设置并将其设置为 Disabled
重要

PXE 引导需要 provisioning 网络。如果您在没有 provisioning 网络的情况下部署,则必须使用虚拟介质 BMC 寻址选项,如 redfish-virtualmediaidrac-virtualmedia。详情请查看 "Redfish 虚拟介质 for HPE iLO" 部分的"适用于 HPE iLO 的 BMC 寻址"部分或"适用于戴尔 iDRAC 的"红帽虚拟媒体"部分中的"红帽虚拟介质"。

10.3.6.4. 为双栈网络修改 install-config.yaml 文件(可选)

要使用双栈网络部署 OpenShift Container Platform 集群,请编辑 install-config.yaml 文件中的 machineNetwork, clusterNetwork, 和 serviceNetwork 配置设置。每个设置必须分别有两个 CIDR 条目。确保第一个 CIDR 条目是 IPv4 设置,第二个 CIDR 条目是 IPv6 设置。

machineNetwork:
- cidr: {{ extcidrnet }}
- cidr: {{ extcidrnet6 }}
clusterNetwork:
- cidr: 10.128.0.0/14
  hostPrefix: 23
- cidr: fd02::/48
  hostPrefix: 64
serviceNetwork:
- 172.30.0.0/16
- fd03::/112
重要

使用双栈网络时,API VIP IP 地址和 Ingress VIP 地址必须是主 IP 地址系列。目前,红帽不支持将 IPv6 作为主要 IP 地址系列的双栈 VIP 或双栈网络。但是,红帽确实支持将 IPv4 作为主要 IP 地址系列的双栈网络。因此,IPv4 条目必须放在 IPv6 条目 前面

10.3.6.5. 在 install-config.yaml 文件中配置受管安全引导(可选)

在使用 Redfish BMC 寻址(如 redfish, redfish-virtualmedia, 或 idrac-virtualmedia)部署安装程序置备的集群时,您可以启用受管安全引导。要启用受管安全引导,请在每个节点中添加 bootMode 配置设置:

示例

hosts:
  - name: openshift-master-0
    role: master
    bmc:
      address: redfish://<out_of_band_ip> 1
      username: <user>
      password: <password>
    bootMACAddress: <NIC1_mac_address>
    rootDeviceHints:
     deviceName: "/dev/sda"
    bootMode: UEFISecureBoot 2

1
确保 bmc.address 设置使用 redfishredfish-virtualmediaidrac-virtualmedia 作为协议。如需了解更多详细信息,请参阅"HPE iLO"或"BMC 寻址用于 Dell iDRAC"的"BMC 寻址"。
2
bootMode 设置默认为 UEFI。将它更改为 UEFISecureBoot 以启用受管安全引导。
注意

请参阅"先决条件"中的"配置节点",以确保节点能够支持受管安全引导。如果节点不支持受管安全引导,请参阅"配置节点"部分中的"手动配置安全引导节点"。手动配置安全引导机制需要 Redfish 虚拟介质。

注意

红帽不支持使用 IPMI 进行安全引导,因为 IPMI 不提供安全引导管理功能。

10.3.6.6. 其他 install-config 参数

下表列出了 install-config.yaml 文件所需的 参数hosts 参数和 bmc 参数。

表 10.3. 所需的参数
参数default描述

baseDomain

 

集群的域名。例如: example.com

bootMode

UEFI

节点的引导模式。选项为 legacyU EFI 和 UEFISecureBoot。如果没有设置 bootMode,Ironic 在检查节点时设置它。

sshKey

 

sshKey 配置设置包含 ~/.ssh/id_rsa.pub 文件中访问 control plane 节点和 worker 节点所需的密钥。通常,这个密钥来自 provisioner 节点。

pullSecret

 

pullSecret 配置设置包含准备 provisioner 节点时从 Install OpenShift on Bare Metal 页面下载的 pull secret 的副本。

metadata:
    name:
 

提供给 OpenShift Container Platform 集群的名称。例如: openshift

networking:
    machineNetwork:
    - cidr:
 

外部网络的公共 CIDR(Classless Inter-Domain Routing)。例如,10.0.0.0/24

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)节点数量。

provisioningNetworkInterface

 

连接到 provisioning 网络的节点上的网络接口名称。对于 OpenShift Container Platform 4.9 及更新的版本,使用 bootMACAddress 配置设置来启用 Ironic 标识 NIC 的 IP 地址,而不使用 provisioningNetworkInterface 配置设置来标识 NIC 的名称。

defaultMachinePlatform

 

用于没有平台配置的机器池的默认配置。

apiVIP

 

(可选)用于 Kubernetes API 通信的虚拟 IP 地址。

此设置必须在 install-config.yaml 文件中作为保留的 IP,或从 DNS 中预先配置到 DNS 中,以便正确解析默认名称。在 install-config.yaml 文件中的 apiVIP 配置设置中添加值时,使用虚拟 IP 地址而不是 FQDN。在使用双栈网络时,该 IP 地址必须来自主要 IPv4 网络。如果没有设置,安装程序将使用 api.<cluster_name>.<base_domain> 从 DNS 派生 IP 地址。

disableCertificateVerification

False

RedFishredfish-virtualmedia 需要这个参数来管理 BMC 地址。当 BMC 地址使用自签名证书时,这个值应该是 True

ingressVIP

 

(可选)入口流量的虚拟 IP 地址。

此设置必须在 install-config.yaml 文件中作为保留的 IP,或从 DNS 中预先配置到 DNS 中,以便正确解析默认名称。在 install-config.yaml 文件中的 ingressVIP 配置设置中添加值时,使用虚拟 IP 地址而不是 FQDN。在使用双栈网络时,该 IP 地址必须来自主要 IPv4 网络。如果没有设置,安装程序将使用 test.apps.<cluster_name>.<base_domain> 从 DNS 派生 IP 地址。

表 10.4. 可选参数
参数default描述

provisioningDHCPRange

172.22.0.10,172.22.0.100

定义 provisioning 网络上节点的 IP 范围。

provisioningNetworkCIDR

172.22.0.0/24

用于置备的网络的 CIDR。如果不在 provisioning 网络上使用默认地址范围,则需要这个选项。

clusterProvisioningIP

provisioningNetworkCIDR 的第三个 IP 地址。

运行置备服务的集群中的 IP 地址。默认为 provisioning 子网的第三个 IP 地址。例如: 172.22.0.3

bootstrapProvisioningIP

provisioningNetworkCIDR 的第二个 IP 地址。

在安装程序部署 control plane(master)节点时运行置备服务的 bootstrap 虚拟机上的 IP 地址。默认为 provisioning 子网的第二个 IP 地址。例如: 172.22.0.2 或 2620:52:0:1307::2

externalBridge

baremetal

附加到 baremetal 网络的虚拟机监控程序的 baremetal 网桥的名称。

provisioningBridge

provisioning

附加到 provisioning 网络的 provisioner 主机上的 provisioning 网桥的名称。

defaultMachinePlatform

 

用于没有平台配置的机器池的默认配置。

bootstrapOSImage

 

用于覆盖 bootstrap 节点的默认操作系统镜像的 URL。URL 必须包含镜像的 SHA-256 哈希。例如: https://mirror.openshift.com/rhcos-<version>-qemu.qcow2.gz?sha256=<uncompressed_sha256>

clusterOSImage

 

用于覆盖集群节点默认操作系统的 URL。URL 必须包含镜像的 SHA-256 哈希。例如: https://mirror.openshift.com/images/rhcos-<version>-openstack.qcow2.gz?sha256=<compressed_sha256>

provisioningNetwork

 

provisioningNetwork 配置设置决定了集群是否使用 provisioning 网络。如果存在,配置设置也会决定集群是否管理网络。

disabled :将此参数设置为 Disabled,以禁用 调配 网络的要求。当设置为 Disabled 时,您必须只使用基于虚拟介质的置备,或使用支持的安装程序启动集群。如果 禁用 并使用电源管理,则必须从 baremetal 网络访问 BMC。如果 Disabled,则必须在 baremetal 网络 上提供两个用于置备服务的 IP 地址。

Managed :将此参数设置为 Managed( 默认设置),以全面管理调配网络,包括 DHCP、TFTP 等。

Unmanaged :将此参数 设置为 Unmanaged 以启用调配网络,但需要手动配置 DHCP。建议进行虚拟介质调配,但在需要时仍可使用 PXE。

httpProxy

 

将此参数设置为环境中使用的适当 HTTP 代理。

httpsProxy

 

将此参数设置为环境中使用的适当 HTTPS 代理。

noProxy

 

将此参数设置为适合环境中代理使用的排除项。

主机

hosts 参数是用于构建集群的独立裸机资产列表。

表 10.5. 主机
名称默认值描述

名称

 

与详细信息 关联的 BareMetalHost 资源的名称。例如: openshift-master-0

role

 

裸机节点的角色。masterworker

bmc

 

基板管理控制器的连接详情。如需了解更多详细信息,请参阅 BMC 寻址部分。

bootMACAddress

 

主机用于 调配 网络的 NIC 的 MAC 地址。Ironic 使用 bootMACAddress 配置设置检索 IP 地址。然后,它将绑定到 主机。

注意

如果禁用了 provisioning 网络,则必须从主机提供有效的 MAC 地址。

10.3.6.7. 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 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: ipmi://<out-of-band-ip>
          username: <user>
          password: <password>
重要

当 PXE 引导使用 IPMI 进行 BMC 寻址时,需要 provisioning 网络。没有 provisioning 网络,就无法 PXE 引导主机。如果您在没有 provisioning 网络的情况下部署,则必须使用虚拟介质 BMC 寻址选项,如 redfish-virtualmediaidrac-virtualmedia。详情请查看 "Redfish 虚拟介质 for HPE iLO" 部分的"适用于 HPE iLO 的 BMC 寻址"部分或"适用于戴尔 iDRAC 的"红帽虚拟媒体"部分中的"红帽虚拟介质"。

RedFish 网络引导

要启用 Redfish,请使用 redfish://redfish+http:// 禁用 TLS。安装程序需要主机名或 IP 地址,以及系统 ID 的路径。以下示例演示了 install-config.yaml 文件中的 Redfish 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish://<out-of-band-ip>/redfish/v1/Systems/1
          username: <user>
          password: <password>

虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish://<out-of-band-ip>/redfish/v1/Systems/1
          username: <user>
          password: <password>
          disableCertificateVerification: True

10.3.6.8. 适用于 Dell iDRAC 的 BMC 寻址

每个 bmc 条目 的地址 字段是连接到 OpenShift Container Platform 集群节点的 URL,包括 URL 方案中的控制器类型及其网络中的位置。

platform:
  baremetal:
    hosts:
      - name: <hostname>
        role: <master | worker>
        bmc:
          address: <address> 1
          username: <user>
          password: <password>
1
地址 配置设置指定协议。

对于 Dell 硬件,红帽支持集成 Dell Remote Access Controller(iDRAC)虚拟介质、Redfish 网络引导和 IPMI。

Dell iDRAC 的 BMC 地址格式
协议地址格式

iDRAC 虚拟介质

idrac-virtualmedia://<out-of-band-ip>/redfish/v1/Systems/System.Embedded.1

RedFish 网络引导

redfish://<out-of-band-ip>/redfish/v1/Systems/System.Embedded.1

IPMI

ipmi://<out-of-band-ip>

重要

使用 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 虚拟介质。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: idrac-virtualmedia://<out-of-band-ip>/redfish/v1/Systems/System.Embedded.1
          username: <user>
          password: <password>

虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: idrac-virtualmedia://<out-of-band-ip>/redfish/v1/Systems/System.Embedded.1
          username: <user>
          password: <password>
          disableCertificateVerification: True
注意

目前,只有带有 iDRAC 固件版本 4.20.20.2004.40.00.00 的 Dell 支持 Redfish,用于裸机部署中的安装程序置备安装。版本 04.40.00.00 中存在一个已知问题。使用 iDRAC 9 固件版本 04.40.00.00 时,Virtual Console 插件默认为 eHTML5,这会导致 InsertVirtualMedia 工作流出现问题。将插件设置为 HTML5 以避免出现这个问题。菜单路径为: Configuration Virtual console Plug-in Type HTML5

通过 iDRAC 控制台,确保 OpenShift Container Platform 集群节点具有 AutoAttach Enabled。菜单路径为: Configuration Virtual Media Attach Mode AutoAttach

使用 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 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish://<out-of-band-ip>/redfish/v1/Systems/System.Embedded.1
          username: <user>
          password: <password>

虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish://<out-of-band-ip>/redfish/v1/Systems/System.Embedded.1
          username: <user>
          password: <password>
          disableCertificateVerification: True
注意

目前,只有带有 iDRAC 固件版本 4.20.20.2004.40.00.00 的 Dell 硬件支持 Redfish,以便在裸机部署中安装程序置备的安装。版本 04.40.00.00 中存在一个已知问题。使用 iDRAC 9 固件版本 04.40.00.00 时,Virtual Console 插件默认为 eHTML5,这会导致 InsertVirtualMedia 工作流出现问题。将插件设置为 HTML5 以避免出现这个问题。菜单路径为: Configuration Virtual console Plug-in Type HTML5

通过 iDRAC 控制台,确保 OpenShift Container Platform 集群节点具有 AutoAttach Enabled。菜单路径为: Configuration Virtual Media Attach Mode AutoAttach

redfish:// URL 协议与 Ironic 中的 红色硬件 类型对应。

10.3.6.9. HPE iLO 的 BMC 寻址

每个 bmc 条目 的地址 字段是连接到 OpenShift Container Platform 集群节点的 URL,包括 URL 方案中的控制器类型及其网络中的位置。

platform:
  baremetal:
    hosts:
      - name: <hostname>
        role: <master | worker>
        bmc:
          address: <address> 1
          username: <user>
          password: <password>
1
地址 配置设置指定协议。

对于 HPE 集成 Lights Out(iLO),红帽支持红帽虚拟媒体、Redfish 网络引导和 IPMI。

表 10.6. HPE iLO 的 BMC 地址格式
协议地址格式

RedFish 虚拟介质

redfish-virtualmedia://<out-of-band-ip>/redfish/v1/Systems/1

RedFish 网络引导

redfish://<out-of-band-ip>/redfish/v1/Systems/1

IPMI

ipmi://<out-of-band-ip>

详情请查看以下部分。

HPE iLO 的 RedFish 虚拟介质

要为 HPE 服务器启用 Redfish 虚拟介质,请在 address 设置中使用 redfish-virtualmedia://。以下示例演示了在 install-config.yaml 文件中使用 Redfish 虚拟介质。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish-virtualmedia://<out-of-band-ip>/redfish/v1/Systems/1
          username: <user>
          password: <password>

虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish-virtualmedia://<out-of-band-ip>/redfish/v1/Systems/1
          username: <user>
          password: <password>
          disableCertificateVerification: True
注意

运行 iLO4 的 9 代系统上不支持 RedFish 虚拟介质,因为 Ironic 不支持使用虚拟介质的 iLO4。

HPE iLO 的 RedFish 网络引导

要启用 Redfish,请使用 redfish://redfish+http:// 禁用 TLS。安装程序需要主机名或 IP 地址,以及系统 ID 的路径。以下示例演示了 install-config.yaml 文件中的 Redfish 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish://<out-of-band-ip>/redfish/v1/Systems/1
          username: <user>
          password: <password>

虽然建议为带外管理地址提供颁发机构证书,但在使用自签名证书时,您必须在 bmc 配置中包含 disableCertificateVerification: True。以下示例演示了在 install-config.yaml 文件中使用 disableCertificateVerification: True 配置参数的 Redfish 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: redfish://<out-of-band-ip>/redfish/v1/Systems/1
          username: <user>
          password: <password>
          disableCertificateVerification: True

10.3.6.10. Fujitsu iRMC 的 BMC 寻址

每个 bmc 条目 的地址 字段是连接到 OpenShift Container Platform 集群节点的 URL,包括 URL 方案中的控制器类型及其网络中的位置。

platform:
  baremetal:
    hosts:
      - name: <hostname>
        role: <master | worker>
        bmc:
          address: <address> 1
          username: <user>
          password: <password>
1
地址 配置设置指定协议。

对于富士通硬件,红帽支持集成远程管理控制器(iRMC)和 IPMI。

表 10.7. Fujitsu iRMC 的 BMC 地址格式
协议地址格式

iRMC

irmc://<out-of-band-ip>

IPMI

ipmi://<out-of-band-ip>

iRMC

Fujitsu 节点可以使用 irmc://<out-of-band-ip>,默认为端口 443。以下示例演示了 install-config.yaml 文件中的 iRMC 配置。

platform:
  baremetal:
    hosts:
      - name: openshift-master-0
        role: master
        bmc:
          address: irmc://<out-of-band-ip>
          username: <user>
          password: <password>
注意

目前,Fujitsu 支持 iRMC S5 固件版本 3.05 及更高版本用于裸机上的安装程序置备安装。

10.3.6.11. Root 设备提示

rootDeviceHints 参数可让安装程序将 Red Hat Enterprise Linux CoreOS(RHCOS)镜像置备到特定的设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。安装程序使用第一个与 hint 值匹配的发现设备。配置可以组合多个 hint,但设备必须与所有提示匹配,以便安装程序进行选择。

表 10.8. 子字段
子字段描述

deviceName

包含类似 /dev/vda 的 Linux 设备名称的字符串。hint 必须与实际值完全匹配。

hctl

包含类似 0:0:0:0:0 的 SCSI 总线地址的字符串。hint 必须与实际值完全匹配。

model

包含特定厂商的设备标识符的字符串。hint 可以是实际值的子字符串。

vendor

包含该设备厂商或制造商名称的字符串。hint 可以是实际值的子字符串。

serialNumber

包含设备序列号的字符串。hint 必须与实际值完全匹配。

minSizeGigabytes

以 GB 为单位代表设备的最小大小的整数。

wwn

包含唯一存储标识符的字符串。hint 必须与实际值完全匹配。

wwnWithExtension

包含唯一存储标识符的字符串,并附加厂商扩展。hint 必须与实际值完全匹配。

wwnVendorExtension

包含唯一厂商存储标识符的字符串。hint 必须与实际值完全匹配。

rotational

指明该设备为旋转磁盘(true)还是非旋转磁盘(false)的布尔值。

示例用法

     - name: master-0
       role: master
       bmc:
         address: ipmi://10.10.0.3:6203
         username: admin
         password: redhat
       bootMACAddress: de:ad:be:ef:00:40
       rootDeviceHints:
         deviceName: "/dev/sda"

10.3.6.12. 创建 OpenShift Container Platform 清单

  1. 创建 OpenShift Container Platform 清单。

    $ ./openshift-baremetal-install --dir ~/clusterconfigs create manifests
    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

10.3.6.13. 为断开连接的集群配置 NTP(可选)

OpenShift Container Platform 在集群节点上安装 chrony 网络时间协议(NTP)服务。

OpenShift Container Platform 节点必须在日期和时间上达成一致才能正确运行。当 worker 节点从 control plane 节点上的 NTP 服务器检索日期和时间时,它会启用未连接到可路由网络的集群的安装和操作,因此无法访问更高的 stratum NTP 服务器。

流程

  1. 为 control plane 节点创建一个 Butane 配置 99-master-chrony-conf-override.bu,包括 chrony.conf 文件的内容。

    注意

    如需有关 Butane 的信息,请参阅"使用 Butane 创建机器配置"。

    但ane 配置示例

    variant: openshift
    version: 4.9.0
    metadata:
      name: 99-master-chrony-conf-override
      labels:
        machineconfiguration.openshift.io/role: master
    storage:
      files:
        - path: /etc/chrony.conf
          mode: 0644
          overwrite: true
          contents:
            inline: |
              # Use public servers from the pool.ntp.org project.
              # Please consider joining the pool (https://www.pool.ntp.org/join.html).
    
              # The Machine Config Operator manages this file
              server openshift-master-0.<cluster-name>.<domain> iburst 1
              server openshift-master-1.<cluster-name>.<domain> iburst
              server openshift-master-2.<cluster-name>.<domain> iburst
    
              stratumweight 0
              driftfile /var/lib/chrony/drift
              rtcsync
              makestep 10 3
              bindcmdaddress 127.0.0.1
              bindcmdaddress ::1
              keyfile /etc/chrony.keys
              commandkey 1
              generatecommandkey
              noclientlog
              logchange 0.5
              logdir /var/log/chrony
    
              # Configure the control plane nodes to serve as local NTP servers
              # for all worker nodes, even if they are not in sync with an
              # upstream NTP server.
    
              # Allow NTP client access from the local network.
              allow all
              # Serve time even if not synchronized to a time source.
              local stratum 3 orphan

    1
    您必须将 <cluster-name> 替换为集群名称,并将 <domain> 替换为完全限定域名。
  2. 使用 Butane 生成 MachineConfig 对象文件 99-master-chrony-conf-override.yaml,其中包含要发送到 control plane 节点的配置:

    $ butane 99-master-chrony-conf-override.bu -o 99-master-chrony-conf-override.yaml
  3. 为引用 control plane 节点上的 NTP 服务器的 worker 节点创建 Butane 配置 99-worker-chrony-conf-override.bu,包括 chrony.conf 文件的内容。

    但ane 配置示例

    variant: openshift
    version: 4.9.0
    metadata:
      name: 99-worker-chrony-conf-override
      labels:
        machineconfiguration.openshift.io/role: worker
    storage:
      files:
        - path: /etc/chrony.conf
          mode: 0644
          overwrite: true
          contents:
            inline: |
              # The Machine Config Operator manages this file.
              server openshift-master-0.<cluster-name>.<domain> iburst 1
              server openshift-master-1.<cluster-name>.<domain> iburst
              server openshift-master-2.<cluster-name>.<domain> iburst
    
              stratumweight 0
              driftfile /var/lib/chrony/drift
              rtcsync
              makestep 10 3
              bindcmdaddress 127.0.0.1
              bindcmdaddress ::1
              keyfile /etc/chrony.keys
              commandkey 1
              generatecommandkey
              noclientlog
              logchange 0.5
              logdir /var/log/chrony

    1
    您必须将 <cluster-name> 替换为集群名称,并将 <domain> 替换为完全限定域名。
  4. 使用 Butane 生成 MachineConfig 对象文件 99-worker-chrony-conf-override.yaml,其中包含要交付至 worker 节点的配置:

    $ butane 99-worker-chrony-conf-override.bu -o 99-worker-chrony-conf-override.yaml

10.3.6.14. (可选)配置在 control plane 上运行的网络组件

您可以配置网络组件,使其仅在 control plane 节点上运行。默认情况下,OpenShift Container Platform 允许机器配置池中的任何节点托管 ingressVIP 虚拟 IP 地址。但是,某些环境在与 control plane 节点独立的子网中部署 worker 节点。在单独的子网中部署远程 worker 时,您必须将 ingressVIP 虚拟 IP 地址专门用于 control plane 节点。

流程

  1. 进入存储 install-config.yaml 文件的目录:

    $ cd ~/clusterconfigs
  2. 切换到 manifests 子目录:

    $ cd manifests
  3. 创建名为 cluster-network-avoid-workers-99-config.yaml 的文件:

    $ touch cluster-network-avoid-workers-99-config.yaml
  4. 在编辑器中打开 cluster-network-avoid-workers-99-config.yaml 文件,并输入描述 Operator 配置的自定义资源(CR):

    apiVersion: machineconfiguration.openshift.io/v1
    kind: MachineConfig
    metadata:
      name: 50-worker-fix-ipi-rwn
      labels:
        machineconfiguration.openshift.io/role: worker
    spec:
      config:
        ignition:
          version: 3.2.0
        storage:
          files:
            - path: /etc/kubernetes/manifests/keepalived.yaml
              mode: 0644
              contents:
                source: data:,

    此清单将 ingressVIP 虚拟 IP 地址放在 control plane 节点上。另外,此清单仅在 control plane 节点上部署以下进程:

    • openshift-ingress-operator
    • keepalived
  5. 保存 cluster-network-avoid-workers-99-config.yaml 文件。
  6. 创建 manifests/cluster-ingress-default-ingresscontroller.yaml 文件:

    apiVersion: operator.openshift.io/v1
    kind: IngressController
    metadata:
      name: default
      namespace: openshift-ingress-operator
    spec:
      nodePlacement:
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/master: ""
  7. 考虑备份 manifests 目录。在创建集群时,安装程序会删除 manifests/ 目录。
  8. 通过将 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
    注意

    如果在完成此步骤后 control plane 节点不可调度,则部署集群将失败。

10.3.6.15. 为 worker 节点配置 BIOS

以下流程在安装过程中为 worker 节点配置 BIOS。

流程

  1. 创建清单。
  2. 修改与 worker 对应的 BMH 文件:

    $ vim clusterconfigs/openshift/99_openshift-cluster-api_hosts-3.yaml
  3. 将 BIOS 配置添加到 BMH 文件的 spec 部分:

    spec:
      firmware:
        simultaneousMultithreadingEnabled: true
        sriovEnabled: true
        virtualizationEnabled: true
    注意
    1. 红帽支持三种 BIOS 配置:详情请查看 BMH 文档。仅支持 bmc 类型 irmc 的服务器。目前不支持其他类型的服务器。
  4. 创建集群。

10.3.7. 创建断开连接的 registry(可选)

在某些情况下,您可能想要使用安装 registry 的本地副本安装 OpenShift Container Platform 集群。这可能是为了提高网络效率,因为集群节点位于无法访问互联网的网络中。

一个本地的或被镜像的 registry 副本需要以下内容:

  • registry 节点的证书。这可以是自签名证书。
  • 系统中的容器将服务的 Web 服务器。
  • 包含证书和本地存储库信息的更新的 pull secret。
注意

在 registry 节点上创建断开连接的 registry 是可选的。后续小节表示它们是可选的,因为只有在 registry 节点上创建断开连接的 registry 时才需要执行这些步骤。在 registry 节点上创建断开连接的 registry 时,您应该执行标记为"(可选)" 的所有子部分。

10.3.7.1. 准备 registry 节点以托管已镜像的 registry(可选)

对 registry 节点进行以下更改。

流程

  1. 打开 registry 节点上的防火墙端口。

    $ sudo firewall-cmd --add-port=5000/tcp --zone=libvirt  --permanent
    $ sudo firewall-cmd --add-port=5000/tcp --zone=public   --permanent
    $ sudo firewall-cmd --reload
  2. 为 registry 节点安装所需的软件包。

    $ sudo yum -y install python3 podman httpd httpd-tools jq
  3. 创建保存存储库信息的目录结构。

    $ sudo mkdir -p /opt/registry/{auth,certs,data}

10.3.7.2. 生成自签名证书(可选)

为 registry 节点生成自签名证书,并将其放在 /opt/registry/certs 目录中。

流程

  1. 根据情况调整证书信息。

    $ host_fqdn=$( hostname --long )
    $ cert_c="<Country Name>"   # Country Name (C, 2 letter code)
    $ cert_s="<State>"          # Certificate State (S)
    $ cert_l="<Locality>"       # Certificate Locality (L)
    $ cert_o="<Organization>"   # Certificate Organization (O)
    $ cert_ou="<Org Unit>"      # Certificate Organizational Unit (OU)
    $ cert_cn="${host_fqdn}"    # Certificate Common Name (CN)
    
    $ openssl req \
        -newkey rsa:4096 \
        -nodes \
        -sha256 \
        -keyout /opt/registry/certs/domain.key \
        -x509 \
        -days 365 \
        -out /opt/registry/certs/domain.crt \
        -addext "subjectAltName = DNS:${host_fqdn}" \
        -subj "/C=${cert_c}/ST=${cert_s}/L=${cert_l}/O=${cert_o}/OU=${cert_ou}/CN=${cert_cn}"
    注意

    当替换 <Country Name> 时,请确保它只包含两个字母。例如,US

  2. 使用新证书更新 registry 节点的 ca-trust

    $ sudo cp /opt/registry/certs/domain.crt /etc/pki/ca-trust/source/anchors/
    $ sudo update-ca-trust extract

10.3.7.3. 创建 registry podman 容器(可选)

registry 容器使用 /opt/registry 目录获取证书、身份验证文件和存储其数据文件。

注册表容器使用 httpd 并需要 htpasswd 文件进行身份验证。

流程

  1. /opt/registry/auth 中创建 htpasswd 文件,供容器使用。

    $ htpasswd -bBc /opt/registry/auth/htpasswd <user> <passwd>

    <user> 替换为用户名,将 <passwd> 替换为密码。

  2. 创建并启动 registry 容器。

    $ podman create \
      --name ocpdiscon-registry \
      -p 5000:5000 \
      -e "REGISTRY_AUTH=htpasswd" \
      -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry" \
      -e "REGISTRY_HTTP_SECRET=ALongRandomSecretForRegistry" \
      -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \
      -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/domain.crt" \
      -e "REGISTRY_HTTP_TLS_KEY=/certs/domain.key" \
      -e "REGISTRY_COMPATIBILITY_SCHEMA1_ENABLED=true" \
      -v /opt/registry/data:/var/lib/registry:z \
      -v /opt/registry/auth:/auth:z \
      -v /opt/registry/certs:/certs:z \
      docker.io/library/registry:2
    $ podman start ocpdiscon-registry

10.3.7.4. 复制和更新 pull-secret(可选)

将 pull secret 文件从置备程序节点复制到 registry 节点,并将其修改为包含新 registry 节点的身份验证信息。

流程

  1. 复制 pull-secret.txt 文件。

    $ scp kni@provisioner:/home/kni/pull-secret.txt pull-secret.txt
  2. 使用 registry 节点的完全限定域名更新 host_fqdn 环境变量。

    $ host_fqdn=$( hostname --long )
  3. 使用用于创建 htpasswd 文件的 http 凭据的 base64 编码来更新 b64auth 环境变量。

    $ b64auth=$( echo -n '<username>:<passwd>' | openssl base64 )

    <username> 替换为用户名,将 <passwd> 替换为密码。

  4. AUTHSTRING 环境变量设置为使用 base64 授权字符串。$USER 变量是包含当前用户名称的环境变量。

    $ AUTHSTRING="{\"$host_fqdn:5000\": {\"auth\": \"$b64auth\",\"email\": \"$USER@redhat.com\"}}"
  5. 更新 pull-secret.txt 文件。

    $ jq ".auths += $AUTHSTRING" < pull-secret.txt > pull-secret-update.txt

10.3.7.5. 对存储库进行镜像(可选)

流程

  1. 将 provisioner 节点中的 oc 二进制文件复制到 registry 节点。

    $ sudo scp kni@provisioner:/usr/local/bin/oc /usr/local/bin
  2. 设置所需的环境变量。

    1. 设置发行版本:

      $ VERSION=<release_version>

      对于 <release_version>,请指定与 OpenShift Container Platform 版本对应的标签,如 4.9

    2. 设置本地 registry 名称和主机端口:

      $ LOCAL_REG='<local_registry_host_name>:<local_registry_host_port>'

      对于 <local_registry_host_name>,请指定镜像存储库的 registry 域名;对于 <local_registry_host_port>,请指定用于提供内容的端口。

    3. 设置本地存储库名称:

      $ LOCAL_REPO='<local_repository_name>'

      对于 <local_repository_name>,请指定要在 registry 中创建的仓库名称,如 ocp4/openshift4

  3. 将远程安装镜像镜像到本地存储库。

    $ /usr/local/bin/oc adm release mirror \
      -a pull-secret-update.txt \
      --from=$UPSTREAM_REPO \
      --to-release-image=$LOCAL_REG/$LOCAL_REPO:${VERSION} \
      --to=$LOCAL_REG/$LOCAL_REPO

10.3.7.6. 修改 install-config.yaml 文件,以使用断开连接的 registry(可选)

在 provisioner 节点上,install -config.yaml 文件应该使用从 pull-secret- update.txt 文件中新创建的 pull-secretinstall-config.yaml 文件还必须包含断开连接的 registry 节点的证书和 registry 信息。

流程

  1. 将断开连接的 registry 节点的证书添加到 install-config.yaml 文件中。证书应跟在 "additionalTrustBundle: |" 行后面,并正确缩进(通常用两个空格)。

    $ echo "additionalTrustBundle: |" >> install-config.yaml
    $ sed -e 's/^/  /' /opt/registry/certs/domain.crt >> install-config.yaml
  2. 将 registry 的镜像信息添加到 install-config.yaml 文件中。

    $ echo "imageContentSources:" >> install-config.yaml
    $ echo "- mirrors:" >> install-config.yaml
    $ echo "  - registry.example.com:5000/ocp4/openshift4" >> install-config.yaml
    $ echo "  source: quay.io/openshift-release-dev/ocp-release" >> install-config.yaml
    $ echo "- mirrors:" >> install-config.yaml
    $ echo "  - registry.example.com:5000/ocp4/openshift4" >> install-config.yaml
    $ echo "  source: quay.io/openshift-release-dev/ocp-v4.0-art-dev" >> install-config.yaml
    注意

    registry.example.com 替换为 registry 的完全限定域名。

10.3.8. 在 worker 节点上部署路由器

在安装过程中,安装程序会在 worker 节点上部署路由器 Pod。默认情况下,安装程序会安装两个路由器 Pod。如果初始集群只有一个 worker 节点,或者如果部署的集群需要额外的路由器来处理用于 OpenShift Container Platform 集群中服务的外部流量负载,您可以创建一个 yaml 文件来设置适当数量的路由器副本。

注意

默认情况下,安装程序会部署两个路由器。如果集群至少有两个 worker 节点,您可以跳过本节。

注意

如果集群没有 worker 节点,安装程序默认会在 control plane 节点上部署两个路由器。如果集群没有 worker 节点,您可以跳过本节。

流程

  1. 创建 router-replicas.yaml 文件。

    apiVersion: operator.openshift.io/v1
    kind: IngressController
    metadata:
      name: default
      namespace: openshift-ingress-operator
    spec:
      replicas: <num-of-router-pods>
      endpointPublishingStrategy:
        type: HostNetwork
      nodePlacement:
        nodeSelector:
          matchLabels:
            node-role.kubernetes.io/worker: ""
    注意

    <num-of-router-pods> 替换为适当的值。如果只使用一个 worker 节点,请将 replicas: 设置为 1。如果使用 3 个以上 worker 节点,您可以根据情况增加 replicas: 的默认值 2

  2. router-replicas.yaml 文件复制到 clusterconfigs/openshift 目录中。

    cp ~/router-replicas.yaml clusterconfigs/openshift/99_router-replicas.yaml

10.3.9. 安装的验证清单

  • ❏ 已检索到 OpenShift Container Platform 安装程序。
  • ❏ 已提取 OpenShift Container Platform 安装程序。
  • ❏ 已配置了 install-config.yaml 的必要参数。
  • ❏ 已配置了 install-config.yamlhosts 参数。
  • ❏ 已配置了 install-config.yamlbmc 参数。
  • ❏ 在 bmc address 字段中配置的值已被应用。
  • ❏ 创建断开连接的 registry(可选)。
  • ❏ (可选)如果使用,验证断开连接的 registry 设置。
  • ❏ (可选)在 worker 节点上部署路由器。

10.3.10. 通过 OpenShift Container Platform 安装程序部署集群

运行 OpenShift Container Platform 安装程序:

$ ./openshift-baremetal-install --dir ~/clusterconfigs --log-level debug create cluster

10.3.11. 安装后

在部署过程中,您可以通过向安装目录文件夹中的 .openshift_install.log 日志文件发出 tail 命令来检查安装的整体状态。

$ tail -f /path/to/install-dir/.openshift_install.log

10.3.12. 验证静态 IP 地址配置

如果集群节点的 DHCP 保留指定了无限租期,安装程序成功置备该节点后,分配程序脚本会检查节点的网络配置。如果脚本确定网络配置包含无限 DHCP 租期,它将 DHCP 租期的 IP 地址用作静态 IP 地址来创建新连接。

注意

分配程序脚本可能会在成功置备的节点上运行,同时持续置备集群中的其他节点。

验证网络配置是否正常工作。

流程

  1. 检查节点上的网络接口配置。
  2. 关闭 DHCP 服务器并重启 OpenShift Container Platform 节点,并确保网络配置可以正常工作。

其他资源

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.