4.8. 使用 RHEL KVM 在 IBM Z 和 IBM LinuxONE 上使用多架构计算机器创建集群
				要使用 RHEL KVM 在 IBM Z® 和 IBM® LinuxONE (s390x) 上使用多架构计算机器创建集群,您必须有一个现有的单架构 x86_64 集群。然后,您可以在 OpenShift Container Platform 集群中添加 s390x 计算机器。
			
				在为集群添加 s390x 节点前,您必须将集群升级到使用多架构有效负载的节点。有关迁移到多架构有效负载的更多信息,请参阅迁移到具有多架构计算机器的集群。
			
				以下流程描述了如何使用 RHEL KVM 实例创建 RHCOS 计算机器。这将允许您在集群中添加 s390x 节点,并使用多架构计算机器部署集群。
			
				要使用 x86_64 上的多架构计算机器创建 IBM Z® 或 IBM® LinuxONE (s390x) 集群,请按照在 IBM Z® 和 IBM® LinuxONE 上安装集群 的说明进行操作。然后,您可以添加 x86_64 计算机器 ,如在裸机、IBM Power 或 IBM Z 上创建带有多架构计算机器的集群中所述。
			
					在集群中添加二级架构节点前,建议安装 Multiarch Tuning Operator,并部署 ClusterPodPlacementConfig 对象。如需更多信息,请参阅使用 Multiarch Tuning Operator 在多架构集群上管理工作负载。
				
4.8.1. 验证集群兼容性
在开始在集群中添加不同架构的计算节点前,您必须验证集群是否兼容多架构。
先决条件
- 
							已安装 OpenShift CLI(oc)。
流程
- 
							登录 OpenShift CLI (oc)。
- 您可以运行以下命令来检查集群是否使用构架有效负载: - oc adm release info -o jsonpath="{ .metadata.metadata}"- $ oc adm release info -o jsonpath="{ .metadata.metadata}"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
验证
- 如果您看到以下输出,代表集群使用多架构有效负载: - { "release.openshift.io/architecture": "multi", "url": "https://access.redhat.com/errata/<errata_version>" }- { "release.openshift.io/architecture": "multi", "url": "https://access.redhat.com/errata/<errata_version>" }- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 然后,您可以开始在集群中添加多架构计算节点。 
- 如果您看到以下输出,代表集群没有使用多架构有效负载: - { "url": "https://access.redhat.com/errata/<errata_version>" }- { "url": "https://access.redhat.com/errata/<errata_version>" }- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 重要- 要迁移集群以便集群支持多架构计算机器,请按照使用多架构计算机器迁移到集群的步骤进行操作。 
4.8.2. 使用 virt-install 创建 RHCOS 机器
					您可以使用 virt-install 为集群创建更多 Red Hat Enterprise Linux CoreOS (RHCOS)计算机器。
				
先决条件
- 您至少有一个 LPAR 在 KVM 的 RHEL 8.7 或更高版本中运行,在此过程中称为 RHEL KVM 主机。
- KVM/QEMU 管理程序安装在 RHEL KVM 主机上。
- 您有一个域名服务器(DNS),它可以对节点执行主机名和反向查找。
- 设置了 HTTP 或 HTTPS 服务器。
流程
- 运行以下命令,从集群中删除 Ignition 配置文件: - oc extract -n openshift-machine-api secret/worker-user-data-managed --keys=userData --to=- > worker.ign - $ oc extract -n openshift-machine-api secret/worker-user-data-managed --keys=userData --to=- > worker.ign- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							将您从集群导出的 worker.ignIgnition 配置文件上传到 HTTP 服务器。注意此文件的 URL。
- 您可以验证 Ignition 文件是否在 URL 上可用。以下示例获取计算节点的 Ignition 配置文件: - curl -k http://<HTTP_server>/worker.ign - $ curl -k http://<HTTP_server>/worker.ign- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行以下命令下载 RHEL live - kernel、- initramfs和- rootfs文件:- curl -LO $(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' \ | jq -r '.architectures.s390x.artifacts.metal.formats.pxe.kernel.location')- $ curl -LO $(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' \ | jq -r '.architectures.s390x.artifacts.metal.formats.pxe.kernel.location')- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - curl -LO $(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' \ | jq -r '.architectures.s390x.artifacts.metal.formats.pxe.initramfs.location')- $ curl -LO $(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' \ | jq -r '.architectures.s390x.artifacts.metal.formats.pxe.initramfs.location')- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - curl -LO $(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' \ | jq -r '.architectures.s390x.artifacts.metal.formats.pxe.rootfs.location')- $ curl -LO $(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' \ | jq -r '.architectures.s390x.artifacts.metal.formats.pxe.rootfs.location')- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 
							在启动 virt-install前,将下载的 RHEL livekernel、initramfs和rootfs文件移到 HTTP 或 HTTPS 服务器中。
- 使用 RHEL - kernel、- initramfs和 Ignition 文件创建新的 KVM 客户机节点;新磁盘镜像,并调整了 parm 行参数。- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 对于os-variant,为 RHCOS 计算机器指定 RHEL 版本。rhel9.4是推荐的版本。要查询支持的操作系统的 RHEL 版本,请运行以下命令:osinfo-query os -f short-id $ osinfo-query os -f short-idCopy to Clipboard Copied! Toggle word wrap Toggle overflow 注意os-variant是区分大小写的。
- 2
- 对于--location,指定 kernel/initrd 在 HTTP 或 HTTPS 服务器上的位置。
- 3
- 指定worker.ign配置文件的位置。仅支持 HTTP 和 HTTPS 协议。
- 4
- 指定您要引导的kernel和initramfs的rootfs工件位置。仅支持 HTTP 和 HTTPS 协议
- 5
- 可选: 对于hostname,指定客户端机器的完全限定主机名。
 注意- 如果您使用 HAProxy 作为负载均衡器,在 - /etc/haproxy/haproxy.cfg配置文件中为- ingress-router-443和- ingress-router-80更新 HAProxy 规则。
- 继续为集群创建更多计算机器。
4.8.3. 批准机器的证书签名请求
当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。
先决条件
- 您已将机器添加到集群中。
流程
- 确认集群可以识别这些机器: - oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.29.4 master-1 Ready master 63m v1.29.4 master-2 Ready master 64m v1.29.4 - NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.29.4 master-1 Ready master 63m v1.29.4 master-2 Ready master 64m v1.29.4- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出中列出了您创建的所有机器。 注意- 在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。 
- 检查待处理的 CSR,并确保添加到集群中的每台机器都有 - Pending或- Approved状态的客户端请求:- oc get csr - $ oc get csr- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME AGE REQUESTOR CONDITION csr-8b2br 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-8vnps 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending ... - NAME AGE REQUESTOR CONDITION csr-8b2br 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-8vnps 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 在本例中,两台机器加入集群。您可能会在列表中看到更多已批准的 CSR。 
- 如果 CSR 没有获得批准,在您添加的机器的所有待处理 CSR 都处于 - Pending 状态后,请批准集群机器的 CSR:注意- 由于 CSR 会自动轮转,因此请在将机器添加到集群后一小时内批准您的 CSR。如果没有在一小时内批准它们,证书将会轮转,每个节点会存在多个证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 为服务证书创建一个二级 CSR,这需要手动批准。然后,如果 Kubelet 请求具有相同参数的新证书,则后续提供证书续订请求由 - machine-approver自动批准。注意- 对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则 - oc exec、oc- rsh和- oc logs命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system:- node或- system:admin组中的- node-bootstrapper服务帐户提交,并确认节点的身份。- 要单独批准,请对每个有效的 CSR 运行以下命令: - oc adm certificate approve <csr_name> - $ oc adm certificate approve <csr_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <csr_name>是当前 CSR 列表中 CSR 的名称。
 
- 要批准所有待处理的 CSR,请运行以下命令: - oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve- $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs --no-run-if-empty oc adm certificate approve- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 在有些 CSR 被批准前,一些 Operator 可能无法使用。 
 
- 现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求: - oc get csr - $ oc get csr- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME AGE REQUESTOR CONDITION csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal Pending ... - NAME AGE REQUESTOR CONDITION csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal Pending ...- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 如果剩余的 CSR 没有被批准,且处于 - Pending状态,请批准集群机器的 CSR:- 要单独批准,请对每个有效的 CSR 运行以下命令: - oc adm certificate approve <csr_name> - $ oc adm certificate approve <csr_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- <csr_name>是当前 CSR 列表中 CSR 的名称。
 
- 要批准所有待处理的 CSR,请运行以下命令: - oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve- $ oc get csr -o go-template='{{range .items}}{{if not .status}}{{.metadata.name}}{{"\n"}}{{end}}{{end}}' | xargs oc adm certificate approve- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 批准所有客户端和服务器 CSR 后,机器将 - 处于 Ready 状态。运行以下命令验证:- oc get nodes - $ oc get nodes- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 批准服务器 CSR 后可能需要几分钟时间让机器过渡到 - Ready 状态。
其他信息
- 如需有关 CSR 的更多信息,请参阅 证书签名请求。