4.6. 在带有 z/VM 的 IBM Z 和 IBM LinuxONE 上使用多架构计算机器创建集群
				要使用 IBM® Z 和 IBM® LinuxONE (s390x)上的多架构计算机器创建集群,您必须使用现有的单架构 x86_64 集群。然后,您可以在 OpenShift Container Platform 集群中添加 s390x 计算机器。
			
				在为集群添加 s390x 节点前,您必须将集群升级到使用多架构有效负载的节点。有关迁移到多架构有效负载的更多信息,请参阅迁移到具有多架构计算机器的集群。
			
				以下流程描述了如何使用 z/VM 实例创建 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.6.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.6.2. 使用 z/VM 在 IBM Z 上创建 RHCOS 机器
您可以使用 z/VM 创建在 IBM Z® 上运行的更多 Red Hat Enterprise Linux CoreOS (RHCOS)计算机器,并将它们附加到现有集群。
先决条件
- 您有一个域名服务器(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 
- 
							将下载的 RHEL live kernel、initramfs和rootfs文件移到可从您要添加的 RHCOS 客户机访问的 HTTP 或 HTTPS 服务器中。
- 为客户机创建参数文件。以下参数特定于虚拟机: - 可选: 要指定一个静态 IP 地址,请添加带有以下条目的 - ip=参数,每个条目用冒号隔开:- 计算机的 IP 地址。
- 个空字符串。
- 网关
- 子网掩码.
- 
											hostname.domainname格式的机器主机和域名。如果没有这个值,RHCOS 通过反向 DNS 查找获取主机名。
- 网络接口名称。如果省略这个值,RHCOS 会将 IP 配置应用到所有可用的接口。
- 
											值 none。
 
- 
									对于 coreos.inst.ignition_url=,请指定worker.ign文件的 URL。仅支持 HTTP 和 HTTPS 协议。
- 
									对于 coreos.live.rootfs_url=,请为您引导的kernel和initramfs指定匹配的 rootfs 构件。仅支持 HTTP 和 HTTPS 协议。
- 对于在 DASD 类型磁盘中安装,请完成以下任务: - 
											对于 coreos.inst.install_dev=,请指定/dev/dasda。
- 
											Userd .dasd=指定安装 RHCOS 的 DASD。
- 如果需要,您可以对参数进行进一步的调整。 - 以下是一个示例参数文件 - additional-worker-dasd.parm:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 将参数文件中的所有选项写为一行,并确保您没有换行字符。 
 
- 
											对于 
- 对于在 FCP 类型磁盘中安装,请完成以下任务: - User - d.zfcp=<adapter>,<wwpn>,<lun>以指定要安装 RHCOS 的 FCP 磁盘。对于多路径,为每个额外路径重复此步骤。注意- 当使用多个路径安装时,您必须在安装后直接启用多路径,而不是在以后启用多路径,因为这可能导致问题。 
- 将安装设备设置为: - coreos.inst.install_dev=/dev/sda。注意- 如果使用 NPIV 配置额外的 LUN,FCP 需要 - zfcp.allow_lun_scan=0。如果必须启用- zfcp.allow_lun_scan=1,因为您使用 CSI 驱动程序,则必须配置 NPIV,以便每个节点无法访问另一个节点的引导分区。
- 如果需要,您可以对参数进行进一步的调整。 重要- 需要额外的安装后步骤才能完全启用多路径。如需更多信息,请参阅机器配置中的"使用 RHCOS 上内核参数启用多路径"。 - 以下是使用多路径的 worker 节点的 - additional-worker-fcp.parm示例参数文件:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 将参数文件中的所有选项写为一行,并确保您没有换行字符。 
 
 
- 
							使用 FTP 将 initramfs、kernel、参数文件和 RHCOS 镜像传送到 z/VM 中。有关如何使用 FTP 传输文件并从虚拟读取器引导的详情,请参考在 IBM Z® 上引导安装,以便在 z/VM 中安装 RHEL。
- 将文件 punch 到 z/VM 虚拟机的虚拟读取器。 - 请参阅 IBM® 文档中的 PUNCH。 提示- 您可以使用 CP PUNCH 命令,或者,如果使用 Linux,则使用 vmur 命令在两个 z/VM 虚拟机之间传输文件。 
- 在 bootstrap 机器上登录到 CMS。
- 运行以下命令,从 reader IPL bootstrap 机器: - ipl c - $ ipl c- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 请参阅 IBM® 文档中的 IPL。 
4.6.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 的更多信息,请参阅 证书签名请求。