7.4. 在裸机中添加计算机器
您可以在裸机上的 OpenShift Container Platform 集群中添加更多计算机器。
7.4.1. 先决条件
- 您在裸机上安装了集群。
- 您有用来创建集群的安装介质和 Red Hat Enterprise Linux CoreOS(RHCOS)镜像。如果您没有这些文件,必须按照 安装过程的说明获得这些文件。
7.4.2. 创建 Red Hat Enterprise Linux CoreOS (RHCOS) 机器
在将更多计算机器添加到在裸机基础架构上安装的集群之前,必须先创建 RHCOS 机器供其使用。按照相应的步骤,使用 ISO 镜像或网络 PXE 启动来创建机器。
7.4.2.1. 使用 ISO 镜像创建更多 Red Hat Enterprise Linux CoreOS(RHCOS)机器
您可以使用 ISO 镜像为裸机集群创建更多计算机器,以创建机器。
先决条件
- 获取集群计算机器的 Ignition 配置文件的 URL。在安装过程中将该文件上传到 HTTP 服务器。
- 获取您在集群安装过程中上传到 HTTP 服务器的 BIOS 或 UEFI RHCOS 镜像文件的 URL。
流程
使用 ISO 文件在更多计算机器上安装 RHCOS。在安装集群前,使用创建机器时使用的相同方法:
- 将 ISO 镜像刻录到磁盘并直接启动。
- 在 LOM 接口中使用 ISO 重定向。
-
实例启动后,按
TAB
或E
键编辑内核命令行。 将参数添加到内核命令行:
coreos.inst=yes coreos.inst.install_dev=sda 1 coreos.inst.image_url=<bare_metal_image_URL> 2 coreos.inst.ignition_url=http://example.com/worker.ign 3
-
按
Enter
键完成安装。安装 RHCOS 后,系统会重启。系统重启后,它会应用您指定的 Ignition 配置文件。 - 继续为集群创建更多计算机器。
7.4.2.2. 通过 PXE 或 iPXE 启动来创建 Red Hat Enterprise Linux CoreOS (RHCOS) 机器
您可以使用 PXE 或 iPXE 引导为裸机集群创建更多计算机器。
先决条件
- 获取集群计算机器的 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>-installer-kernel-<architecture> 1 APPEND ip=dhcp rd.neednet=1 initrd=http://<HTTP_server>/rhcos-<version>-installer-initramfs.<architecture>.img coreos.inst=yes coreos.inst.install_dev=sda coreos.inst.image_url=http://<HTTP_server>/rhcos-<version>-metal.<architecture>.raw.gz coreos.inst.ignition_url=http://<HTTP_server>/worker.ign 2 3
注意这个配置不会在使用图形控制台的机器上启用串口控制台访问。要配置不同的控制台,请在
APPEND
行中添加一个或多个console=
参数。例如,添加console=tty0 console=ttyS0
将第一个 PC 串口设置为主控制台,图形控制台作为二级控制台。如需更多信息,请参阅如何在 Red Hat Enterprise Linux 中设置串行终端和(或)控制台?对于 iPXE:
kernel http://<HTTP_server>/rhcos-<version>-installer-kernel-<architecture> ip=dhcp rd.neednet=1 initrd=http://<HTTP_server>/rhcos-<version>-installer-initramfs.<architecture>.img coreos.inst=yes coreos.inst.install_dev=sda coreos.inst.image_url=http://<HTTP_server>/rhcos-<version>-metal.<arhcitectutre>.raw.gz coreos.inst.ignition_url=http://<HTTP_server>/worker.ign 1 2 initrd http://<HTTP_server>/rhcos-<version>-installer-initramfs.<architecture>.img 3 boot
注意这个配置不会在使用图形控制台的机器上启用串口控制台访问。要配置不同的控制台,请在
kerne
行中添加一个或多个console=
参数。例如,添加console=tty0 console=ttyS0
将第一个 PC 串口设置为主控制台,图形控制台作为二级控制台。如需更多信息,请参阅如何在 Red Hat Enterprise Linux 中设置串行终端和(或)控制台?
- 使用 PXE 或 iPXE 基础架构为集群创建所需的计算机器。
7.4.3. 批准机器的证书签名请求
将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。客户端请求必须首先被批准,然后是服务器请求。
先决条件
- 您已将机器添加到集群中。
流程
确认集群可以识别这些机器:
# oc get nodes NAME STATUS ROLES AGE VERSION master-01.example.com Ready master 40d v1.17.1 master-02.example.com Ready master 40d v1.17.1 master-03.example.com Ready master 40d v1.17.1 worker-01.example.com Ready worker 40d v1.17.1 worker-02.example.com Ready worker 40d v1.17.1
输出将列出您创建的所有机器。
检查待处理的 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 后,集群的
kube-controller-manager
会自动批准后续的节点客户端 CSR。您必须实施一个方法来自动批准 kubelet 提供的证书请求。若要单独批准,请对每个有效的 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
现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:
$ 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.20.0 master-1 Ready master 73m v1.20.0 master-2 Ready master 74m v1.20.0 worker-0 Ready worker 11m v1.20.0 worker-1 Ready worker 11m v1.20.0
注意批准服务器 CSR 后可能需要几分钟时间让机器转换为
Ready
状态。
其他信息
- 如需有关 CSR 的更多信息,请参阅证书签名请求。