$ oc adm release info -o jsonpath="{ .metadata.metadata}"
要在 IBM Z® 和 IBM® LinuxONE (s390x
) 上使用 RHEL KVM 创建具有多架构计算机的集群,您必须拥有现有的单架构 x86_64
集群。然后,您可以将 s390x
计算机器添加到您的 OpenShift Container Platform 集群。
在您可以将 s390x
节点添加到集群之前,必须将集群升级到使用多架构有效负载的集群。有关迁移到多架构有效负载的更多信息,请参阅 迁移到具有多架构计算机的集群。
以下过程说明了如何使用 RHEL KVM 实例创建 RHCOS 计算机器。这将允许您将 s390x
节点添加到集群并部署具有多架构计算机的集群。
要在 x86_64
上创建具有多架构计算机的 IBM Z® 或 IBM® LinuxONE (s390x
) 集群,请按照 在 IBM Z® 和 IBM® LinuxONE 上安装集群 中的说明进行操作。然后,您可以按照 在裸机、IBM Power 或 IBM Z 上创建具有多架构计算机的集群 中的说明添加 x86_64
计算机器。
在将辅助架构节点添加到集群之前,建议安装 Multiarch Tuning Operator 并部署 |
在您可以开始将不同架构的计算节点添加到集群之前,必须验证您的集群是否与多架构兼容。
您已安装 OpenShift CLI (oc
)。
登录到 OpenShift CLI (oc
)。
您可以通过运行以下命令来检查您的集群是否使用多架构有效负载
$ oc adm release info -o jsonpath="{ .metadata.metadata}"
如果您看到以下输出,则您的集群正在使用多架构有效负载
{
"release.openshift.io/architecture": "multi",
"url": "https://access.redhat.com/errata/<errata_version>"
}
然后您可以开始将多架构计算节点添加到您的集群。
如果您看到以下输出,则您的集群未使用多架构有效负载
{
"url": "https://access.redhat.com/errata/<errata_version>"
}
要迁移集群以便集群支持多架构计算机器,请按照 迁移到具有多架构计算机的集群 中的过程进行操作。 |
您可以使用 `virt-install` 为您的集群创建更多 Red Hat Enterprise Linux CoreOS (RHCOS) 计算机器。
您至少有一个在 RHEL 8.7 或更高版本上运行并具有 KVM 的 LPAR,在此过程中称为 RHEL KVM 主机。
KVM/QEMU 虚拟机监控程序已安装在 RHEL KVM 主机上。
您有一个域名服务器 (DNS),可以为节点执行主机名和反向查找。
已设置 HTTP 或 HTTPS 服务器。
禁用 UDP 聚合。
目前,IBM Z® 不支持 UDP 聚合,并且在具有x86_64
控制平面和附加s390x
计算机的多架构计算集群上不会自动停用。为确保附加的计算节点正确添加到集群中,您必须手动禁用 UDP 聚合。
创建一个名为udp-aggregation-config.yaml
的 YAML 文件,内容如下:
apiVersion: v1
kind: ConfigMap
data:
disable-udp-aggregation: "true"
metadata:
name: udp-aggregation-config
namespace: openshift-network-operator
运行以下命令创建 ConfigMap 资源:
$ oc create -f udp-aggregation-config.yaml
运行以下命令从集群中提取 Ignition 配置文件:
$ oc extract -n openshift-machine-api secret/worker-user-data-managed --keys=userData --to=- > worker.ign
将您从集群导出的worker.ign
Ignition 配置文件上传到您的 HTTP 服务器。记下此文件的 URL。
您可以验证 Ignition 文件是否在 URL 上可用。以下示例获取计算节点的 Ignition 配置文件:
$ curl -k http://<HTTP_server>/worker.ign
运行以下命令下载 RHEL 实时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.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.rootfs.location')
在启动virt-install
之前,将下载的 RHEL 实时kernel
、initramfs
和rootfs
文件移动到 HTTP 或 HTTPS 服务器。
使用 RHEL kernel
、initramfs
和 Ignition 文件;新的磁盘映像;以及调整后的参数行参数创建新的 KVM 虚拟机节点。
$ virt-install \
--connect qemu:///system \
--name <vm_name> \
--autostart \
--os-variant rhel9.4 \ (1)
--cpu host \
--vcpus <vcpus> \
--memory <memory_mb> \
--disk <vm_name>.qcow2,size=<image_size> \
--network network=<virt_network_parm> \
--location <media_location>,kernel=<rhcos_kernel>,initrd=<rhcos_initrd> \ (2)
--extra-args "rd.neednet=1" \
--extra-args "coreos.inst.install_dev=/dev/vda" \
--extra-args "coreos.inst.ignition_url=http://<http_server>/worker.ign " \ (3)
--extra-args "coreos.live.rootfs_url=http://<http_server>/rhcos-<version>-live-rootfs.<architecture>.img" \ (4)
--extra-args "ip=<ip>::<gateway>:<netmask>:<hostname>::none" \ (5)
--extra-args "nameserver=<dns>" \
--extra-args "console=ttysclp0" \
--noautoconsole \
--wait
1 | 对于os-variant ,请为 RHCOS 计算机器指定 RHEL 版本。建议使用rhel9.4 版本。要查询您的操作系统的受支持 RHEL 版本,请运行以下命令:
|
||
2 | 对于--location ,请指定 HTTP 或 HTTPS 服务器上内核/initrd 的位置。 |
||
3 | 指定worker.ign 配置文件的位置。仅支持 HTTP 和 HTTPS 协议。 |
||
4 | 指定您正在引导的kernel 和initramfs 的rootfs 工件的位置。仅支持 HTTP 和 HTTPS 协议。 |
||
5 | 可选:对于hostname ,请指定客户端机器的完全限定主机名。 |
如果您使用 HAProxy 作为负载均衡器,请更新 |
继续为您的集群创建更多计算机器。
当您将机器添加到集群时,会为每个添加的机器生成两个待处理的证书签名请求 (CSR)。您必须确认这些 CSR 已获批准,或者如有必要,自行批准它们。必须先批准客户端请求,然后才能批准服务器请求。
您已将机器添加到集群。
确认集群是否识别这些机器
$ oc get nodes
NAME STATUS ROLES AGE VERSION
master-0 Ready master 63m v1.30.3
master-1 Ready master 63m v1.30.3
master-2 Ready master 64m v1.30.3
输出列出了您创建的所有机器。
在批准一些 CSR 之前,上述输出可能不包含计算节点(也称为工作节点)。 |
查看待处理的 CSR,并确保您看到每个添加到集群的机器的客户端请求的状态为“待处理”或“已批准”。
$ oc get csr
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
...
在此示例中,两台机器正在加入集群。您可能会在列表中看到更多已批准的 CSR。
如果 CSR 未获批准,在您添加的所有机器的待处理 CSR 状态均为“待处理”后,请批准集群机器的 CSR。
由于 CSR 会自动轮换,因此请在将机器添加到集群后一小时内批准您的 CSR。如果您在一小时内未批准它们,证书将轮换,并且每个节点将存在两个以上的证书。您必须批准所有这些证书。批准客户端 CSR 后,Kubelet 会为服务证书创建第二个 CSR,这需要手动批准。然后,如果 Kubelet 使用相同的参数请求新证书,则 |
对于在未启用机器 API 的平台(例如裸机和其他用户预配的基础设施)上运行的集群,您必须实现一种自动批准 kubelet 服务证书请求 (CSR) 的方法。如果未批准请求,则 |
要单独批准它们,请对每个有效的 CSR 运行以下命令:
$ oc adm certificate approve <csr_name> (1)
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
在批准一些 CSR 之前,某些操作员可能无法使用。 |
现在您的客户端请求已获批准,您必须查看添加到集群的每台机器的服务器请求。
$ oc get csr
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
...
如果其余 CSR 未获批准,并且状态为“待处理”,请批准集群机器的 CSR。
要单独批准它们,请对每个有效的 CSR 运行以下命令:
$ oc adm certificate approve <csr_name> (1)
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
批准所有客户端和服务器 CSR 后,机器将具有“就绪”状态。通过运行以下命令来验证这一点:
$ oc get nodes
NAME STATUS ROLES AGE VERSION
master-0 Ready master 73m v1.30.3
master-1 Ready master 73m v1.30.3
master-2 Ready master 74m v1.30.3
worker-0 Ready worker 11m v1.30.3
worker-1 Ready worker 11m v1.30.3
批准服务器 CSR 后,机器可能需要几分钟才能转换为“就绪”状态。 |