第 6 章 安装后的节点任务
安装 OpenShift Container Platform 后,您可以通过某些节点任务进一步根据要求扩展和自定义集群。
6.1. 在 OpenShift Container Platform 集群中添加 RHEL 计算机器
理解并使用 RHEL 计算节点。
6.1.1. 关于在集群中添加 RHEL 计算节点
					在 OpenShift Container Platform 4.16 中,如果 x86_64 架构中使用用户置备或安装程序置备的基础架构安装,您可以选择将 Red Hat Enterprise Linux (RHEL) 机器用作集群中的计算机器。您必须使用 Red Hat Enterprise Linux CoreOS (RHCOS) 机器作为集群中的控制平面机器。
				
如果您在集群中使用 RHEL 计算机器,则需要自己负责所有操作系统生命周期的管理和维护任务。您必须执行系统更新、应用补丁并完成所有其他必要的任务。
对于安装程序置备的基础架构集群,您必须手动添加 RHEL 计算机器,因为安装程序置备的基础架构集群中的自动扩展会默认添加 Red Hat Enterprise Linux CoreOS (RHCOS) 计算机器。
- 由于从集群中的机器上删除 OpenShift Container Platform 需要破坏操作系统,因此您必须对添加到集群中的所有 RHEL 机器使用专用的硬件。
- 添加到 OpenShift Container Platform 集群的所有 RHEL 机器上都禁用内存交换功能。您无法在这些机器上启用交换内存。
- 基于软件包的 RHEL 安装已弃用。RHEL 将在以后的发行版本中被删除。RHCOS 镜像分层将替换此功能,并支持在 compute 节点的基本操作系统上安装额外的软件包。
6.1.2. RHEL 计算节点的系统要求
OpenShift Container Platform 环境中的 Red Hat Enterprise Linux(RHEL)计算机器主机必须满足以下最低硬件规格和系统级别要求:
- 您的红帽帐户必须具有有效的 OpenShift Container Platform 订阅。如果没有,请与您的销售代表联系以了解更多信息。
- 生产环境必须提供能支持您的预期工作负载的计算机器。作为集群管理员,您必须计算预期的工作负载,再加上大约 10% 的开销。对于生产环境,请分配足够的资源,以防止节点主机故障影响您的最大容量。
- 所有系统都必须满足以下硬件要求: - 物理或虚拟系统,或在公有或私有 IaaS 上运行的实例。
- 基础操作系统:在 minimal 安装选项中使用 RHEL 8.8 或更高版本。 重要- 不支持将 RHEL 7 计算机器添加到 OpenShift Container Platform 集群。 - 如果您有在以前的 OpenShift Container Platform 版本中支持的 RHEL 7 计算机器,则无法将其升级到 RHEL 8。您必须部署新的 RHEL 8 主机,并且应该删除旧的 RHEL 7 主机。如需更多信息,请参阅"删除节点"部分。 - 有关 OpenShift Container Platform 中已弃用或删除的主要功能的最新列表,请参阅 OpenShift Container Platform 发行注记中已弃用和删除的功能部分。 
- 如果以 FIPS 模式部署 OpenShift Container Platform,则需要在 RHEL 机器上启用 FIPS,然后才能引导它。请参阅 RHEL 8 文档中的启用 FIPS 模式安装 RHEL 8 系统。 重要- 要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅将 RHEL 切换到 FIPS 模式。 - 当以 FIPS 模式运行 Red Hat Enterprise Linux (RHEL) 或 Red Hat Enterprise Linux CoreOS (RHCOS)时,OpenShift Container Platform 核心组件使用 RHEL 加密库,在 x86_64、ppc64le 和 s390x 架构上提交到 NIST FIPS 140-2/140-3 Validation。 
- NetworkManager 1.0 或更高版本。
- 1 个 vCPU。
- 最小 8 GB RAM。
- 
									最小15 GB 硬盘空间,用于包含 /var/的文件系统。
- 
									最小1 GB 硬盘空间,用于包含 /usr/local/bin/的文件系统。
- 最小 1 GB 硬盘空间,用于包含其临时目录的文件系统。临时系统目录根据 Python 标准库中 tempfile 模块中定义的规则确定。
 
- 
							每个系统都必须满足您的系统提供商的任何其他要求。例如,如果在 VMware vSphere 上安装了集群,必须根据其存储准则配置磁盘,而且必须设置 disk.enableUUID=TRUE属性。
- 每个系统都必须能够使用 DNS 可解析的主机名访问集群的 API 端点。任何现有的网络安全访问控制都必须允许系统访问集群的 API 服务端点。
- 对于在 Microsoft Azure 上安装的集群: - 
									确保系统包含 Standard_D8s_v3虚拟机的硬件要求。
- 启用加速网络。加速网络使用单一根 I/O 虚拟化(SR-IOV)为 Microsoft Azure 虚拟机提供更直接的路径到交换机。
 
- 
									确保系统包含 
6.1.2.1. 证书签名请求管理
						在使用您置备的基础架构时,集群只能有限地访问自动机器管理,因此您必须提供一种在安装后批准集群证书签名请求 (CSR) 的机制。kube-controller-manager 只能批准 kubelet 客户端 CSR。machine-approver 无法保证使用 kubelet 凭证请求的提供证书的有效性,因为它不能确认是正确的机器发出了该请求。您必须决定并实施一种方法,以验证 kubelet 提供证书请求的有效性并进行批准。
					
6.1.3. 准备机器以运行 Playbook
在将使用 Red Hat Enterprise Linux(RHEL)作为操作系统的计算机器添加到 OpenShift Container Platform 4.16 集群之前,必须准备一个 RHEL 8 机器,以运行向集群添加新节点的 Ansible playbook。这台机器不是集群的一部分,但必须能够访问集群。
先决条件
- 
							在运行 playbook 的机器上安装 OpenShift CLI(oc)。
- 
							以具有 cluster-admin权限的用户身份登录。
流程
- 
							确保用于安装集群的 kubeconfig文件和用于安装集群的安装程序位于 RHEL 8 机器中。若要实现这一目标,一种方法是使用安装集群时所用的同一台机器。
- 配置机器,以访问您计划用作计算机器的所有 RHEL 主机。您可以使用公司允许的任何方法,包括使用 SSH 代理或 VPN 的堡垒主机。
- 在运行 playbook 的机器上配置一个用户,该用户对所有 RHEL 主机具有 SSH 访问权限。 重要- 如果使用基于 SSH 密钥的身份验证,您必须使用 SSH 代理来管理密钥。 
- 如果还没有这样做,请使用 RHSM 注册机器,并为它附加一个带有 - OpenShift订阅的池:- 使用 RHSM 注册机器: - subscription-manager register --username=<user_name> --password=<password> - # subscription-manager register --username=<user_name> --password=<password>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 从 RHSM 获取最新的订阅数据: - subscription-manager refresh - # subscription-manager refresh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 列出可用的订阅: - subscription-manager list --available --matches '*OpenShift*' - # subscription-manager list --available --matches '*OpenShift*'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在上一命令的输出中,找到 OpenShift Container Platform 订阅的池 ID 并附加该池: - subscription-manager attach --pool=<pool_id> - # subscription-manager attach --pool=<pool_id>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
 
- 启用 OpenShift Container Platform 4.16 所需的仓库: - subscription-manager repos \ --enable="rhel-8-for-x86_64-baseos-rpms" \ --enable="rhel-8-for-x86_64-appstream-rpms" \ --enable="rhocp-4.16-for-rhel-8-x86_64-rpms"- # subscription-manager repos \ --enable="rhel-8-for-x86_64-baseos-rpms" \ --enable="rhel-8-for-x86_64-appstream-rpms" \ --enable="rhocp-4.16-for-rhel-8-x86_64-rpms"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 安装所需的软件包,包括 - openshift-ansible:- yum install openshift-ansible openshift-clients jq - # yum install openshift-ansible openshift-clients jq- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - openshift-ansible软件包提供了安装实用程序,并且会拉取将 RHEL 计算节点添加到集群所需要的其他软件包,如 Ansible、playbook 和相关的配置文件。- openshift-clients提供- ocCLI,- jq软件包则可改善命令行中 JSON 输出的显示。
6.1.4. 准备 RHEL 计算节点
在将 Red Hat Enterprise Linux (RHEL) 机器添加到 OpenShift Container Platform 集群之前,您必须将每台主机注册到 Red Hat Subscription Manager (RHSM),为其附加有效的 OpenShift Container Platform 订阅,并且启用所需的存储库。
- 在每一主机上进行 RHSM 注册: - subscription-manager register --username=<user_name> --password=<password> - # subscription-manager register --username=<user_name> --password=<password>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 从 RHSM 获取最新的订阅数据: - subscription-manager refresh - # subscription-manager refresh- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 列出可用的订阅: - subscription-manager list --available --matches '*OpenShift*' - # subscription-manager list --available --matches '*OpenShift*'- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 在上一命令的输出中,找到 OpenShift Container Platform 订阅的池 ID 并附加该池: - subscription-manager attach --pool=<pool_id> - # subscription-manager attach --pool=<pool_id>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 禁用所有 yum 存储库: - 禁用所有已启用的 RHSM 存储库: - subscription-manager repos --disable="*" - # subscription-manager repos --disable="*"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 列出剩余的 yum 存储库,并记录它们在 - repo id下的名称(若有):- yum repolist - # yum repolist- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 使用 - yum-config-manager禁用剩余的 yum 存储库:- yum-config-manager --disable <repo_id> - # yum-config-manager --disable <repo_id>- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 或者,禁用所有存储库: - yum-config-manager --disable \* - # yum-config-manager --disable \*- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 请注意,有大量可用存储库时可能需要花费几分钟 
 
- 仅启用 OpenShift Container Platform 4.16 需要的仓库: - subscription-manager repos \ --enable="rhel-8-for-x86_64-baseos-rpms" \ --enable="rhel-8-for-x86_64-appstream-rpms" \ --enable="rhocp-4.16-for-rhel-8-x86_64-rpms" \ --enable="fast-datapath-for-rhel-8-x86_64-rpms"- # subscription-manager repos \ --enable="rhel-8-for-x86_64-baseos-rpms" \ --enable="rhel-8-for-x86_64-appstream-rpms" \ --enable="rhocp-4.16-for-rhel-8-x86_64-rpms" \ --enable="fast-datapath-for-rhel-8-x86_64-rpms"- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 停止并禁用主机上的防火墙: - systemctl disable --now firewalld.service - # systemctl disable --now firewalld.service- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 注意- 请不要在以后启用防火墙。如果这样做,则无法访问 worker 上的 OpenShift Container Platform 日志。 
6.1.5. 在集群中添加 RHEL 计算机器
您可以将使用 Red Hat Enterprise Linux 作为操作系统的计算机器添加到 OpenShift Container Platform 4.16 集群中。
先决条件
- 运行 playbook 的机器上已安装必需的软件包并且执行了必要的配置。
- RHEL 主机已做好安装准备。
流程
在为运行 playbook 而准备的机器上执行以下步骤:
- 创建一个名为 - /<path>/inventory/hosts的 Ansible 清单文件,以定义您的计算机器主机和必要的变量:- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 进入到 Ansible playbook 目录: - cd /usr/share/ansible/openshift-ansible - $ cd /usr/share/ansible/openshift-ansible- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 运行 playbook: - ansible-playbook -i /<path>/inventory/hosts playbooks/scaleup.yml - $ ansible-playbook -i /<path>/inventory/hosts playbooks/scaleup.yml- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 对于<path>,指定您创建的Ansible库存文件的路径。
 
6.1.6. Ansible hosts 文件的必要参数
在将 Red Hat Enterprise Linux (RHEL) 计算机器添加到集群之前,必须在 Ansible hosts 文件中定义以下参数。
| 参数 | 描述 | 值 | 
|---|---|---|
| 
									 | 能够以免密码方式进行 SSH 身份验证的 SSH 用户。如果使用基于 SSH 密钥的身份验证,则必须使用 SSH 代理来管理密钥。 | 
									系统上的用户名。默认值为  | 
| 
									 | 
									如果  | 
									 | 
| 
									 | 
									指定包含集群的  | 配置文件的路径和名称。 | 
6.1.7. 可选:从集群中删除 RHCOS 计算机器
将 Red Hat Enterprise Linux(RHEL)计算机器添加到集群后,您可以选择性地删除 Red Hat Enterprise Linux CoreOS(RHCOS)计算机器来释放资源。
先决条件
- 您已将 RHEL 计算机器添加到集群中。
流程
- 查看机器列表并记录 RHCOS 计算机器的节点名称: - oc get nodes -o wide - $ oc get nodes -o wide- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 对于每一台 RHCOS 计算机器,删除其节点: - 通过运行 - oc adm cordon命令,将节点标记为不可调度:- oc adm cordon <node_name> - $ oc adm cordon <node_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定其中一台 RHCOS 计算机器的节点名称。
 
- 清空节点中的所有 Pod: - oc adm drain <node_name> --force --delete-emptydir-data --ignore-daemonsets - $ oc adm drain <node_name> --force --delete-emptydir-data --ignore-daemonsets- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定您隔离的 RHCOS 计算机器的节点名称。
 
- 删除节点: - oc delete nodes <node_name> - $ oc delete nodes <node_name>- 1 - Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 1
- 指定您清空的 RHCOS 计算机器的节点名称。
 
 
- 查看计算机器的列表,以确保仅保留 RHEL 节点: - oc get nodes -o wide - $ oc get nodes -o wide- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow 
- 从集群的计算机器的负载均衡器中删除 RHCOS 机器。您可以删除虚拟机或重新制作 RHCOS 计算机器物理硬件的镜像。