11.4. 为 OpenShift Container Platform 准备 PXE 资产
使用以下步骤创建基于代理的安装程序,创建 PXE 引导 OpenShift Container Platform 集群所需的资产。
您在这些步骤中创建的资产将部署单节点 OpenShift Container Platform 安装。您可以使用这些步骤作为基础并根据您的要求修改配置。
请参阅使用基于代理的安装程序安装 OpenShift Container Platform 集群,以了解更多有关基于代理的安装程序可用的配置。
11.4.1. 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
11.4.2. 下载基于代理的安装程序
使用这个流程下载安装所需的基于代理的安装程序和 CLI。
流程
- 使用您的登录凭证登录到 OpenShift Container Platform web 控制台。
- 进入到 Datacenter。
- 在本地点 Run Agent-based Installer。
- 为 OpenShift Installer 和命令行界面选择操作系统和架构。
- 点 Download Installer 下载并提取安装程序。
- 通过点 Download pull secret 或 Copy pull secret 下载或复制 pull secret。
-
点 Download command-line tools,将
openshift-install
二进制文件放在PATH
中的目录中。
11.4.3. 创建首选配置输入
使用这个流程创建用于创建 PXE 文件的首选配置输入。
流程
运行以下命令来安装
nmstate
依赖项:$ sudo dnf install /usr/bin/nmstatectl -y
-
将
openshift-install
二进制文件放到 PATH 中的目录中。 运行以下命令,创建一个目录来存储安装配置:
$ mkdir ~/<directory_name>
注意这是基于代理的安装的首选方法。使用 GitOps ZTP 清单是可选的。
运行以下命令来创建
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 公钥。
注意如果将平台设置为
vSphere
或baremetal
,您可以使用三种方式为集群节点配置 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
字段中。运行以下命令来创建
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.replicas
和controlPlane.replicas
参数的值的总和。 - 3
- 可选:覆盖从动态主机配置协议(DHCP)或反向 DNS 查找中获取的主机名。每个主机必须具有由这些方法提供的唯一主机名。
- 4
- 启用将 Red Hat Enterprise Linux CoreOS (RHCOS)镜像置备到特定设备。安装程序会按照发现设备的顺序检查设备,并将发现的值与 hint 值进行比较。它使用第一个与 hint 值匹配的发现设备。
- 5
- 可选:以 NMState 格式配置主机的网络接口。
可选: 要创建 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。
其他资源
- 使用双栈网络进行部署。
- 配置 install-config yaml 文件。
- 请参阅配置三节点集群以在裸机环境中部署三节点集群。
- 关于 root 设备提示.
- nmstate 状态示例.
- 可选:创建额外的清单文件
11.4.4. 创建 PXE 资产
使用以下步骤创建资产和可选脚本,以便在 PXE 基础架构中实现。
流程
运行以下命令来创建 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
配置。将 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® 集群使用此流程。
流程
为 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 类型磁盘省略这个条目。
所有其他参数保持不变。
将
kernel.img
、common.parm
和initrd.img
文件与 z/VM 客户机虚拟机的虚拟读取器中解放。如需更多信息,请参阅 PUNCH (IBM 文档)。
提示您可以使用
CP PUNCH
命令,或者使用 Linux (vmur
命令) 在两个 z/VM 虚拟机之间传输文件。- 登录到 bootstrap 机器上的对话监控系统 (CMS)。
运行以下命令,从 reader IPL bootstrap 机器:
$ ipl c
如需更多信息,请参阅 IPL (IBM 文档)。
11.4.5.2. 使用 RHEL KVM 添加 IBM Z 代理
使用以下步骤使用 RHEL KVM 手动添加 IBM Z® 代理。仅将此流程用于带有 RHEL KVM 的 IBM Z® 集群。
流程
- 引导 RHEL KVM 机器。
要部署虚拟服务器,请使用以下参数运行
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。
流程
为代理创建引导参数文件。
参数文件示例
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
工件,请为您要启动的kernel
和initramfs
指定匹配的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 时指定此参数。
通过运行以下 Python 脚本生成
.ins
和initrd.img.addrsize
文件:.ins
文件是一个特殊文件,其中包含安装数据并存在于 FTP 服务器上。它可以从 HMC 系统访问。此文件包含详细信息,如映射磁盘或 FTP 服务器上安装数据的位置、要复制数据的内存位置。注意.ins
和initrd.img.addrsize
文件不会作为安装程序的 boot-artifacts 的一部分自动生成。您必须手动生成这些文件。将以下脚本保存到文件中,如
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
运行以下命令执行脚本:
$ python3 <file_name>.py
-
将
initrd
、kernel
、common.ins
和initrd.img.addrsize
参数文件传输到文件服务器。如需更多信息,请参阅 在 LPAR 模式中引导 Linux (IBM 文档)。 - 启动机器。
- 对集群中的所有其他机器重复这个过程。