11.4. 为 OpenShift Container Platform 准备 PXE 资产


使用以下步骤创建基于代理的安装程序,创建 PXE 引导 OpenShift Container Platform 集群所需的资产。

您在这些步骤中创建的资产将部署单节点 OpenShift Container Platform 安装。您可以使用这些步骤作为基础并根据您的要求修改配置。

请参阅使用基于代理的安装程序安装 OpenShift Container Platform 集群,以了解更多有关基于代理的安装程序可用的配置。

11.4.1. 先决条件

11.4.2. 下载基于代理的安装程序

使用这个流程下载安装所需的基于代理的安装程序和 CLI。

流程

  1. 使用您的登录凭证登录到 OpenShift Container Platform web 控制台。
  2. 进入到 Datacenter
  3. 在本地点 Run Agent-based Installer
  4. OpenShift Installer命令行界面选择操作系统和架构。
  5. Download Installer 下载并提取安装程序。
  6. 通过点 Download pull secretCopy pull secret 下载或复制 pull secret。
  7. Download command-line tools,将 openshift-install 二进制文件放在 PATH 中的目录中。

11.4.3. 创建首选配置输入

使用这个流程创建用于创建 PXE 文件的首选配置输入。

流程

  1. 运行以下命令来安装 nmstate 依赖项:

    $ sudo dnf install /usr/bin/nmstatectl -y
  2. openshift-install 二进制文件放到 PATH 中的目录中。
  3. 运行以下命令,创建一个目录来存储安装配置:

    $ mkdir ~/<directory_name>
    注意

    这是基于代理的安装的首选方法。使用 GitOps ZTP 清单是可选的。

  4. 运行以下命令来创建 install-config.yaml 文件:

    $ cat << EOF > ./my-cluster/install-config.yaml
    apiVersion: v1
    baseDomain: test.example.com
    compute:
    - architecture: amd64 1
      hyperthreading: Enabled
      name: worker
      replicas: 0
    controlPlane:
      architecture: amd64
      hyperthreading: Enabled
      name: master
      replicas: 1
    metadata:
      name: sno-cluster 2
    networking:
      clusterNetwork:
      - cidr: 10.128.0.0/14
        hostPrefix: 23
      machineNetwork:
      - cidr: 192.168.0.0/16
      networkType: OVNKubernetes 3
      serviceNetwork:
      - 172.30.0.0/16
    platform: 4
      none: {}
    pullSecret: '<pull_secret>' 5
    sshKey: '<ssh_pub_key>' 6
    EOF
    1
    指定系统架构。有效值为 amd64,arm64,ppc64le, 和 s390x

    如果使用带有 multi 有效负载的发行镜像,则可以在不同的架构上安装集群,如 arm64, amd64, s390x, 和 ppc64le。否则,您只能在 openshift-install version 命令的输出中所显示的发行构架上安装集群。如需更多信息,请参阅"验证安装基于代理的安装程序集群的受支持架构"。

    2
    必需。指定集群名称。
    3
    要安装的集群网络插件。默认值 OVNKubernetes 是唯一支持的值。
    4
    指定您的平台。
    注意

    对于裸机平台,默认使用 install-config.yaml 文件的 platform 部分中进行的主机设置,除非它们被 agent-config.yaml 文件中的配置覆盖。

    5
    指定 pull secret。
    6
    指定 SSH 公钥。
    注意

    如果将平台设置为 vSpherebaremetal,您可以使用三种方式为集群节点配置 IP 地址端点:

    • IPv4
    • IPv6
    • IPv4 和 IPv6 并行 (dual-stack)

    IPv6 仅在裸机平台上被支持。

    双栈网络示例

    networking:
      clusterNetwork:
        - cidr: 172.21.0.0/16
          hostPrefix: 23
        - cidr: fd02::/48
          hostPrefix: 64
      machineNetwork:
        - cidr: 192.168.11.0/16
        - cidr: 2001:DB8::/32
      serviceNetwork:
        - 172.22.0.0/16
        - fd03::/112
      networkType: OVNKubernetes
    platform:
      baremetal:
        apiVIPs:
        - 192.168.11.3
        - 2001:DB8::4
        ingressVIPs:
        - 192.168.11.4
        - 2001:DB8::5

    注意

    使用断开连接的镜像 registry 时,您必须将之前为镜像 registry 创建的证书文件添加到 install-config.yaml 文件的 additionalTrustBundle 字段中。

  5. 运行以下命令来创建 agent-config.yaml 文件:

    $ cat > agent-config.yaml << EOF
    apiVersion: v1beta1
    kind: AgentConfig
    metadata:
      name: sno-cluster
    rendezvousIP: 192.168.111.80 1
    hosts: 2
      - hostname: master-0 3
        interfaces:
          - name: eno1
            macAddress: 00:ef:44:21:e6:a5
        rootDeviceHints: 4
          deviceName: /dev/sdb
        networkConfig: 5
          interfaces:
            - name: eno1
              type: ethernet
              state: up
              mac-address: 00:ef:44:21:e6:a5
              ipv4:
                enabled: true
                address:
                  - ip: 192.168.111.80
                    prefix-length: 23
                dhcp: false
          dns-resolver:
            config:
              server:
                - 192.168.111.1
          routes:
            config:
              - destination: 0.0.0.0/0
                next-hop-address: 192.168.111.2
                next-hop-interface: eno1
                table-id: 254
    EOF
    1
    此 IP 地址用于确定哪些节点执行 bootstrap 过程,以及运行 assisted-service 组件。当您没有在 networkConfig 参数中指定至少一个主机的 IP 地址时,您必须提供 rendezvous IP 地址。如果没有提供此地址,则会从提供的主机的 networkConfig 中选择一个 IP 地址。
    2
    可选:主机配置。定义的主机数量不能超过 install-config.yaml 文件中定义的主机总数,这是 compute.replicascontrolPlane.replicas 参数的值的总和。
    3
    可选:覆盖从动态主机配置协议(DHCP)或反向 DNS 查找中获取的主机名。每个主机必须具有由这些方法提供的唯一主机名。
    4
    启用将 Red Hat Enterprise Linux CoreOS (RHCOS)镜像置备到特定设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。它使用第一个与 hint 值匹配的发现设备。
    5
    可选:以 NMState 格式配置主机的网络接口。
  6. 可选: 要创建 iPXE 脚本,请将 bootArtifactsBaseURL 添加到 agent-config.yaml 文件中:

    apiVersion: v1beta1
    kind: AgentConfig
    metadata:
      name: sno-cluster
    rendezvousIP: 192.168.111.80
    bootArtifactsBaseURL: <asset_server_URL>

    其中 <asset_server_URL> 是要将 PXE 资产上传到的服务器的 URL。

11.4.4. 创建 PXE 资产

使用以下步骤创建资产和可选脚本,以便在 PXE 基础架构中实现。

流程

  1. 运行以下命令来创建 PXE 资产:

    $ openshift-install agent create pxe-files

    生成的 PXE 资产和可选 iPXE 脚本可在 boot-artifacts 目录中找到。

    带有 PXE 资产和可选 iPXE 脚本的文件系统示例

    boot-artifacts
        ├─ agent.x86_64-initrd.img
        ├─ agent.x86_64.ipxe
        ├─ agent.x86_64-rootfs.img
        └─ agent.x86_64-vmlinuz

    重要

    boot-artifacts 目录的内容因指定的架构而异。

    注意

    Red Hat Enterprise Linux CoreOS (RHCOS) 支持主磁盘上的多路径,允许对硬件故障进行更强大的弹性,以实现更高的主机可用性。在代理 ISO 镜像中默认启用多路径,默认 /etc/multipath.conf 配置。

  2. 将 PXE 资产和可选脚本上传到您的基础架构,以便在引导过程中访问它们。

    注意

    如果您生成 iPXE 脚本,资产的位置必须与添加到 agent-config.yaml 文件中的 bootArtifactsBaseURL 匹配。

11.4.5. 手动添加 IBM Z 代理

创建 PXE 资产后,您可以添加 IBM Z® 代理。仅将此流程用于 IBM Z® 集群。

根据您的 IBM Z® 环境,您可以从以下选项中选择:

  • 使用 z/VM 添加 IBM Z® 代理
  • 使用 RHEL KVM 添加 IBM Z® 代理
  • 使用逻辑分区 (LPAR) 添加 IBM Z® 代理
注意

目前,IBM Z® (s390x') 上的 ISO 引导支持仅适用于 Red Hat Enterprise Linux (RHEL) KVM,这为选择 PXE 或基于 ISO 的安装提供了灵活性。对于使用 z/VM 和逻辑分区 (LPAR) 的安装,只支持 PXE 引导。

11.4.5.1. 使用 z/VM 添加 IBM Z 代理

使用以下步骤使用 z/VM 手动添加 IBM Z® 代理。仅对带有 z/VM 的 IBM Z® 集群使用此流程。

流程

  1. 为 z/VM 客户机创建一个参数文件:

    参数文件示例

    rd.neednet=1 \
    console=ttysclp0 \
    coreos.live.rootfs_url=<rootfs_url> \ 1
    ip=172.18.78.2::172.18.78.1:255.255.255.0:::none nameserver=172.18.78.1 \ 2
    zfcp.allow_lun_scan=0 \ 3
    rd.znet=qeth,0.0.bdd0,0.0.bdd1,0.0.bdd2,layer2=1 \
    rd.dasd=0.0.4411 \ 4
    rd.zfcp=0.0.8001,0x50050763040051e3,0x4000406300000000 \ 5
    random.trust_cpu=on rd.luks.options=discard \
    ignition.firstboot ignition.platform.id=metal \
    console=tty1 console=ttyS1,115200n8 \
    coreos.inst.persistent-kargs="console=tty1 console=ttyS1,115200n8"

    1
    对于 coreos.live.rootfs_url 工件,请为您要引导的内核initramfs 指定匹配的 rootfs 工件。仅支持 HTTP 和 HTTPS 协议。
    2
    对于 ip 参数,使用 DHCP 自动分配 IP 地址,或者手动分配 IP 地址,如"在 IBM Z® 和 IBM® LinuxONE 上使用 z/VM 安装集群"中所述。
    3
    默认值为 1。使用 OSA 网络适配器时省略此条目。
    4
    对于在 DASD 类型磁盘中安装,请使用 rd.dasd 指定要安装 Red Hat Enterprise Linux CoreOS (RHCOS) 的 DASD。为 FCP 类型磁盘省略此条目。
    5
    对于在 FCP 类型磁盘中安装,请使用 rd.zfcp=<adapter>,<wwpn>,<lun> 指定要安装 RHCOS 的 FCP 磁盘。为 DASD 类型磁盘省略这个条目。

    所有其他参数保持不变。

  2. kernel.imgcommon.parminitrd.img 文件与 z/VM 客户机虚拟机的虚拟读取器中解放。

    如需更多信息,请参阅 PUNCH (IBM 文档)。

    提示

    您可以使用 CP PUNCH 命令,或者使用 Linux ( vmur 命令) 在两个 z/VM 虚拟机之间传输文件。

  3. 登录到 bootstrap 机器上的对话监控系统 (CMS)。
  4. 运行以下命令,从 reader IPL bootstrap 机器:

    $ ipl c

    如需更多信息,请参阅 IPL (IBM 文档)。

11.4.5.2. 使用 RHEL KVM 添加 IBM Z 代理

使用以下步骤使用 RHEL KVM 手动添加 IBM Z® 代理。仅将此流程用于带有 RHEL KVM 的 IBM Z® 集群。

流程

  1. 引导 RHEL KVM 机器。
  2. 要部署虚拟服务器,请使用以下参数运行 virt-install 命令:

    $ virt-install \
       --name <vm_name> \
       --autostart \
       --ram=16384 \
       --cpu host \
       --vcpus=8 \
       --location <path_to_kernel_initrd_image>,kernel=kernel.img,initrd=initrd.img \1
       --disk <qcow_image_path> \
       --network network:macvtap ,mac=<mac_address> \
       --graphics none \
       --noautoconsole \
       --wait=-1 \
       --extra-args "rd.neednet=1 nameserver=<nameserver>" \
       --extra-args "ip=<IP>::<nameserver>::<hostname>:enc1:none" \
       --extra-args "coreos.live.rootfs_url=http://<http_server>:8080/agent.s390x-rootfs.img" \
       --extra-args "random.trust_cpu=on rd.luks.options=discard" \
       --extra-args "ignition.firstboot ignition.platform.id=metal" \
       --extra-args "console=tty1 console=ttyS1,115200n8" \
       --extra-args "coreos.inst.persistent-kargs=console=tty1 console=ttyS1,115200n8" \
       --osinfo detect=on,require=off
    1
    对于 --location 参数,指定 HTTP 或 HTTPS 服务器中的 kernel/initrd 的位置。

11.4.5.3. 在逻辑分区 (LPAR) 中添加 IBM Z 代理

使用以下步骤将 IBM Z® 代理手动添加到在 LPAR 环境中运行的集群。这个过程只适用于在 LPAR 中运行的 IBM Z® 集群。

先决条件

  • 已安装 Python 3。

流程

  1. 为代理创建引导参数文件。

    参数文件示例

    rd.neednet=1 cio_ignore=all,!condev \
    console=ttysclp0 \
    ignition.firstboot ignition.platform.id=metal
    coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img \1
    coreos.inst.persistent-kargs=console=ttysclp0
    ip=<ip>::<gateway>:<netmask>:<hostname>::none nameserver=<dns> \2
    rd.znet=qeth,<network_adaptor_range>,layer2=1
    rd.<disk_type>=<adapter> \3
    zfcp.allow_lun_scan=0
    ai.ip_cfg_override=1 \4
    random.trust_cpu=on rd.luks.options=discard

    1
    对于 coreos.live.rootfs_url 工件,请为您要启动的 kernelinitramfs 指定匹配的 rootfs 工件。仅支持 HTTP 和 HTTPS 协议。
    2
    对于 ip 参数,请手动分配 IP 地址,如 在 IBM Z 和 IBM LinuxONE 中使用 z/VM 安装集群中所述。
    3
    对于在 DASD 类型磁盘中安装,请使用 rd.dasd 指定要安装 Red Hat Enterprise Linux CoreOS (RHCOS) 的 DASD。对于在 FCP 类型磁盘中安装,请使用 rd.zfcp=<adapter>,<wwpn>,<lun> 指定要安装 RHCOS 的 FCP 磁盘。
    4
    使用 Open Systems Adapter (OSA) 或 HiperSockets 时指定此参数。
  2. 通过运行以下 Python 脚本生成 .insinitrd.img.addrsize 文件:

    .ins 文件是一个特殊文件,其中包含安装数据并存在于 FTP 服务器上。它可以从 HMC 系统访问。此文件包含详细信息,如映射磁盘或 FTP 服务器上安装数据的位置、要复制数据的内存位置。

    注意

    .insinitrd.img.addrsize 文件不会作为安装程序的 boot-artifacts 的一部分自动生成。您必须手动生成这些文件。

    1. 将以下脚本保存到文件中,如 generate-files.py

      名为 generate-files.py 文件的 Python 文件示例

      # The following commands retrieve the size of the `kernel` and `initrd`:
      KERNEL_IMG_PATH='./kernel.img'
      INITRD_IMG_PATH='./initrd.img'
      CMDLINE_PATH='./generic.prm'
      kernel_size=(stat -c%s KERNEL_IMG_PATH)
      initrd_size=(stat -c%s INITRD_IMG_PATH)
      # The following command rounds the `kernel` size up to the next megabytes (MB) boundary.
      # This value is the starting address of `initrd.img`.
      offset=(( (kernel_size + 1048575) / 1048576 * 1048576 ))
      INITRD_IMG_NAME=(echo INITRD_IMG_PATH | rev | cut -d '/' -f 1 | rev)
      # The following commands create the kernel binary patch file that contains the `initrd` address and size:
      KERNEL_OFFSET=0x00000000
      KERNEL_CMDLINE_OFFSET=0x00010480
      INITRD_ADDR_SIZE_OFFSET=0x00010408
      OFFSET_HEX=(printf '0x%08x\n' offset)
      # The following command converts the address and size to binary format:
      printf "(printf '%016x\n' $initrd_size)" | xxd -r -p > temp_size.bin
      # The following command concatenates the address and size binaries:
      cat temp_address.bin temp_size.bin > "$INITRD_IMG_NAME.addrsize"
      # The following command deletes temporary files:
      rm -rf temp_address.bin temp_size.bin
      # The following commands create the `.ins` file.
      # The file is based on the paths of the `kernel.img`, `initrd.img`, `initrd.img.addrsize`, and `cmdline` files and the memory locations where the data is to be copied.
      KERNEL_IMG_PATH KERNEL_OFFSET
      INITRD_IMG_PATH OFFSET_HEX
      INITRD_IMG_NAME.addrsize INITRD_ADDR_SIZE_OFFSET
      CMDLINE_PATH KERNEL_CMDLINE_OFFSET

    2. 运行以下命令执行脚本:

      $ python3 <file_name>.py
  3. initrdkernelcommon.insinitrd.img.addrsize 参数文件传输到文件服务器。如需更多信息,请参阅 在 LPAR 模式中引导 Linux (IBM 文档)。
  4. 启动机器。
  5. 对集群中的所有其他机器重复这个过程。
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

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

让开源更具包容性

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

關於紅帽

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

© 2024 Red Hat, Inc.