$ oc get nodes
您可以手动将更多计算机器添加到 VMware vSphere 上的 OpenShift Container Platform 集群。
您也可以使用计算机器集来自动创建集群的其他 VMware vSphere 计算机器。 |
您拥有用于创建集群的安装介质和 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像。如果您没有这些文件,则必须按照安装过程中的说明获取它们。
如果您无法访问用于创建集群的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像,则可以使用更新版本的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像向 OpenShift Container Platform 集群添加更多计算机器。有关说明,请参阅升级到 OpenShift 4.6+ 后,向 UPI 集群添加新节点失败。 |
您可以向 VMware vSphere 上的用户预配的 OpenShift Container Platform 集群添加更多计算机器。
在您的 vSphere 模板在 OpenShift Container Platform 集群中部署后,您可以在该集群中为机器部署虚拟机 (VM)。
获取计算机器的 base64 编码的 Ignition 文件。
您可以访问为集群创建的 vSphere 模板。
右键单击模板的名称,然后单击克隆→克隆到虚拟机。
在选择名称和文件夹选项卡上,指定虚拟机的名称。您可能需要在名称中包含机器类型,例如compute-1
。
确保整个 vSphere 安装中的所有虚拟机名称都是唯一的。 |
在选择名称和文件夹选项卡上,选择为集群创建的文件夹的名称。
在选择计算资源选项卡上,选择数据中心中主机的名称。
在选择存储选项卡上,选择配置和磁盘文件的存储。
在选择克隆选项选项卡上,选择自定义此虚拟机的硬件。
在自定义硬件选项卡上,单击高级参数。
通过在属性和值字段中指定数据,添加以下配置参数名称和值。确保为创建的每个参数选择添加按钮。
guestinfo.ignition.config.data
:粘贴此机器类型的 base64 编码的计算 Ignition 配置文件的內容。
guestinfo.ignition.config.data.encoding
:指定base64
。
disk.EnableUUID
:指定TRUE
。
在自定义硬件选项卡的虚拟硬件面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储量满足机器类型的最低要求。如果存在许多网络,请选择添加新设备>网络适配器,然后在新建网络菜单项提供的字段中输入您的网络信息。
完成其余配置步骤。单击完成按钮后,您就完成了克隆操作。
在虚拟机选项卡中,右键单击您的虚拟机,然后选择电源→打开电源。
继续为您的集群创建更多计算机器。
将机器添加到集群时,会为添加的每个机器生成两个待处理的证书签名请求 (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 请求具有相同参数的新证书,则 |
对于在非机器 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
某些 Operators 只有在批准某些 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 后,机器可能需要几分钟才能过渡到 |