第 7 章 用户置备的基础架构
7.1. 在 OpenShift Container Platform 集群中添加 RHEL 计算机器
在 OpenShift Container Platform 中,您可以将 Red Hat Enterprise Linux (RHEL) 计算或 worker 添加到用户置备的基础架构集群中。计算机器上只能使用 RHEL 作为操作系统。
7.1.1. 关于在集群中添加 RHEL 计算节点
在 OpenShift Container Platform 4.3 中,如果使用用户置备的基础架构安装,您可以选择将 Red Hat Enterprise Linux (RHEL) 机器用作集群中的计算机器(也称为 worker)。集群中的 control plane 或主控机器(master)必须使用 Red Hat Enterprise Linux CoreOS (RHCOS)。
与所有使用用户置备的基础架构的安装一样,如果选择在集群中使用 RHEL 计算机器,您将需要负责所有操作系统生命周期的管理和维护任务,包括执行系统更新、应用补丁以及完成所有其他必要的任务。
由于从集群中的机器上删除 OpenShift Container Platform 需要破坏操作系统,因此您必须对添加到集群中的所有 RHEL 机器使用专用的硬件。
添加到 OpenShift Container Platform 集群的所有 RHEL 机器上都禁用内存交换功能。您无法在这些机器上启用交换内存。
您必须在初始化 control plane 之后将所有 RHEL 计算机器添加到集群。
7.1.2. RHEL 计算节点的系统要求
OpenShift Container Platform 环境中的 Red Hat Enterprise Linux (RHEL) 计算机器(也称为 worker)主机必须满足以下最低硬件规格和系统级别要求。
- 您的红帽帐户必须具有有效的 OpenShift Container Platform 订阅。如果没有,请与您的销售代表联系以了解更多信息。
- 生产环境必须提供能支持您的预期工作负载的计算机器。作为集群管理员,您必须计算预期的工作负载,再加上大约 10% 的开销。对于生产环境,请分配足够的资源,以防止节点主机故障影响您的最大容量。
所有系统都必须满足以下硬件要求:
- 物理或虚拟系统,或在公有或私有 IaaS 上运行的实例。
基础操作系统:使用 "Minimal" 安装选项的 RHEL 7.6。
重要OpenShift Container Platform 4.3 仅支持 RHEL 7.6。您不能将计算机器升级到 RHEL 8。
- 如果以 FIPS 模式部署 OpenShift Container Platform,则需要在 RHEL 机器上启用 FIPS,然后才能引导它。请参阅 RHEL 7 文档中的启用 FIPS 模式 。
- 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
属性。
7.1.2.1. 证书签名请求管理
在使用您置备的基础架构时,集群只能有限地访问自动机器管理,因此您必须提供一种在安装后批准集群证书签名请求 (CSR) 的机制。kube-controller-manager
只能批准 kubelet 客户端 CSR。machine-approver
无法保证使用 kubelet 凭证请求的提供证书的有效性,因为它不能确认是正确的机器发出了该请求。您必须决定并实施一种方法,以验证 kubelet 提供证书请求的有效性并进行批准。
7.1.3. 准备机器以运行 Playbook
在将使用 Red Hat Enterprise Linux 作为操作系统的计算机器添加到 OpenShift Container Platform 4.3 集群之前,必须准备一台机器来运行 playbook。这台机器不是集群的一部分,但必须能够访问集群。
先决条件
-
在运行 playbook 的机器上安装 OpenShift CLI(
oc
)。 -
以具有
cluster-admin
权限的用户身份登录。
流程
-
确保机器上具有集群的
kubeconfig
文件,以及用于安装集群的安装程序。若要实现这一目标,一种方法是使用安装集群时所用的同一台机器。 - 配置机器,以访问您计划用作计算机器的所有 RHEL 主机。您可以使用公司允许的任何方法,包括使用 SSH 代理或 VPN 的堡垒主机。
在运行 playbook 的机器上配置一个用户,该用户对所有 RHEL 主机具有 SSH 访问权限。
重要如果使用基于 SSH 密钥的身份验证,您必须使用 SSH 代理来管理密钥。
如果还没有这样做,请使用 RHSM 注册机器,并为它附加一个带有
OpenShift
订阅的池:使用 RHSM 注册机器:
# subscription-manager register --username=<user_name> --password=<password>
从 RHSM 获取最新的订阅数据:
# subscription-manager refresh
列出可用的订阅:
# subscription-manager list --available --matches '*OpenShift*'
在上一命令的输出中,找到 OpenShift Container Platform 订阅的池 ID 并附加该池:
# subscription-manager attach --pool=<pool_id>
启用 OpenShift Container Platform 4.3 所需的存储库:
# subscription-manager repos \ --enable="rhel-7-server-rpms" \ --enable="rhel-7-server-extras-rpms" \ --enable="rhel-7-server-ansible-2.8-rpms" \ --enable="rhel-7-server-ose-4.3-rpms"
安装所需的软件包,包括
openshift-ansible
:# yum install openshift-ansible openshift-clients jq
openshift-ansible
软件包提供了安装实用程序,并且会拉取将 RHEL 计算节点添加到集群所需要的其他软件包,如 Ansible、playbook 和相关的配置文件。openshift-clients
提供oc
CLI,jq
软件包则可改善命令行中 JSON 输出的显示。
7.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>
从 RHSM 获取最新的订阅数据:
# subscription-manager refresh
列出可用的订阅:
# subscription-manager list --available --matches '*OpenShift*'
在上一命令的输出中,找到 OpenShift Container Platform 订阅的池 ID 并附加该池:
# subscription-manager attach --pool=<pool_id>
禁用所有 yum 存储库:
禁用所有已启用的 RHSM 存储库:
# subscription-manager repos --disable="*"
列出剩余的 yum 存储库,并记录它们在
repo id
下的名称(若有):# yum repolist
使用
yum-config-manager
禁用剩余的 yum 存储库:# yum-config-manager --disable <repo_id>
或者,禁用所有存储库:
yum-config-manager --disable \*
请注意,有大量可用存储库时可能需要花费几分钟
仅启用 OpenShift Container Platform 4.3 需要的存储库:
# subscription-manager repos \ --enable="rhel-7-server-rpms" \ --enable="rhel-7-server-extras-rpms" \ --enable="rhel-7-server-ose-4.3-rpms"
停止并禁用主机上的防火墙:
# systemctl disable --now firewalld.service
注意请不要在以后启用防火墙。如果这样做,则无法访问 worker 上的 OpenShift Container Platform 日志。
7.1.5. 在集群中添加 RHEL 计算机器
您可以将使用 Red Hat Enterprise Linux 作为操作系统的计算机器添加到 OpenShift Container Platform 4.3 集群中。
先决条件
- 运行 playbook 的机器上已安装必需的软件包并且执行了必要的配置。
- RHEL 主机已做好安装准备。
流程
在为运行 playbook 而准备的机器上执行以下步骤:
创建一个名为
/<path>/inventory/hosts
的 Ansible 清单文件,以定义您的计算机器主机和必要的变量:[all:vars] ansible_user=root 1 #ansible_become=True 2 openshift_kubeconfig_path="~/.kube/config" 3 [new_workers] 4 mycluster-rhel7-0.example.com mycluster-rhel7-1.example.com
运行 playbook:
$ cd /usr/share/ansible/openshift-ansible $ ansible-playbook -i /<path>/inventory/hosts playbooks/scaleup.yml 1
- 1
- 对于
<path>
,指定您创建的 Ansible 清单文件的路径。
7.1.6. 批准机器的 CSR
将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。
先决条件
- 您已将机器添加到集群中。
流程
确认集群可以识别这些机器:
$ oc get nodes NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.16.2 master-1 Ready master 63m v1.16.2 master-2 Ready master 64m v1.16.2 worker-0 NotReady worker 76s v1.16.2 worker-1 NotReady worker 70s v1.16.2
输出将列出您创建的所有机器。
检查待处理的 CSR,并确保添加到集群中的每台机器都有
Pending
或Approved
状态的客户端和服务器请求:$ oc get csr NAME AGE REQUESTOR CONDITION csr-8b2br 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending 1 csr-8vnps 15m system:serviceaccount:openshift-machine-config-operator:node-bootstrapper Pending csr-bfd72 5m26s system:node:ip-10-0-50-126.us-east-2.compute.internal Pending 2 csr-c57lv 5m26s system:node:ip-10-0-95-157.us-east-2.compute.internal 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
其他信息
- 如需有关 CSR 的更多信息,请参阅证书签名请求。
7.1.7. Ansible hosts 文件的必要参数
在将 Red Hat Enterprise Linux (RHEL) 计算机器添加到集群之前,必须在 Ansible hosts 文件中定义以下参数。
参数 | 描述 | 值 |
---|---|---|
| 能够以免密码方式进行 SSH 身份验证的 SSH 用户。如果使用基于 SSH 密钥的身份验证,则必须使用 SSH 代理来管理密钥。 |
系统上的用户名。默认值为 |
|
如果 |
|
|
指定包含集群的 | 配置文件的路径和名称。 |
7.1.7.1. 从集群中删除 RHCOS 计算机器
将 Red Hat Enterprise Linux (RHEL) 计算机器添加到集群后,可以删除 Red Hat Enterprise Linux CoreOS (RHCOS) 计算机器。
先决条件
- 您已将 RHEL 计算机器添加到集群中。
流程
查看机器列表并记录 RHCOS 计算机器的节点名称:
$ oc get nodes -o wide
对于每一台 RHCOS 计算机器,删除其节点:
查看计算机器的列表,以确保仅保留 RHEL 节点:
$ oc get nodes -o wide
- 从集群的计算机器的负载均衡器中删除 RHCOS 机器。您可以删除虚拟机,或重新制作 RHCOS 计算机器物理硬件的镜像。