18.4. 使用自定义网络在 VMC 上安装集群
在 OpenShift Container Platform 版本 4.9 中,您可以使用安装程序置备的基础架构和自定义的网络配置选项在 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 上使用机器/机器集部署集群。
18.4.1. 为 vSphere 设置 VMC
您可以在 AWS 托管的 vSphere 集群上安装 OpenShift Container Platform,以便在混合云的内部和外部部署和管理应用程序。
在 VMware vSphere 上安装 OpenShift Container Platform 之前,您必须在 VMC 环境中配置几个选项。确保您的 VMC 环境有以下先决条件:
- 创建非独家、启用 DHCP、NSX-T 网络段和子网。其他虚拟机(VM)可以托管在子网上,但 OpenShift Container Platform 部署必须至少有 8 个 IP 地址。
在 DHCP 范围内分配两个 IP 地址,并使用反向 DNS 记录配置它们。
-
api.<cluster_name>.<base_domain> 的
DNS 记录,指向分配的 IP 地址。 -
*.apps.<cluster_name>.<base_domain> 的
DNS 记录,指向分配的 IP 地址。
-
配置以下防火墙规则:
- OpenShift Container Platform 计算网络和互联网之间的 ANY:ANY 防火墙规则。这供节点和应用用于下载容器镜像。
- 安装主机与端口 443 上的软件定义数据中心(SDDC)管理网络之间的 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
- 网络名称
Datastore 名称,如
WorkloadDatastore
注意建议您在集群安装完成后将 vSphere 集群移到 VMC
Compute-ResourcePool
资源池。
-
OpenShift Container Platform 集群名称,如
以堡垒形式部署到 VMC 的基于 Linux 的主机。
- 堡垒主机可以是红帽企业 Linux(RHEL)或任何其他基于 Linux 的主机;它必须具有互联网连接性,并且能够将 OVA 上传到 ESXi 主机。
将 OpenShift CLI 工具下载并安装到堡垒主机。
-
openshift-install
安装程序 -
OpenShift CLI(
oc
)工具
-
您不能将 VMware NSX Container Plugin 用于 Kubernetes(NCP),NSX 则不用作 OpenShift SDN。当前提供的 NSX 版本与 OpenShift Container Platform 认证的 NCP 版本不兼容。
但是,NSX DHCP 服务用于通过全堆栈自动化 OpenShift Container Platform 部署以及 Machine API 与 vSphere 集成手动或自动置备的节点来管理虚拟机 IP。另外,会创建 NSX 防火墙规则,以启用与 OpenShift Container Platform 集群以及堡垒主机和 VMC vSphere 主机之间的访问。
18.4.1.1. VMC Sizer 工具
AWS 上的 VMware Cloud 基于 AWS 裸机基础架构构建;这是运行 AWS 原生服务的同一裸机基础架构。部署 AWS 软件定义数据中心(SDDC)上的 VMware 云时,您可以使用这些物理服务器节点并以单一租户方式运行 VMware ESXi 管理程序。这意味着其他人无法使用 VMC 访问物理基础架构。务必要考虑需要多少个物理主机来托管您的虚拟基础架构。
为了确定这一点,VMware 在 AWS Sizer 上提供了 VMC。使用这个工具,您可以定义要在 VMC 上托管的资源:
- 工作负载类型
- 虚拟机总数
规范信息,如:
- 存储要求
- VCPU
- vRAM
- 过量使用比率
借助这些详细信息,sizer 工具可以根据 VMware 最佳实践生成报告,并推荐集群配置和您将需要的主机数量。
18.4.2. vSphere 先决条件
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 您调配了 块 registry 存储。如需有关持久性存储的更多信息,请参阅 了解持久性存储。
如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
18.4.3. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.9 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
18.4.4. VMware vSphere 基础架构要求
您必须在满足您使用的组件要求的 VMware vSphere 版本 6 或 7 实例上安装 OpenShift Container Platform 集群。
虚拟环境产品 | 所需的版本 |
---|---|
VM 硬件版本 | 13 或更高版本 |
vSphere ESXi 主机 | 6.5 或更高版本 |
vCenter 主机 | 6.5 或更高版本 |
在 VMware vSphere 版本 6.7U2 或更早的版本和虚拟硬件版本 13 上安装集群现已弃用。这些版本仍被完全支持,但将在 OpenShift Container Platform 以后的版本中删除支持。现在,硬件版本 15 是 OpenShift Container Platform 中 vSphere 虚拟机的默认版本。要为您的 vSphere 节点更新硬件版本,请参阅"更新在 vSphere 中运行的节点上的硬件"文章。
组件 | 最低支持版本 | 描述 |
---|---|---|
虚拟机监控程序 | 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 文档中的 编辑主机时间配置。
18.4.5. 网络连接要求
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。
查看有关所需网络端口的以下详细信息。
协议 | port | 描述 |
---|---|---|
ICMP | N/A | 网络可访问性测试 |
TCP |
| 指标 |
|
主机级别的服务,包括端口 9 | |
| Kubernetes 保留的默认端口 | |
| openshift-sdn | |
UDP |
| 虚拟可扩展 LAN (VXLAN) |
| Geneve | |
|
主机级别的服务,包括端口 | |
| IPsec IKE 数据包 | |
| IPsec NAT-T 数据包 | |
TCP/UDP |
| Kubernetes 节点端口 |
ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
协议 | port | 描述 |
---|---|---|
TCP |
| Kubernetes API |
协议 | port | 描述 |
---|---|---|
TCP |
| etcd 服务器和对等端口 |
其他资源
- 要为您的 vSphere 节点更新硬件版本,请参阅在 vSphere 中运行的节点上更新硬件。
18.4.6. vCenter 要求
在使用安装程序置备的基础架构的 vCenter 上安装 OpenShift Container Platform 集群前,您必须准备自己的环境。
所需的 vCenter 帐户权限
要在 vCenter 中安装 OpenShift Container Platform 集群,安装程序需要访问具有特权的帐户来读取和创建所需资源。使用具有全局管理特权的帐户是访问所有所需权限的最简单方法。
如果无法使用具有全局管理特权的帐户,则必须创建角色来授予 OpenShift Container Platform 集群安装所需的权限。虽然大多数权限都是需要的,但只有在安装程序计划置备一个文件夹来包含 vCenter 实例上的 OpenShift Container Platform 集群时,才需要一些权限,这是默认行为。您必须为指定对象创建或调整 vSphere 角色,才能授予所需的特权。
如果安装程序要创建 vSphere 虚拟机文件夹,则需要额外的角色。
例 18.7. 在 vSphere API 中安装所需的角色和权限
适用于角色的 vSphere 对象 | 必要时 | vSphere API 中所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter 集群 | Always |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter | 如果安装程序创建虚拟机文件夹 |
|
例 18.8. 在 vCenter 图形用户界面 (GUI) 中安装所需的角色和权限
适用于角色的 vSphere 对象 | 必要时 | vCenter GUI 中所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter 集群 | 如果在集群 root 中创建虚拟机 |
|
vSphere vCenter 资源池 | 如果提供了现有的资源池 |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter | 如果安装程序创建虚拟机文件夹 |
|
此外,用户需要一些 ReadOnly
权限,一些角色需要相应的权限来将权限代理到子对象。这些设置会因您是否将集群安装到现有文件夹而有所不同。
例 18.9. 所需的权限和传播设置
vSphere object | 文件夹类型 | 传播到子对象 | 所需的权限 |
---|---|---|---|
vSphere vCenter | Always | False | 列出所需的权限 |
vSphere vCenter Datacenter | 现有文件夹 | False |
|
安装程序创建文件夹 | true | 列出所需的权限 | |
vSphere vCenter 集群 | Always | true | 列出所需的权限 |
vSphere vCenter 数据存储 | Always | False | 列出所需的权限 |
vSphere Switch | Always | False |
|
vSphere 端口组 | Always | False | 列出所需的权限 |
vSphere vCenter 虚拟机文件夹 | 现有文件夹 | 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 标签类别
- 1 标签
虚拟机:
- 1 个模板
- 1 个临时 bootstrap 节点
- 3 个 control plane 节点
- 3 个计算机器
虽然这些资源使用 856 GB 存储,但 bootstrap 节点会在集群安装过程中销毁。使用标准集群至少需要 800 GB 存储。
如果部署更多计算机器,OpenShift Container Platform 集群将使用更多存储。
集群限制
可用资源因集群而异。vCenter 中可能的集群数量主要受可用存储空间以及对所需资源数量的限制。确保考虑集群创建的 vCenter 资源的限制和部署集群所需的资源,如 IP 地址和网络。
网络要求
网络必须使用 DHCP,并确保 DHCP 服务器被配置为为集群机器提供持久的 IP 地址。您必须将默认网关配置为使用 DHCP 服务器。所有节点必须位于同一 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 节点)为目标的负载均衡器。此记录必须由集群外的客户端和集群中的所有节点解析。 |
18.4.7. 为集群节点 SSH 访问生成密钥对
在 OpenShift Container Platform 安装过程中,您可以为安装程序提供 SSH 公钥。密钥通过它们的 Ignition 配置文件传递给 Red Hat Enterprise Linux CoreOS(RHCOS)节点,用于验证对节点的 SSH 访问。密钥添加到每个节点上 core
用户的 ~/.ssh/authorized_keys
列表中,这将启用免密码身份验证。
将密钥传递给节点后,您可以使用密钥对作为用户 核心
通过 SSH 连接到 RHCOS 节点。若要通过 SSH 访问节点,必须由 SSH 为您的本地用户管理私钥身份。
如果要通过 SSH 连接到集群节点来执行安装调试或灾难恢复,则必须在安装过程中提供 SSH 公钥。./openshift-install gather
命令还需要在集群节点上设置 SSH 公钥。
不要在生产环境中跳过这个过程,在生产环境中需要灾难恢复和调试。
您必须使用本地密钥,而不是使用特定平台方法配置 的密钥,如 AWS 密钥对。
流程
如果您在本地计算机上没有可用于在集群节点上进行身份验证的现有 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 代理(如果尚未添加)。在集群节点上,或者要使用
./openshift-install gather
命令,需要对该密钥进行 SSH 代理管理,才能在集群节点上进行免密码 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.pub
输出示例
Identity added: /home/<you>/<path>/<file_name> (<computer_name>)
后续步骤
- 安装 OpenShift Container Platform 时,为安装程序提供 SSH 公钥。
18.4.8. 获取安装程序
在安装 OpenShift Container Platform 之前,将安装文件下载到本地计算机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,本地磁盘空间为 500 MB
流程
- 访问 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。
18.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 证书。
<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
18.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 密钥。- Select vsphere 作为目标平台。
- 指定 vCenter 实例的名称。
指定创建集群所需的权限的 vCenter 帐户的用户名和密码。
安装程序连接到您的 vCenter 实例。
- 选择要连接的 vCenter 实例中的数据中心。
- 选择要使用的默认 vCenter 数据存储。
- 选择要在其中安装 OpenShift Container Platform 集群的 vCenter 集群。安装程序使用 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
文件会在安装过程中消耗掉。如果要重复使用该文件,您必须立即备份该文件。
18.4.10.1. 安装配置参数
在部署 OpenShift Container Platform 集群前,您可以提供参数值来描述托管集群的云平台中的帐户,并选择性地自定义集群平台。在创建 install-config.yaml
安装配置文件时,您可以通过命令行为所需参数提供值。如果自定义集群,您可以修改 install-config.yaml
文件以提供有关平台的更多详情。
安装后,您无法在 install-config.yaml
文件中修改这些参数。
openshift-install
命令不验证参数的字段名称。如果指定了不正确的名称,则不会创建相关的文件或对象,且不会报告错误。确保指定的任何参数的字段名称都正确。
18.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" } } } |
18.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 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16 |
|
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
18.4.10.1.3. 可选的配置参数
下表描述了可选的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
| 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
| 组成计算节点的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在计算机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
| 组成 control plane 的机器的配置。 |
|
|
决定池中机器的指令集合架构。目前不支持异构集群,因此所有池都必须指定相同的架构。有效值为 | 字符串 |
|
是否在 control plane 机器上启用或禁用并发多 重要 如果您禁用并发多线程,请确保您的容量规划考虑机器性能显著降低的情况。 |
|
|
使用 |
|
|
使用 |
|
| 要置备的 control plane 机器数量。 |
唯一支持的值是 |
| Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 注意 不是所有 CCO 模式都支持所有云供应商。如需有关 CCO 模式的更多信息,请参阅集群 Operator 参考内容中的 Cloud Credential Operator 条目。 注意
如果您的 AWS 帐户启用了服务控制策略 (SCP),您必须将 |
|
|
启用或禁用 FIPS 模式。默认值为 重要
只有在 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
| release-image 内容的源和存储库。 |
对象数组。包括一个 |
|
使用 | 字符串 |
| 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
| 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
非云平台不支持将此字段设置为 |
| 用于验证集群机器访问的 SSH 密钥或密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 | 一个或多个密钥。例如: sshKey: <key1> <key2> <key3> |
18.4.10.1.4. 其他 VMware vSphere 配置参数
下表描述了其他 VMware vSphere 配置参数:
参数 | 描述 | 值 |
---|---|---|
| vCenter 服务器的完全限定主机名或 IP 地址。 | 字符串 |
| 用于连接 vCenter 实例的用户名。此用户必须至少具有 vSphere 中 静态或动态持久性卷置备 所需的角色和权限。 | 字符串 |
| vCenter 用户名的密码。 | 字符串 |
| 要在 vCenter 实例中使用的数据中心的名称。 | 字符串 |
| 用于调配卷的默认数据存储名称。 | 字符串 |
| 可选。安装程序创建虚拟机的现有文件夹的绝对路径。如果没有提供这个值,安装程序会创建一个文件夹,它的名称为 datacenter 虚拟机文件夹中的基础架构 ID。 |
字符串,如 |
| 包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。 | 字符串 |
| 安装 OpenShift Container Platform 集群的 vCenter 集群。 | 字符串 |
| 为 control plane API 访问配置的虚拟 IP(VIP)地址。 |
IP 地址,如 |
| 为集群入口配置的虚拟 IP(VIP)地址。 |
IP 地址,如 |
18.4.10.1.5. 可选的 VMware vSphere 机器池配置参数
下表描述了可选的 VMware vSphere 机器池配置参数:
参数 | 描述 | 值 |
---|---|---|
| 安装程序从中下载 RHCOS 镜像的位置。您必须设置此参数才能在受限网络中执行安装。 |
HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。例如: |
| 以 GB 为单位的磁盘大小。 | 整数 |
|
用于分配虚拟机的虚拟处理器内核总数。 | 整数 |
|
虚拟机中每个插槽的内核数。虚拟机上的虚拟套接字数量为 platform | 整数 |
| 以 MB 为单位的虚拟机内存大小。 | 整数 |
18.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 和 32 GB RAM。
- 4 7
- 可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
- 8
- 您在 DNS 记录中指定的集群名称。
- 9
- 要在其中安装 OpenShift Container Platform 集群的 vSphere 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
18.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
命名空间中生成名为user-ca-bundle
的配置映射来保存额外的 CA 证书。如果您提供additionalTrustBundle
和至少一个代理设置,则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
对象,且无法创建额外的代理。
18.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 清单创建
清单文件后,您可以只使用您要修改的字段定义自定义 Cluster Network Operator 清单。您可以使用 清单指定高级网络配置。
您不能覆盖在 stage 2 阶段 1 中在 install-config.yaml
文件中指定的值。但是,您可以在第 2 阶段进一步自定义集群网络供应商。
18.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/
目录。
18.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
对象的字段来为集群指定集群网络供应商配置。
18.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(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为 此值在集群安装后无法更改。 |
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
| 指定一个空对象来启用 IPsec 加密。此值在集群安装后无法更改。 |
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
字段 | 类型 | 描述 |
---|---|---|
| 整数 |
每个节点每秒生成一次的消息数量上限。默认值为每秒 |
| 整数 |
审计日志的最大大小,以字节为单位。默认值为 |
| 字符串 | 以下附加审计日志目标之一:
|
| 字符串 |
syslog 工具,如 as |
OVN-Kubernetes 配置示例
defaultNetwork: type: OVNKubernetes ovnKubernetesConfig: mtu: 1400 genevePort: 6081 ipsecConfig: {}
kubeProxyConfig object configuration
kubeProxyConfig
对象的值在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意
由于 OpenShift Container Platform 4.3 及更高版本中引进了性能改进,不再需要调整 |
|
|
刷新 kubeProxyConfig: proxyArguments: iptables-min-sync-period: - 0s |
18.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 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
重要您不得删除安装程序或安装程序创建的文件。需要这两者才能删除集群。
-
安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
18.4.15. 通过下载二进制文件安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.9 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.9 Linux 客户端 条目旁边的 Download Now,再保存文件。
解包存档:
$ tar xvf <file>
将
oc
二进制文件放到PATH 中的目录中
。要查看您的
PATH
,请执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
在 Windows 上安装 OpenShift CLI
您可以按照以下流程在 Windows 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 在 Version 下拉菜单中选择相应的版本。
- 单击 OpenShift v4.9 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.9 MacOSX Client 条目旁边的 Download Now,再保存文件。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
安装 OpenShift CLI 后,可以使用 oc
命令:
$ oc <command>
18.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
18.4.17. 创建 registry 存储
安装集群后,必须为 registry Operator 创建存储。
18.4.17.1. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置,将 managementState
从 Removed
切换到 Managed
。
Prometheus 控制台提供了一个 ImageRegistryRemoved
警报,例如:
"镜像注册表已被删除。镜像流标签、
BuildConfig 和
DeploymentConfig,
引用 ImageStreamTags
可能无法正常工作。Please configure storage and update config to Managed state by
edit configs.imageregistry.operator.openshift.io."
18.4.17.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
18.4.17.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- 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
18.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。
18.4.18. 备份 VMware vSphere 卷
OpenShift Container Platform 将新卷作为独立持久性磁盘置备,以在集群中的任何节点上自由附加和分离卷。因此,无法备份使用快照的卷,也无法从快照中恢复卷。如需更多信息 ,请参阅快照限制。
流程
创建持久性卷的备份:
- 停止使用该持久卷的应用。
- 克隆持久性卷。
- 重新启动应用程序。
- 创建克隆的卷的备份。
- 删除克隆的卷。
18.4.19. Steal clock accounting
默认情况下,安装程序会在不启用 steal clock accounting 参数 (stealclock.enabled
) 的情况下置备集群的虚拟机。启用 steal clock accounting 助于对集群问题进行故障排除。部署集群后,使用 vSphere 客户端在每个虚拟机上启用此参数。
如需更多信息,请参阅红帽知识库文章。
18.4.20. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.9 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
18.4.21. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 设置 registry 并配置 registry 存储。
- 可选: 查看 vSphere 问题检测器 Operator 中的事件,以确定集群是否有权限或存储配置问题。