$ oc adm release info -o jsonpath="{ .metadata.metadata}"
要创建在裸机上具有多架构计算机的集群(x86_64
或 aarch64
)、IBM Power®(ppc64le
)或 IBM Z®(s390x
),您必须在这些平台之一上拥有现有的单架构集群。请按照您平台的安装程序进行操作。
在裸机上安装用户预配的集群。然后,您可以将 64 位 ARM 计算机器添加到您在裸机上的 OpenShift Container Platform 集群。
在 IBM Power® 上安装集群。然后,您可以将 x86_64
计算机器添加到您在 IBM Power® 上的 OpenShift Container Platform 集群。
在 IBM Z® 和 IBM® LinuxONE 上安装集群。然后,您可以将 x86_64
计算机器添加到您在 IBM Z® 和 IBM® LinuxONE 上的 OpenShift Container Platform 集群。
裸机安装程序预配的基础架构和裸机运算符不支持在初始集群设置期间添加辅助架构节点。只有在初始集群设置之后才能手动添加辅助架构节点。 |
在您可以向集群添加其他计算节点之前,必须将集群升级到使用多架构有效负载的集群。有关迁移到多架构有效负载的更多信息,请参阅 迁移到具有多架构计算机的集群。
以下过程说明如何使用 ISO 镜像或网络 PXE 启动创建 RHCOS 计算机器。这允许您向集群添加其他节点并部署具有多架构计算机的集群。
在将辅助架构节点添加到集群之前,建议安装 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>"
}
要迁移集群以使其支持多架构计算机器,请按照迁移到具有多架构计算机的集群中的步骤操作。 |
您可以使用ISO映像创建更多Red Hat Enterprise Linux CoreOS (RHCOS)计算机器,用于您的裸机集群。
获取集群计算机器的Ignition配置文件的URL。您在安装过程中将此文件上传到了您的HTTP服务器。
您必须安装OpenShift CLI (oc
)。
通过运行以下命令提取集群中的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
您可以通过运行以下命令访问用于引导新机器的ISO映像:
RHCOS_VHD_ORIGIN_URL=$(oc -n openshift-machine-config-operator get configmap/coreos-bootimages -o jsonpath='{.data.stream}' | jq -r '.architectures.<architecture>.artifacts.metal.formats.iso.disk.location')
使用ISO文件在更多计算机器上安装RHCOS。使用安装集群之前创建机器时使用的方法。
将ISO映像刻录到磁盘并直接引导。
使用带有LOM接口的ISO重定向。
引导RHCOS ISO映像,无需指定任何选项或中断实时引导序列。等待安装程序引导到RHCOS实时环境中的shell提示符。
您可以中断RHCOS安装引导过程以添加内核参数。但是,对于此ISO过程,您必须使用以下步骤中概述的 |
运行coreos-installer
命令并指定满足您的安装要求的选项。至少,您必须指定指向节点类型Ignition配置文件的URL以及要安装到的设备。
$ sudo coreos-installer install --ignition-url=http://<HTTP_server>/<node_type>.ign <device> --ignition-hash=sha512-<digest> (1) (2)
1 | 您必须使用sudo 运行coreos-installer 命令,因为core 用户没有执行安装所需的root权限。 |
2 | 当通过HTTP URL获取Ignition配置文件时,需要--ignition-hash 选项来验证集群节点上Ignition配置文件的真实性。<digest> 是在前面步骤中获得的Ignition配置文件SHA512摘要。 |
如果您想通过使用TLS的HTTPS服务器提供Ignition配置文件,则可以在运行 |
以下示例将引导节点安装初始化到/dev/sda
设备。引导节点的Ignition配置文件是从IP地址为192.168.1.2的HTTP Web服务器获取的。
$ sudo coreos-installer install --ignition-url=http://192.168.1.2:80/installation_directory/bootstrap.ign /dev/sda --ignition-hash=sha512-a5a2d43879223273c9b60af66b44202a1d1248fc01cf156c46d4a79f552b6bad47bc8cc78ddf0116e80c59d2ea9e32ba53bc807afbca581aa059311def2c3e3b
监控机器控制台上RHCOS安装的进度。
在开始OpenShift Container Platform安装之前,请确保每个节点上的安装都成功。观察安装过程还可以帮助确定可能出现的RHCOS安装问题的原因。 |
继续为您的集群创建更多计算机器。
您可以使用PXE或iPXE引导为您的裸机集群创建更多Red Hat Enterprise Linux CoreOS (RHCOS)计算机器。
获取集群计算机器的Ignition配置文件的URL。您在安装过程中将此文件上传到了您的HTTP服务器。
获取您在集群安装过程中上传到HTTP服务器的RHCOS ISO映像、压缩金属BIOS、kernel
和initramfs
文件的URL。
您可以访问在安装过程中用于为OpenShift Container Platform集群创建机器的PXE引导基础架构。在RHCOS安装到机器上之后,机器必须从本地磁盘引导。
如果您使用UEFI,则可以访问您在OpenShift Container Platform安装期间修改的grub.conf
文件。
确认RHCOS映像的PXE或iPXE安装正确。
对于PXE
DEFAULT pxeboot TIMEOUT 20 PROMPT 0 LABEL pxeboot KERNEL http://<HTTP_server>/rhcos-<version>-live-kernel-<architecture> (1) APPEND initrd=http://<HTTP_server>/rhcos-<version>-live-initramfs.<architecture>.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/worker.ign coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img (2)
1 | 指定您上传到HTTP服务器的实时kernel 文件的位置。 |
2 | 指定您上传到HTTP服务器的RHCOS文件的位置。initrd 参数值是实时initramfs 文件的位置,coreos.inst.ignition_url 参数值是worker Ignition配置文件的位置,coreos.live.rootfs_url 参数值是实时rootfs 文件的位置。coreos.inst.ignition_url 和coreos.live.rootfs_url 参数仅支持HTTP和HTTPS。 |
此配置不会在具有图形控制台的机器上启用串行控制台访问。要配置不同的控制台,请向 |
对于iPXE (x86_64
+ aarch64
)
kernel http://<HTTP_server>/rhcos-<version>-live-kernel-<architecture> initrd=main coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/worker.ign (1) (2) initrd --name main http://<HTTP_server>/rhcos-<version>-live-initramfs.<architecture>.img (3) boot
1 | 指定您上传到HTTP服务器的RHCOS文件的位置。kernel 参数值是kernel 文件的位置,initrd=main 参数对于在UEFI系统上引导是必需的,coreos.live.rootfs_url 参数值是rootfs 文件的位置,coreos.inst.ignition_url 参数值是worker Ignition配置文件的位置。 |
2 | 如果您使用多个NIC,请在ip 选项中指定单个接口。例如,要在名为eno1 的NIC上使用DHCP,请设置ip=eno1:dhcp 。 |
3 | 指定您上传到HTTP服务器的initramfs 文件的位置。 |
此配置不会在具有图形控制台的机器上启用串行控制台访问。要配置不同的控制台,请向 |
要在 |
对于aarch64
上的PXE(使用UEFI和GRUB作为第二阶段)
menuentry 'Install CoreOS' { linux rhcos-<version>-live-kernel-<architecture> coreos.live.rootfs_url=http://<HTTP_server>/rhcos-<version>-live-rootfs.<architecture>.img coreos.inst.install_dev=/dev/sda coreos.inst.ignition_url=http://<HTTP_server>/worker.ign (1) (2) initrd rhcos-<version>-live-initramfs.<architecture>.img (3) }
1 | 指定您上传到HTTP/TFTP服务器的RHCOS文件的位置。kernel 参数值是您TFTP服务器上kernel 文件的位置。coreos.live.rootfs_url 参数值是rootfs 文件的位置,coreos.inst.ignition_url 参数值是您HTTP服务器上worker Ignition配置文件的位置。 |
2 | 如果您使用多个NIC,请在ip 选项中指定单个接口。例如,要在名为eno1 的NIC上使用DHCP,请设置ip=eno1:dhcp 。 |
3 | 指定您上传到TFTP服务器的initramfs 文件的位置。 |
使用PXE或iPXE基础架构为您的集群创建所需的计算机器。
向集群添加机器时,会为每台添加的机器生成两个待处理的证书签名请求 (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,并确保您看到为添加到集群的每台机器显示 `Pending` 或 `Approved` 状态的客户端请求。
$ 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 都处于 `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> (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 未获批准且处于 `Pending` 状态,请批准集群机器的 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 后,机器将具有 `Ready` 状态。通过运行以下命令来验证这一点:
$ 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 后,机器可能需要几分钟才能过渡到 `Ready` 状态。 |