15.4. 使用网络自定义在 VMC 上安装集群
在 OpenShift Container Platform 版本 4.8 中,您可以使用安装程序置备的基础架构和自定义的网络配置选项在 VMware vSphere 实例上安装集群,方法是将其部署到 VMware Cloud (VMC) on AWS。
为 OpenShift Container Platform 部署配置了 VMC 环境后,您要使用堡垒管理主机中的 OpenShift Container Platform 安装程序,并位于 VMC 环境中。安装程序和 control plane 可以自动部署和管理 OpenShift Container Platform 集群所需的资源。
通过自定义 OpenShift Container Platform 网络配置,您的集群可以与环境中的现有 IP 地址分配共存,并与现有的 VXLAN 配置集成。要自定义安装,请在安装集群前修改 install-config.yaml
文件中的参数。大部分网络配置参数必须在安装过程中设置,只有 kubeProxy
配置参数可以在运行的集群中修改。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
15.4.1. 为 vSphere 设置 VMC
您可以在 AWS 托管的 vSphere 集群上安装 OpenShift Container Platform(VMC),以便启用在混合云内部和内部管理应用程序。
在 VMware vSphere 上安装 OpenShift Container Platform 之前,您必须在 VMC 环境中配置多个选项。确定您的 VMC 环境有以下先决条件:
- 创建非专用的、启用了 DHCP 的、NSX-T 网络片段和子网。其他虚拟机(VM)可以托管在子网上,但至少有 8 个 IP 地址可用于 OpenShift Container Platform 部署。
在 DHCP 范围之外分配两个 IP 地址,并使用反向 DNS 记录配置它们。
-
api.<cluster_name>.<base_domain>
的 DNS 记录,指向分配的 IP 地址。 -
*.apps.<cluster_name>.<base_domain>
的 DNS 记录,指向分配的 IP 地址。
-
配置以下防火墙规则:
- OpenShift Container Platform 计算网络和互联网间的 ANY:ANY 防火墙规则。节点和应用程序用于下载容器镜像。
- 在安装主机和软件定义的数据中心(SDDC)管理网络之间的端口 443 的 ANY:ANY 防火墙规则。这可让您在部署过程中上传 Red Hat Enterprise Linux CoreOS(RHCOS)OVA。
- OpenShift Container Platform 计算网络和 vCenter 间的 HTTPS 防火墙规则。此连接允许 OpenShift Container Platform 与 vCenter 通信,以置备和管理节点、持久性卷声明(PVC)和其他资源。
您必须具有以下信息才能部署 OpenShift Container Platform:
-
OpenShift Container Platform 集群名称,如
vmc-prod-1
。 -
基本 DNS 名称,如
companyname.com
。 -
如果没有使用默认设置,则必须识别 Pod 网络 CIDR 和服务网络 CIDR,默认设置为
10.128.0.0/14
和172.30.0.0/16
。这些 CIDR 用于 pod 到 pod 和 pod 到服务的通信,且无法在外部访问,但不得与机构中的现有子网重叠。 以下 vCenter 信息:
- vCenter 主机名、用户名和密码
-
数据中心名称,如
SDDC-Datacenter
-
集群名称,如
Cluster-1
- 网络名称
数据存储名称,如
WorkloadDatastore
注意建议在集群安装完成后将 vSphere 集群移到 VMC
Compute-ResourcePool
资源池。
-
OpenShift Container Platform 集群名称,如
基于 Linux 的主机作为堡垒部署到 VMC。
- 堡垒主机可以是 Red Hat Enterprise Linux(RHEL)或其他基于 Linux 的主机,它必须具有互联网连接,并可以将 OVA 上传到 ESXi 主机。
将 OpenShift CLI 工具下载并安装到堡垒主机。
-
openshift-install
安装程序 -
OpenShift CLI(
oc
)工具
-
您不能将 VMware NSX Container Plugin 用于 Kubernetes(NCP),NCP 不使用 NSX 作为 OpenShift SDN。目前 VMC 提供的 NSX 版本与 OpenShift Container Platform 认证的 NCP 版本不兼容。
但是,NSX DHCP 服务会通过全堆栈自动 OpenShift Container Platform 部署来管理虚拟机 IP 管理,节点可以手动或自动置备,可通过 Machine API 与 vSphere 集成。另外,还创建 NSX 防火墙规则,以便启用 OpenShift Container Platform 集群以及堡垒主机和 VMC vSphere 主机间的访问。
15.4.1.1. VMC Sizer 工具
AWS 上的 VMware Cloud 基于 AWS 裸机基础架构构建,这与运行 AWS 原生服务的裸机基础架构相同。当在 AWS 软件定义的数据中心(SDDC)上部署 VMware 云时,您要将这些物理服务器节点以单一租户方式运行 VMware ESXi hypervisor。这意味着其他使用 VMC 的用户无法访问物理基础结构。务必要考虑托管您的虚拟基础架构所需的物理主机数量。
要确定这一点,VMware 在 AWS Sizer 上提供 VMC。使用这个工具,您可以定义要在 VMC 上托管的资源:
- 工作负载类型
- 虚拟机总数
规格信息,例如:
- 存储要求
- vCPUs
- vRAM
- 过量使用比例
通过这些信息,sizer 工具可以根据 VMware 最佳实践生成报告,并推荐集群配置和您需要的主机数量。
15.4.2. vSphere 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新流程的详细信息。
- 您可以阅读有关选择集群安装方法的文档,并为用户准备它。
- 您置备的块 registry 存储。如需有关持久性存储的更多信息,请参阅了解持久性存储。
如果使用防火墙,则必须将其配置为允许集群需要访问的站点。
注意如果您要配置代理,请务必也要查看此站点列表。
15.4.3. OpenShift Container Platform 的互联网访问
在 OpenShift Container Platform 4.8 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类基础架构上执行受限网络安装。在此过程中,您要下载所需的内容,并使用它在镜像 registry(mirror registry) 中填充安装集群并生成安装程序所需的软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群之前,要更新 registry 镜像系统中的内容。
15.4.4. VMware vSphere 基础架构要求
您必须在满足您使用的组件要求的 VMware vSphere 版本 6 或 7 实例上安装 OpenShift Container Platform 集群。
组件 | 最低支持版本 | 描述 |
---|---|---|
虚拟机监控程序 | vSphere 6.5 及之后的版本 13 | 此版本是 Red Hat Enterprise Linux CoreOS(RHCOS)支持的最低版本。请查看 Red Hat Enterprise Linux 8 支持的管理程序列表。 |
使用 in-tree 驱动程序存储 | vSphere 6.5 及之后的版本 | 此插件使用 OpenShift Container Platform 中包含的 vSphere 的树内存储驱动程序创建 vSphere 存储。 |
如果您使用 vSphere 版本 6.5 实例,请在安装 OpenShift Container Platform 前考虑升级到 6.7U3 或 7.0。
您必须确保在安装 OpenShift Container Platform 前同步 ESXi 主机上的时间。请参阅 VMware 文档中的编辑主机时间配置。
15.4.5. 网络连接要求
您必须配置机器之间的网络连接,以便 OpenShift Container Platform 集群组件进行通信。
查看有关所需网络端口的以下详细信息。
协议 | 端口 | 描述 |
---|---|---|
ICMP | N/A | 网络可访问性测试 |
TCP |
| 指标 |
|
主机级别的服务,包括端口 | |
| Kubernetes 保留的默认端口 | |
| openshift-sdn | |
UDP |
| 虚拟可扩展 LAN(VXLAN) |
| Geneve | |
|
主机级别的服务,包括端口 | |
| IPsec IKE 数据包 | |
| IPsec NAT-T 数据包 | |
TCP/UDP |
| Kubernetes 节点端口 |
ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
协议 | 端口 | 描述 |
---|---|---|
TCP |
| Kubernetes API |
协议 | 端口 | 描述 |
---|---|---|
TCP |
| etcd 服务器和对等端口 |
15.4.6. vCenter 要求
在使用安装程序置备的基础架构的 vCenter 上安装 OpenShift Container Platform 集群前,您必须准备自己的环境。
所需的 vCenter 帐户权限
要在 vCenter 中安装 OpenShift Container Platform 集群,安装程序需要一个具有特权的帐户来读取和创建所需资源。使用具有全局管理特权的帐户是访问所有必要权限的最简单方式。
如果无法使用具有全局管理特权的帐户,您必须创建角色来授予 OpenShift Container Platform 集群安装所需的权限。虽然大多数权限始终是必需的,但是一些权限只有在计划安装程序需要在您的 vCenter 实例中置备一个包含 OpenShift Container Platform 集群的文件夹时(这是默认行为)才需要。您必须为指定对象创建或修改 vSphere 角色,才能授予所需的权限。
如果安装程序创建 vSphere 虚拟机文件夹,则需要额外的角色。
例 15.7. vSphere API 中安装的角色和权限
角色的 vSphere 对象 | 何时需要 | vSphere API 中的所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter Cluster | Always |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter | 如果安装程序创建虚拟机文件夹 |
|
例 15.8. 在 vCenter 图形用户界面(GUI)中安装所需的角色和权限
角色的 vSphere 对象 | 何时需要 | vCenter GUI 中的所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter Cluster | 如果在集群 root 中创建虚拟机 |
|
vSphere vCenter 资源池 | 如果提供了现有的资源池 |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter | 如果安装程序创建虚拟机文件夹 |
|
此外,用户需要一些 ReadOnly
权限,某些角色需要权限来提升对子对象的权限。这些设置会根据您是否将集群安装到现有文件夹而有所不同。
例 15.9. 所需的权限和传播设置
vSphere 对象 | 文件夹类型 | 传播到子对象 | 所需的权限 |
---|---|---|---|
vSphere vCenter | Always | False | 列出所需的权限 |
vSphere vCenter Datacenter | 现有文件夹 | False |
|
安装程序创建文件夹 | True | 列出所需的权限 | |
vSphere vCenter Cluster | Always | True | 列出所需的权限 |
vSphere vCenter Datastore | Always | False | 列出所需的权限 |
vSphere Switch | Always | False |
|
vSphere 端口组 | Always | False | 列出所需的权限 |
vSphere vCenter Virtual Machine Folder | 现有文件夹 | True | 列出所需的权限 |
有关只使用所需权限创建帐户的更多信息,请参阅 vSphere 文档中的 vSphere 权限和用户管理任务。
将 OpenShift Container Platform 与 vMotion 搭配使用
如果要在 vSphere 环境中使用 vMotion,请在安装 OpenShift Container Platform 集群前考虑以下内容。
OpenShift Container Platform 通常支持仅用于计算的 vMotion。使用 Storage vMotion 可能会导致问题且不被支持。
为了帮助确保计算和 control plane 节点的正常运行时间,建议您遵循 VMware 最佳实践进行 vMotion。还建议使用 VMware 反关联性规则来改进 OpenShift Container Platform 在维护或硬件问题期间的可用性。
有关 vMotion 和 anti-affinity 规则的更多信息,请参阅 VMware vSphere 文档 了解 vMotion 网络要求和虚拟机反关联性规则。
- 如果您在 pod 中使用 vSphere 卷,请手动或通过 Storage vMotion 在数据存储间迁移虚拟机,从而导致 OpenShift Container Platform 持久性卷(PV)对象中的无效引用。这些引用可防止受影响的 pod 启动,并可能导致数据丢失。
- 同样,OpenShift Container Platform 不支持在数据存储间有选择地迁移 VMDK、使用数据存储集群进行虚拟机置备、动态或静态置备 PV,或使用作为数据存储集群一部分的数据存储进行 PV 的动态或静态置备。
集群资源
当部署使用安装程序置备的基础架构的 OpenShift Container Platform 集群时,安装程序必须能够在 vCenter 实例中创建多个资源。
标准 OpenShift Container Platform 安装会创建以下 vCenter 资源:
- 1 个文件夹
- 1 标签(Tag)类别
- 1 个标签(Tag)
虚拟机:
- 1 个模板
- 1 个临时 bootstrap 节点
- 3 个 control plane 节点
- 3 个计算机器
虽然这些资源使用了 856 GB 存储,但 bootstrap 节点会在集群安装过程中被销毁。使用标准集群至少需要 800 GB 存储。
如果部署了更多计算机器,OpenShift Container Platform 集群将使用更多存储。
集群的限制
可用资源因集群而异。vCenter 中可能的集群数量主要受可用存储空间以及对所需资源数量的限制。确保考虑集群创建的 vCenter 资源的限制和部署集群所需的资源,如 IP 地址和网络。
网络要求
网络必须使用 DHCP,并确保 DHCP 服务器被配置为为集群机器提供持久的 IP 地址。所有节点都必须位于同一 VLAN。您不能将第二个 VLAN 来扩展集群作为第 2 天操作。另外,在安装 OpenShift Container Platform 集群前,必须创建以下网络资源:
建议集群中的每个 OpenShift Container Platform 节点都可以访问可通过 DHCP 发现的网络时间协议(NTP)服务器。没有 NTP 服务器也可安装。但是,异步服务器时钟将导致错误,NTP 服务器会阻止。
所需的 IP 地址
安装程序置备的 vSphere 安装需要两个静态 IP 地址:
- API 地址用于访问集群 API。
- Ingress 地址用于集群入口流量。
安装 OpenShift Container Platform 集群时,必须向安装程序提供这些 IP 地址。
DNS 记录
您必须在正确的 DNS 服务器中为托管 OpenShift Container Platform 集群的 vCenter 实例创建两个静态 IP 地址的 DNS 记录。在每个记录中,<cluster_name>
是集群名称,<base_domain>
是您在安装集群时指定的集群基域。完整的 DNS 记录采用如下格式: <component>.<cluster_name>.<base_domain>.
。
组件 | 记录 | 描述 |
---|---|---|
API VIP |
| 此 DNS A/AAAA 或 CNAME 记录必须指向 control plane 机器的负载均衡器。此记录必须能由集群外的客户端和集群内的所有节点解析。 |
Ingress VIP |
| 通配符 DNS A/AAAA 或 CNAME 记录,指向以运行入口路由器 Pod 的机器(默认为 worker 节点)为目标的负载均衡器。此记录必须能由集群外的客户端和集群内的所有节点解析。 |
15.4.7. 为集群节点的 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥会添加到每个节点中 core
用户的 ~/.ssh/authorized_keys
列表中,从而启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对以 core
用户身份通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,私钥身份必须由 SSH 进行管理,供您的本地用户使用。
如果要通过 SSH 连接集群节点来执行安装调试或灾难恢复,您必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上放置 SSH 公钥。
如果可能需要进行灾难恢复或调试,则不要在生产环境中跳过这个过程。
流程
如果您的本地机器上没有用于在集群节点上进行身份验证 SSH 密钥对,请创建一个。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ ssh-keygen -t ed25519 -N '' -f <path>/<file_name> 1
- 1
- 指定新 SSH 密钥的路径和文件名,如
~/.ssh/id_ed25519
。如果您已有密钥对,请确保您的公钥位于~/.ssh
目录中。
注意如果您计划在
x86_64
架构中安装使用 FIPS 验证的/Modules in Process 加密库的 OpenShift Container Platform 集群,不要创建使用ed25519
算法的密钥。反之,创建一个使用rsa
或ecdsa
算法的密钥。查看公共 SSH 密钥:
$ cat <path>/<file_name>.pub
例如,运行以下命令查看
~/.ssh/id_ed25519.pub
公钥:$ cat ~/.ssh/id_ed25519.pub
将 SSH 私钥身份添加到您本地用户的 SSH 代理(如果尚未添加)。在集群节点上进行免密码 SSH 身份验证,或者您想要使用
./openshift-install gather
命令,则需要使用 SSH 代理进行管理。注意在某些发行版中,会自动管理默认 SSH 私钥(如
~/.ssh/id_rsa
和~/.ssh/id_dsa
)。如果
ssh-agent
进程还没有针对您的本地用户运行,请将其作为后台任务启动:$ eval "$(ssh-agent -s)"
输出示例
Agent pid 31874
注意如果您的集群采用 FIPS 模式,则只使用 FIPS 兼容算法来生成 SSH 密钥。密钥必须是 RSA 或 ECDSA。
将 SSH 私钥添加到
ssh-agent
:$ ssh-add <path>/<file_name> 1
- 1
- 指定 SSH 私钥的路径和文件名,如
~/.ssh/id_ed25519
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 在安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
15.4.8. 获取安装程序
在安装 OpenShift Container Platform 之前,将安装文件下载到您置备的机器上。
先决条件
- 一个运行 Linux 的机器,如 Red Hat Enterprise Linux 8,本地磁盘空间为 500MB。
流程
- 访问 OpenShift Cluster Manager 站点的 Infrastructure Provider 页面。如果您有红帽帐号,请使用自己的凭证登录。如果没有,请创建一个帐户。
- 选择您的基础架构供应商。
进入适用于您的安装类型的页面,下载您的操作系统的安装程序,并将文件放在要保存安装配置文件的目录中。。
重要安装程序会在用来安装集群的计算机上创建若干文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。这两个文件都需要删除集群。
重要删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,为特定云供应商完成 OpenShift Container Platform 卸载流程。
提取安装程序。例如,在使用 Linux 操作系统的计算机上运行以下命令:
$ tar xvf openshift-install-linux.tar.gz
- 从 Red Hat OpenShift Cluster Manager 下载安装 pull secret。通过此 pull secret,您可以进行所含授权机构提供的服务的身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
15.4.9. 在您的系统信任中添加 vCenter root CA 证书
由于安装程序需要访问 vCenter 的 API,所以必须在安装 OpenShift Container Platform 集群前将 vCenter 的可信 root CA 证书添加到系统信任中。
流程
-
在 vCenter 主页中下载 vCenter 的 root CA 证书。在 vSphere Web Services SDK 部分点击 Download trusted root CA certificates。
<vCenter>/certs/download.zip
文件下载。 提取包含 vCenter root CA 证书的压缩文件。压缩文件的内容类似以下文件结构:
certs ├── lin │ ├── 108f4d17.0 │ ├── 108f4d17.r1 │ ├── 7e757f6a.0 │ ├── 8e4f8471.0 │ └── 8e4f8471.r0 ├── mac │ ├── 108f4d17.0 │ ├── 108f4d17.r1 │ ├── 7e757f6a.0 │ ├── 8e4f8471.0 │ └── 8e4f8471.r0 └── win ├── 108f4d17.0.crt ├── 108f4d17.r1.crl ├── 7e757f6a.0.crt ├── 8e4f8471.0.crt └── 8e4f8471.r0.crl 3 directories, 15 files
将您的操作系统的文件添加到系统信任中。例如,在 Fedora 操作系统上运行以下命令:
# cp certs/lin/* /etc/pki/ca-trust/source/anchors
更新您的系统信任关系。例如,在 Fedora 操作系统上运行以下命令:
# update-ca-trust extract
15.4.10. 创建安装配置文件
您可以自定义在 VMware vSphere 上安装的 OpenShift Container Platform 集群。
先决条件
- 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。
- 在订阅级别获取服务主体权限。
流程
创建
install-config.yaml
文件。更改到包含安装程序的目录,再运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定用于保存安装程序所创建的文件的目录名称。
重要指定一个空目录。一些安装信息,如 bootstrap X.509 证书,有较短的过期间隔,因此不要重复使用安装目录。如果要重复使用另一个集群安装中的个别文件,可以将其复制到您的目录中。但是,一些安装数据的文件名可能会在发行版本之间有所改变。从 OpenShift Container Platform 老版本中复制安装文件时要格外小心。
在提示符处,提供您的云的配置详情:
可选:选择用来访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- 选择 vsphere 作为目标平台。
- 指定 vCenter 实例的名称。
指定创建集群所需的权限的 vCenter 帐户的用户名和密码。
安装程序连接到您的 vCenter 实例。
- 选择要连接的 vCenter 实例中的数据中心。
- 选择要使用的默认 vCenter 数据存储。
- 选择要在其中安装 vCenter 集群的 OpenShift Container Platform 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
- 选择包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。
- 输入您为 control plane API 访问配置的虚拟 IP 地址。
- 输入您为集群入口配置的虚拟 IP 地址。
- 输入基域。这个基域必须与您配置的 DNS 记录中使用的域相同。
- 为集群输入一个描述性名称。集群名称必须与您配置的 DNS 记录中使用的相同。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
-
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml
文件,以便用于安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
15.4.10.1. 安装配置参数
在部署 OpenShift Container Platform 集群前,您要提供一个自定义的 install-config.yaml
安装配置文件,该文件描述了您的环境详情。
安装之后,您无法修改 install-config.yaml
文件中的这些参数。
openshift-install
命令不验证参数的字段名称。如果指定了不正确的名称,则不会创建相关的文件或对象,且不会报告错误。确保所有指定的参数的字段名称都正确。
15.4.10.1.1. 所需的配置参数
下表描述了所需的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
|
| 字符串 |
|
云供应商的基域。此基础域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
|
Kubernetes 资源 | 对象 |
|
集群的名称。集群的 DNS 记录是 |
小写字母和连字符( |
|
执行安装的具体平台配置: | 对象 |
| 从 Red Hat OpenShift Cluster Manager 获取 pull secret,验证从 Quay.io 等服务中下载 OpenShift Container Platform 组件的容器镜像。 |
{ "auths":{ "cloud.openshift.com":{ "auth":"b3Blb=", "email":"you@example.com" }, "quay.io":{ "auth":"b3Blb=", "email":"you@example.com" } } } |
15.4.10.1.2. 网络配置参数
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
只支持 IPv4 地址。
参数 | 描述 | 值 |
---|---|---|
| 集群网络的配置。 | 对象 注意
您不能在安装后修改 |
| 要安装的集群网络供应商 Container Network Interface (CNI)插件。 |
|
| pod 的 IP 地址块。
默认值为 如果您指定多个 IP 地址块,则块不得互相重叠。 | 一个对象数组。例如: networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 |
|
使用 一个 IPv4 网络。 |
使用 CIDR 形式的 IP 地址块。IPv4 块的前缀长度介于 |
|
分配给每个单独节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
|
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络供应商只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16 |
| 机器的 IP 地址块。 如果您指定多个 IP 地址块,则块不得互相重叠。
如果您指定了多个 IP 内核参数, | 一个对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16 |
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
15.4.10.1.3. 可选配置参数
下表描述了可选安装配置参数:
参数 | 描述 | 值 |
---|---|---|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用这个信任捆绑包。 | 字符串 |
| 组成计算节点的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在计算机器上启用或禁用并发多线程或 重要 如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
| 组成 control plane 的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在 control plane 机器上启用或禁用并发多线程或 重要 如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
| Cloud Credential Operator(CCO)模式。如果没有指定任何模式,CCO 会动态地尝试决定提供的凭证的功能,在支持多个模式的平台上使用 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅 Cluster Operator 参考内容中的 Cloud Credential Operator 条目。 |
|
|
启用或禁用 FIPS 模式。默认为 重要
只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
| release-image 内容的源和仓库。 |
对象数组。包括一个 |
|
使用 | 字符串 |
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
在非云平台上不支持将此字段设置为 |
| 用于验证集群机器访问的 SSH 密钥或密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 | 一个或多个密钥。例如: sshKey: <key1> <key2> <key3> |
15.4.10.1.4. 其他 VMware vSphere 配置参数
下表描述了其他 VMware vSphere 配置参数:
参数 | 描述 | 值 |
---|---|---|
| vCenter 服务器的完全限定主机名或 IP 地址。 | 字符串 |
| 用于连接 vCenter 实例的用户名。此用户必须至少具有 vSphere 中 静态或动态持久性卷置备 所需的角色和权限。 | 字符串 |
| vCenter 用户名的密码。 | 字符串 |
| 要在 vCenter 实例中使用的数据中心的名称。 | 字符串 |
| 用于置备卷的默认数据存储名称。 | 字符串 |
| 可选。安装程序创建虚拟机的现有文件夹的绝对路径。如果没有提供这个值,安装程序会创建一个文件夹,它的名称是数据中心虚拟机文件夹中的基础架构 ID。 |
字符串,如 |
| 包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。 | 字符串 |
| 在其中安装 OpenShift Container Platform 集群的 vCenter 集群。 | 字符串 |
| 为 control plane API 访问配置的虚拟 IP(VIP)地址。 |
IP 地址,如 |
| 为集群入口配置的虚拟 IP(VIP)地址。 |
IP 地址,如 |
15.4.10.1.5. 可选的 VMware vSphere 机器池配置参数
下表描述了可选的 VMware vSphere 机器池配置参数:
参数 | 描述 | 值 |
---|---|---|
| 安装程序从中下载 RHCOS 镜像的位置。您必须设置此参数以便在受限网络中执行安装。 |
HTTP 或 HTTPS URL,可选使用 SHA-256 checksum。例如: |
| 以 GB 为单位的磁盘大小。 | 整数 |
| 分配虚拟机的虚拟处理器内核总数。 | 整数 |
|
虚拟机中每个插槽的内核数。虚拟机上的虚拟套接字数量为 | 整数 |
| 以 MB 为单位的虚拟机内存大小。 | 整数 |
15.4.10.2. 安装程序置备的 VMware vSphere 集群的 install-config.yaml 文件示例
您可以自定义 install-config.yaml 文件,以指定有关 OpenShift Container Platform 集群平台的更多信息,或修改所需参数的值。
apiVersion: v1 baseDomain: example.com 1 compute: 2 - hyperthreading: Enabled 3 name: worker replicas: 3 platform: vsphere: 4 cpus: 2 coresPerSocket: 2 memoryMB: 8192 osDisk: diskSizeGB: 120 controlPlane: 5 hyperthreading: Enabled 6 name: master replicas: 3 platform: vsphere: 7 cpus: 4 coresPerSocket: 2 memoryMB: 16384 osDisk: diskSizeGB: 120 metadata: name: cluster 8 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OpenShiftSDN serviceNetwork: - 172.30.0.0/16 platform: vsphere: vcenter: your.vcenter.server username: username password: password datacenter: datacenter defaultDatastore: datastore folder: folder network: VM_Network cluster: vsphere_cluster_name 9 apiVIP: api_vip ingressVIP: ingress_vip fips: false pullSecret: '{"auths": ...}' sshKey: 'ssh-ed25519 AAAA...'
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 5
controlPlane
部分是一个单映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane
部分的第一行则不可以连字符开头。只使用一个 control plane 池。- 3 6
- 是否要启用或禁用并发多线程或
超线程
。默认情况下,启用并发多线程以提高机器内核的性能。您可以通过将参数值设为Disabled
来禁用。如果您在某些集群机器上禁用并发多线程,则必须在所有集群机器上禁用。重要如果禁用并发多线程,请确保在容量规划时考虑到机器性能可能会显著降低的问题。如果您禁用并发多线程,则计算机必须至少使用 8 个 CPU 和 32GB RAM。
- 4 7
- 可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
- 8
- 您在 DNS 记录中指定的集群名称。
- 9
- 要在其中安装 OpenShift Container Platform 集群的 vSphere 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
15.4.10.3. 在安装过程中配置集群范围代理
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置,将新的 OpenShift Container Platform 集群配置为使用代理。
先决条件
-
您有一个现有的
install-config.yaml
文件。 您检查了集群需要访问的站点,并决定是否需要绕过代理。默认情况下代理所有集群出口流量,包括对托管云供应商 API 的调用。您需要将站点添加到
Proxy
对象的spec.noProxy
字段来绕过代理。注意Proxy
对象status.noProxy
字段使用安装配置中的networking.machineNetwork[].cidr
、networking.clusterNetwork[].cidr
和networking.serviceNetwork[]
字段的值填充。对于在 Amazon Web Services(AWS)、Google Cloud Platform(GCP)、Microsoft Azure 和 Red Hat OpenStack Platform(RHOSP)上安装,
Proxy
对象status.noProxy
字段也会使用实例元数据端点填充(169.254.169.254
)。
流程
编辑
install-config.yaml
文件并添加代理设置。例如:apiVersion: v1 baseDomain: my.domain.com proxy: httpProxy: http://<username>:<pswd>@<ip>:<port> 1 httpsProxy: https://<username>:<pswd>@<ip>:<port> 2 noProxy: example.com 3 additionalTrustBundle: | 4 -----BEGIN CERTIFICATE----- <MY_TRUSTED_CA_CERT> -----END CERTIFICATE----- ...
- 1
- 用于创建集群外 HTTP 连接的代理 URL。URL 必须是
http
。 - 2
- 用于创建集群外 HTTPS 连接的代理 URL。
- 3
- 要排除在代理中的目标域名、IP 地址或其他网络 CIDR 的逗号分隔列表。在域前面加
.
来仅匹配子域。例如:.y.com
匹配x.y.com
,但不匹配y.com
。使用*
绕过所有目的地的代理。您必须包含 vCenter 的 IP 地址以及用于其机器的 IP 范围。 - 4
- 如果提供,安装程序会在
openshift-config 命名空间中生成名为
的配置映射来保存额外的 CA 证书。如果您提供user-ca-
bundleadditionalTrustBundle
和至少一个代理设置,则Proxy
对象会被配置为引用trustedCA
字段中的user-ca-bundle
配置映射。然后,Cluster Network Operator 会创建一个trusted-ca-bundle
配置映射,该配置映射将为trustedCA
参数指定的内容与 RHCOS 信任捆绑包合并。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。
注意安装程序不支持代理的
readinessEndpoints
字段。- 保存该文件,并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster
的集群范围代理,该代理使用提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
15.4.11. 网络配置阶段
OpenShift Container Platform 安装前有两个阶段,您可以在其中自定义网络配置。
- 阶段 1
在创建清单文件前,您可以自定义
install-config.yaml
文件中的以下网络相关字段:-
networking.networkType
-
networking.clusterNetwork
-
networking.serviceNetwork
networking.machineNetwork
有关这些字段的更多信息,请参阅安装配置参数。
注意将
networking.machineNetwork
设置为与首选 NIC 所在的 CIDR 匹配。
-
- 阶段 2
-
在运行
openshift-install create manifests
创建清单文件后,您可以只使用您要修改的字段定义一个自定义 Cluster Network Operator 清单。您可以使用清单来指定高级网络配置。
在 2 阶段,您无法覆盖 install-config.yaml
文件中的 1 阶段中指定的值。但是,您可以在第 2 阶段进一步自定义集群网络供应商。
15.4.12. 指定高级网络配置
您可以使用集群网络供应商的高级网络配置将集群集成到现有的网络环境中。您只能在安装集群前指定高级网络配置。
不支持通过修改安装程序创建的 OpenShift Container Platform 清单文件来自定义网络配置。支持应用您创建的清单文件,如以下流程所示。
先决条件
-
您已创建了
install-config.yaml
文件,并完成了对其所做的任何修改。
流程
进入包含安装程序的目录并创建清单:
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
<installation_directory>
指定包含集群的install-config.yaml
文件的目录的名称。
在
<installation_directory>/manifests/
目录下,为高级网络配置创建一个名为cluster-network-03-config.yml
的 stub 清单文件:apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec:
在
cluster-network-03-config.yml
文件中指定集群的高级网络配置,如下例所示:为 OpenShift SDN 网络供应商指定不同的 VXLAN 端口
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: openshiftSDNConfig: vxlanPort: 4800
为 OVN-Kubernetes 网络供应商启用 IPsec
apiVersion: operator.openshift.io/v1 kind: Network metadata: name: cluster spec: defaultNetwork: ovnKubernetesConfig: ipsecConfig: {}
-
可选:备份
manifests/cluster-network-03-config.yml
文件。在创建 Ignition 配置文件时,安装程序会消耗manifests/
目录。
15.4.13. Cluster Network Operator 配置
集群网络的配置作为 Cluster Network Operator (CNO) 配置的一部分被指定,并存储在名为 cluster
的自定义资源(CR)对象中。CR 指定 operator.openshift.io
API 组中的 Network
API 的字段。
CNO 配置会在集群安装过程中从 Network.config.openshift.io
API 组中的 Network
API 继承以下字段,这些字段无法更改:
clusterNetwork
- 从中分配 pod IP 地址的 IP 地址池。
serviceNetwork
- 服务的 IP 地址池。
defaultNetwork.type
- 集群网络供应商,如 OpenShift SDN 或 OVN-Kubernetes。
您可以通过在名为 cluster
的 CNO 对象中设置 defaultNetwork
对象的字段来为集群指定集群网络供应商配置。
15.4.13.1. Cluster Network Operator 配置对象
Cluster Network Operator(CNO)的字段在下表中描述:
字段 | 类型 | 描述 |
---|---|---|
|
|
CNO 对象的名称。这个名称始终是 |
|
| 用于指定从哪些 IP 地址块分配 Pod IP 地址以及分配给集群中每个节点的子网前缀长度的列表。例如: spec: clusterNetwork: - cidr: 10.128.0.0/19 hostPrefix: 23 - cidr: 10.128.32.0/19 hostPrefix: 23
在创建清单前,您只能在 |
|
| 服务的 IP 地址块。OpenShift SDN 和 OVN-Kubernetes Container Network Interface(CNI)网络供应商只支持服务网络具有单个 IP 地址块。例如: spec: serviceNetwork: - 172.30.0.0/14
在创建清单前,您只能在 |
|
| 为集群网络配置 Container Network Interface(CNI)集群网络供应商。 |
|
| 此对象的字段指定 kube-proxy 配置。如果您使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 的配置不会起作用。 |
defaultNetwork 对象配置
defaultNetwork
对象的值在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意 OpenShift Container Platform 默认使用 OpenShift SDN Container Network Interface(CNI)集群网络供应商。 |
|
| 此对象仅对 OpenShift SDN 集群网络供应商有效。 |
|
| 此对象仅对 OVN-Kubernetes 集群网络供应商有效。 |
配置 OpenShift SDN CNI 集群网络供应商
下表描述了 OpenShift SDN Container Network Interface(CNI)集群网络供应商的配置字段。
字段 | 类型 | 描述 |
---|---|---|
|
|
配置 OpenShift SDN 的网络隔离模式。默认值为
|
|
| VXLAN 覆盖网络的最大传输单元 (MTU) 。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的,请确认节点上主网络接口中的 MTU 是正确的。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果您的集群中的不同节点需要不同的 MTU 值,则必须将此值设置为比集群中的最低 MTU 值小 集群安装后无法更改这个值。 |
|
|
用于所有 VXLAN 数据包的端口。默认值为 如果您在虚拟环境中运行,并且现有节点是另一个 VXLAN 网络的一部分,那么可能需要更改此值。例如,当在 VMware NSX-T 上运行 OpenShift SDN 覆盖时,您必须为 VXLAN 选择一个备用端口,因为两个 SDN 都使用相同的默认 VXLAN 端口号。
在 Amazon Web Services (AWS) 上,您可以在端口 |
OpenShift SDN 配置示例
defaultNetwork: type: OpenShiftSDN openshiftSDNConfig: mode: NetworkPolicy mtu: 1450 vxlanPort: 4789
配置 OVN-Kubernetes CNI 集群网络供应商
下表描述了 OVN-Kubernetes CNI 集群网络供应商的配置字段。
字段 | 类型 | 描述 |
---|---|---|
|
| Geneve(Generic Network Virtualization Encapsulation)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的,请确认节点上主网络接口中的 MTU 是正确的。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果您的集群中的不同节点需要不同的 MTU 值,则必须将此值设置为比集群中的最低 MTU 值小 集群安装后无法更改这个值。 |
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
字段 | 类型 | 描述 |
---|---|---|
| 整数 |
每个节点每秒生成的最大消息数。默认值为每秒 |
| 整数 |
审计日志的最大大小(以字节为单位)。默认值为 |
| 字符串 | 以下附加审计日志目标之一:
|
| 字符串 |
RFC5424 中定义的 syslog 工具,如 |
OVN-Kubernetes 配置示例
defaultNetwork: type: OVNKubernetes ovnKubernetesConfig: mtu: 1400 genevePort: 6081
kubeProxyConfig 对象配置
kubeProxyConfig
对象的值在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意
由于 OpenShift Container Platform 4.3 及更高版本中引进了性能上的改进,现在不再需要调整 |
|
|
刷新 kubeProxyConfig: proxyArguments: iptables-min-sync-period: - 0s |
15.4.14. 部署集群
您可以在兼容云平台中安装 OpenShift Container Platform。
安装程序的 create cluster
命令只能在初始安装过程中运行一次。
先决条件
- 配置托管集群的云平台的帐户。
- 获取 OpenShift Container Platform 安装程序以及集群的 pull secret。
流程
更改为包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
重要使用托管在 VMC 环境中的堡垒中的
openshift-install
命令。注意如果您在主机上配置的云供应商帐户没有足够的权限来部署集群,安装过程将会停止,并且显示缺少的权限。
集群部署完成后,终端会显示访问集群的信息,包括指向其 Web 控制台的链接和
kubeadmin
用户的凭证。输出示例
... INFO Install complete! INFO To access the cluster as the system:admin user when using 'oc', run 'export KUBECONFIG=/home/myuser/install_dir/auth/kubeconfig' INFO Access the OpenShift web-console here: https://console-openshift-console.apps.mycluster.example.com INFO Login to the console with user: "kubeadmin", and password: "4vYBz-Ee6gm-ymBZj-Wt5AL" INFO Time elapsed: 36m22s
注意当安装成功时,集群访问和凭证信息还会输出到
<installation_directory>/.openshift_install.log
。重要-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外情况是,您需要手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书中恢复的文档。 - 建议您在生成 12 小时后使用 Ignition 配置文件,因为集群安装后 24 小时证书从 16 小时轮转至 22 小时。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中运行证书更新时避免安装失败。
重要您不得删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外情况是,您需要手动批准待处理的
15.4.15. 通过下载二进制文件安装 OpenShift CLI
您需要安装 CLI(oc
) 来使用命令行界面与 OpenShift Container Platform 进行交互。您可在 Linux 、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.8 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.8 Linux 客户端 条目旁边的 Download Now,再保存文件。
解包存档:
$ tar xvzf <file>
把
oc
二进制代码放到PATH
中的目录中。执行以下命令可以查看当前的
PATH
设置:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制代码。
流程
- 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.8 Windows 客户端 条目旁边的 Download Now,再保存文件。
- 使用 ZIP 程序解压存档。
把
oc
二进制代码放到PATH
中的目录中。要查看您的
PATH
,请打开命令提示窗口并执行以下命令:C:\> path
安装 OpenShift CLI 后,可以使用 oc
命令:
C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制代码。
流程
- 进入到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.8 MacOSX 客户端 条目旁边的 Download Now,再保存文件。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,打开一个终端窗口并执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
15.4.16. 使用 CLI 登录到集群
您可以通过导出集群 kubeconfig
文件,以默认系统用户身份登录集群。kubeconfig
文件包含关于集群的信息,供 CLI 用于将客户端连接到正确集群和 API 服务器。该文件特只适用于一个特定的集群,在 OpenShift Container Platform 安装过程中创建。
先决条件
- 已部署了 OpenShift Container Platform 集群。
-
已安装
oc
CLI。
流程
导出
kubeadmin
凭证:$ export KUBECONFIG=<installation_directory>/auth/kubeconfig 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
使用导出的配置,验证能否成功运行
oc
命令:$ oc whoami
输出示例
system:admin
15.4.17. 创建 registry 存储
安装集群后,必须为 registry Operator 创建存储。
15.4.17.1. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身的状态是 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
将 ManagementState
Image Registry Operator 配置从 Removed
改为 Managed
。
Prometheus 控制台提供了一个 ImageRegistryRemoved
警报,例如:
"Image Registry has been removed.ImageStreamTags
, BuildConfigs
and DeploymentConfigs
which reference ImageStreamTags
may not work as expected.Please configure storage and update the config to Managed
state by editing configs.imageregistry.operator.openshift.io."
15.4.17.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初将不可用。安装后,您必须配置 registry 使用的存储,这样 Registry Operator 才可用。
示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,该位置只可用于非生产集群。
另外还提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
15.4.17.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 具有 Cluster Administrator 权限
- VMware vSphere上有一个集群。
为集群置备的持久性存储,如 Red Hat OpenShift Container Storage。
重要如果您只有一个副本,OpenShift Container Platform 支持对镜像 registry 存储的
ReadWriteOnce
访问。ReadWriteOnce
访问还要求 registry 使用Recreate
rollout 策略。要部署支持高可用性的镜像 registry,需要两个或多个副本,ReadWriteMany
访问。- 必须有“ 100Gi”容量。
测试显示,在 RHEL 中使用 NFS 服务器作为核心服务的存储后端可能会出现问题。这包括 OpenShift Container Registry 和 Quay,Prometheus 用于监控存储,以及 Elasticsearch 用于日志存储。因此,不推荐使用 RHEL NFS 作为 PV 后端用于核心服务。
市场上的其他 NFS 实现可能没有这些问题。如需了解更多与此问题相关的信息,请联络相关的 NFS 厂商。
流程
为了配置 registry 使用存储,需要修改
configs.imageregistry/cluster
资源中的spec.storage.pvc
。注意使用共享存储时,请查看您的安全设置以防止被外部访问。
验证您没有 registry pod:
$ oc get pod -n openshift-image-registry -l docker-registry=default
输出示例
No resourses found in openshift-image-registry namespace
注意如果您的输出中有一个 registry pod,则不需要继续这个过程。
检查 registry 配置:
$ oc edit configs.imageregistry.operator.openshift.io
输出示例
storage: pvc: claim: 1
- 1
- 将
claim
字段留空以允许自动创建image-registry-storage
持久性卷声明(PVC)。PVC 基于默认存储类生成。但请注意,默认存储类可能会提供 ReadWriteOnce (RWO)卷,如 RADOS 块设备(RBD),这可能会在复制到多个副本时导致问题。
检查
clusteroperator
的状态:$ oc get clusteroperator image-registry
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE MESSAGE image-registry 4.7 True False False 6h50m
15.4.17.2.2. 为 VMware vSphere 配置块 registry 存储
在作为集群管理员升级时,要允许镜像 registry 使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate
rollout 策略。
支持块存储卷,但不建议将其用于生产环境中的镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法拥有多个副本。
流程
要将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用
Recreate
rollout 策略,且仅使用1
个副本运行:$ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
为块存储设备置备 PV,并为该卷创建 PVC。请求的块卷使用 ReadWriteOnce(RWO)访问模式。
创建包含以下内容的
pvc.yaml
文件以定义 VMware vSpherePersistentVolumeClaim
:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: image-registry-storage 1 namespace: openshift-image-registry 2 spec: accessModes: - ReadWriteOnce 3 resources: requests: storage: 100Gi 4
从文件创建
PersistentVolumeClaim
对象:$ oc create -f pvc.yaml -n openshift-image-registry
编辑 registry 配置,使其可以正确引用 PVC:
$ oc edit config.imageregistry.operator.openshift.io -o yaml
输出示例
storage: pvc: claim: 1
- 1
- 通过创建自定义 PVC,您可以将
claim
字段留空以用于默认自动创建image-registry-storage
PVC。
有关配置 registry 存储以便引用正确的 PVC 的说明,请参阅为 vSphere 配置 registry。
15.4.18. 备份 VMware vSphere 卷
OpenShift Container Platform 将新卷作为独立持久性磁盘置备,以便在集群中的任何节点上自由附加和分离卷。因此,无法备份使用快照的卷,也无法从快照中恢复卷。如需更多信息,请参阅 快照限制。
流程
要创建持久性卷的备份:
- 停止使用持久性卷的应用程序。
- 克隆持久性卷。
- 重启应用程序。
- 创建克隆的卷的备份。
- 删除克隆的卷。
15.4.19. 窃取时钟核算
默认情况下,安装程序会在不启用 steal clock accounting 参数(启用stealclock.enabled
)的情况下置备集群的虚拟机。启用窃取时钟核算有助于对集群问题进行故障排除。部署集群后,使用 vSphere 客户端在每个虚拟机上启用此参数。
如需更多信息,请参阅红帽知识库文章。
15.4.20. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.8 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于远程健康监控。
15.4.21. 后续步骤
- 自定义集群。
- 如果需要,您可以选择不使用远程健康报告。
- 设置 registry 并配置 registry 存储。
- 可选: 查看来自 vSphere 问题检测器 Operator 的事件,以确定集群是否有权限或存储配置问题。