在 vSphere 上安装
在 vSphere 上安装 OpenShift Container Platform
摘要
第 1 章 安装方法
您可以使用各种不同的安装方法在 vSphere 上安装 OpenShift Container Platform 集群。每种方法都有可能使其更适合不同用例的质量,比如在断开连接的环境中安装集群,或使用最小配置和置备安装集群。
1.1. 支持的安装程序
您可以使用 Assisted Installer 安装 OpenShift Container Platform。这个方法不需要安装程序的设置,对于 vSphere 等连接的环境来说是理想的选择。使用 Assisted Installer 安装还提供与 vSphere 集成,从而启用自动扩展。如需了解更多详细信息,请参阅使用 Assisted Installer 安装内部集群。
1.2. 基于代理的安装程序
您可以使用基于代理的安装程序在 vSphere 上安装 OpenShift Container Platform 集群。基于代理的安装程序可以用来使用可引导镜像在断开连接的环境中引导内部服务器。使用基于代理的安装程序,用户还可以灵活地配置基础架构、自定义网络配置并在断开连接的环境中自定义安装。如需了解更多详细信息 ,请参阅准备 使用基于代理的安装程序安装。
1.3. 安装程序置备的基础架构安装
您可以使用安装程序置备的基础架构在 vSphere 上安装 OpenShift Container Platform。安装程序置备的基础架构允许安装程序预配置和自动置备 OpenShift Container Platform 所需的资源。安装程序置备的基础架构适用于在使用断开连接的网络的环境中安装,安装程序为集群置备底层基础架构。
- 在 vSphere 上安装集群 : 您可以使用安装程序置备的基础架构安装在 vSphere 上安装 OpenShift Container Platform。
- 使用自定义在 vSphere 上安装集群 : 您可以使用安装程序置备的基础架构安装和默认自定义选项在 vSphere 上安装 OpenShift Container Platform。
- 使用自定义网络在 vSphere 上安装集群:您可以使用网络自定义 在安装程序置备的 vSphere 基础架构上安装 OpenShift Container Platform。您可以在安装过程中自定义 OpenShift Container Platform 网络配置,以便集群可以与现有 IP 地址分配共存并遵循您的网络要求。
- 在受限网络中的 vSphere 上安装集群 :您可以通过创建安装发行内容的内部镜像在受限网络中的 VMware vSphere 基础架构上安装集群。您可以使用此方法在互联网不可见的内部网络中部署 OpenShift Container Platform。
1.4. 用户置备的基础架构安装
您可以使用用户置备的基础架构在 vSphere 上安装 OpenShift Container Platform。用户置备的基础架构要求用户置备 OpenShift Container Platform 所需的所有资源。如果不使用安装程序置备的基础架构,您必须自己管理和维护集群资源。
- 使用用户置备的基础架构在 vSphere 上安装集群: 您可以在您置备的 VMware vSphere 基础架构上安装 OpenShift Container Platform。
- 使用用户置备的基础架构在 vSphere 上安装集群:您可以使用自定义的网络 配置选项在 VMware vSphere 基础架构上安装 OpenShift Container Platform。
- 在带有用户置备的受限网络中的 vSphere 上安装集群: OpenShift Container Platform 可以在受限网络中置备的 VMware vSphere 基础架构上安装。
执行用户置备的基础架构安装的步骤仅作为示例。使用您提供的基础架构安装集群需要了解 vSphere 平台和 OpenShift Container Platform 的安装过程。使用用户置备的基础架构安装说明作为指南 ; 您可以通过其他方法创建所需的资源。
1.5. 其他资源
第 2 章 安装程序置备的基础架构
2.1. vSphere 安装要求
在使用安装程序置备的基础架构开始安装前,请确保您的 vSphere 环境满足以下安装要求。
2.1.1. VMware vSphere 基础架构要求
您必须在满足您使用的组件要求的 VMware vSphere 实例之一上安装 OpenShift Container Platform 集群:
- Version 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本
- Version 8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本
这两个版本都支持 Container Storage Interface (CSI) 迁移,它在 OpenShift Container Platform 4.14 中默认启用。
您可以在内部或 VMware Cloud 验证的供应商中托管 VMware vSphere 基础架构,以满足下表中概述的要求:
虚拟环境产品 | 所需的版本 |
---|---|
VMware 虚拟硬件 | 15 或更高版本 |
vSphere ESXi 主机 | 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或r VMware Cloud Foundation 5.0 或更新版本 |
vCenter 主机 | 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或r VMware Cloud Foundation 5.0 或更新版本 |
您必须确保在安装 OpenShift Container Platform 前同步 ESXi 主机上的时间。请参阅 VMware 文档中的 编辑主机时间配置。
组件 | 最低支持版本 | 描述 |
---|---|---|
虚拟机监控程序(Hypervisor) | vSphere 7.0 Update 2 或更新版本,VMware Cloud Foundation 4.3 或更新版本,vSphere 8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本,带有 virtual hardware version 15 | 此 hypervisor 版本是 Red Hat Enterprise Linux CoreOS (RHCOS) 支持的最低版本。有关与 RHCOS 兼容的 Red Hat Enterprise Linux (RHEL) 最新版本中支持的硬件的更多信息,请参阅红帽客户门户网站中的硬件。 |
可选: Networking(NSX-T) | vSphere 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,vSphere 8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本 | 有关 NSX 和 OpenShift Container Platform 兼容性的更多信息,请参阅 VMware 的 NSX 容器插件文档中的发行注记部分。 |
CPU 微架构 | x86-64-v2 或更高版本 | OpenShift 4.13 及更高版本基于 RHEL 9.2 主机操作系统,这提高了 x86-64-v2 的微架构要求。请参阅 RHEL Microarchitecture 要求文档。您可以按照这个 KCS 文章中介绍的步骤验证兼容性。 |
为确保在 Oracle® Cloud Infrastructure (OCI) 和 Oracle® Cloud VMware Solution (OCVS) 服务上运行的集群工作负载的最佳性能条件,请确保块卷的卷性能单元 (VPU) 为您的工作负载的大小。
以下列表提供了一些有关选择特定性能需要 VPU 的指导信息:
- 测试或概念验证环境:100 GB,20 到 30 个 VPU。
- 基础生产环境:500 GB 和 60 个 VPU.
- 高度使用生产环境:超过 500 GB,100 个或更多 VPU。
考虑分配额外的 VPU,以便为更新和扩展活动提供足够的容量。请参阅块卷性能级别(Oracle 文档)。
2.1.2. 网络连接要求
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。
查看有关所需网络端口的以下详细信息。
协议 | port | 描述 |
---|---|---|
VRRP | N/A | keepalived 需要 |
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 服务器和对等端口 |
2.1.3. VMware vSphere CSI Driver Operator 要求
要安装 vSphere CSI Driver Operator,必须满足以下要求:
- VMware vSphere 版本: 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本
- vCenter 版本: 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本
- 硬件版本 15 或更高版本的虚拟机
- 集群中还没有安装第三方 vSphere CSI 驱动程序
如果集群中存在第三方 vSphere CSI 驱动程序,OpenShift Container Platform 不会覆盖它。存在第三方 vSphere CSI 驱动程序可防止 OpenShift Container Platform 更新到 OpenShift Container Platform 4.13 或更高版本。
只有在安装清单中使用 platform: vsphere
部署的集群中才支持 VMware vSphere CSI Driver Operator。
其他资源
- 要删除第三方 vSphere CSI 驱动程序,请参阅删除第三方 vSphere CSI 驱动程序。
- 要为您的 vSphere 节点更新硬件版本,请参阅在 vSphere 中运行的节点上更新硬件。
2.1.4. vCenter 要求
在使用安装程序置备的基础架构的 vCenter 上安装 OpenShift Container Platform 集群前,您必须准备自己的环境。
所需的 vCenter 帐户权限
要在 vCenter 中安装 OpenShift Container Platform 集群,安装程序需要访问具有特权的帐户来读取和创建所需资源。使用具有全局管理特权的帐户是访问所有所需权限的最简单方法。
如果无法使用具有全局管理特权的帐户,则必须创建角色来授予 OpenShift Container Platform 集群安装所需的权限。虽然大多数权限都是需要的,但只有在安装程序计划置备一个文件夹来包含 vCenter 实例上的 OpenShift Container Platform 集群时,才需要一些权限,这是默认行为。您必须为指定对象创建或调整 vSphere 角色,才能授予所需的特权。
如果安装程序要创建 vSphere 虚拟机文件夹,则需要额外的角色。
例 2.1. 在 vSphere API 中安装所需的角色和权限
适用于角色的 vSphere 对象 | 必要时 | vSphere API 中所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter 集群 | 如果在集群 root 中创建虚拟机 |
|
vSphere vCenter 资源池 | 如果提供了现有的资源池 |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter |
如果安装程序创建虚拟机文件夹对于 UPI,如果集群没有使用 Machine API,则 |
|
例 2.2. 在 vCenter 图形用户界面 (GUI) 中安装所需的角色和权限
适用于角色的 vSphere 对象 | 必要时 | vCenter GUI 中所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter 集群 | 如果在集群 root 中创建虚拟机 |
|
vSphere vCenter 资源池 | 如果提供了现有的资源池 |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter |
如果安装程序创建虚拟机文件夹对于 UPI,如果集群没有使用 Machine API,则 |
|
此外,用户需要一些 ReadOnly
权限,一些角色需要相应的权限来将权限代理到子对象。这些设置会因您是否将集群安装到现有文件夹而有所不同。
例 2.3. 所需的权限和传播设置
vSphere object | 必要时 | 传播到子对象 | 所需的权限 |
---|---|---|---|
vSphere vCenter | Always | False | 列出所需的权限 |
vSphere vCenter Datacenter | 现有文件夹 | False |
|
安装程序创建文件夹 | True | 列出所需的权限 | |
vSphere vCenter 集群 | 现有资源池 | False |
|
集群 root 中的虚拟机 | True | 列出所需的权限 | |
vSphere vCenter 数据存储 | Always | False | 列出所需的权限 |
vSphere Switch | Always | False |
|
vSphere 端口组 | Always | False | 列出所需的权限 |
vSphere vCenter 虚拟机文件夹 | 现有文件夹 | True | 列出所需的权限 |
vSphere vCenter 资源池 | 现有资源池 | True | 列出所需的权限 |
有关只使用所需权限创建帐户的更多信息,请参阅 vSphere 文档中的 vSphere 权限和用户管理任务。
将 OpenShift Container Platform 与 vMotion 搭配使用
如果要在 vSphere 环境中使用 vMotion,请在安装 OpenShift Container Platform 集群前考虑以下内容。
- 使用 Storage vMotion 可能会导致问题且不受支持。
使用 VMware compute vMotion 为 OpenShift Container Platform 计算机器和 control plane 机器迁移工作负载通常被支持,通常意味着您满足 vMotion 的所有 VMware 最佳实践。
为了帮助确保计算和 control plane 节点的正常运行时间,请确保遵循 VMware 最佳实践进行 vMotion,并使用 VMware 反关联性规则提高 OpenShift Container Platform 在维护或硬件问题期间的可用性。
有关 vMotion 和 anti-affinity 规则的更多信息,请参阅 VMware vSphere 文档以了解 vMotion 网络要求和虚拟机反关联性规则。
- 如果您在 pod 中使用 VMware vSphere 卷,请手动或通过 Storage vMotion 在数据存储间迁移虚拟机,这会导致 OpenShift Container Platform 持久性卷(PV)对象中的无效引用,这可能会导致数据丢失。
OpenShift Container Platform 不支持在数据存储间有选择地迁移 VMDK,使用数据存储集群进行虚拟机置备或动态或静态置备 PV,或使用作为数据存储集群一部分的数据存储来动态或静态置备 PV。
重要您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,使用 Storage vMotion 的存储分布式资源调度程序(SDRS)会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage DRS 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。
集群资源
当您部署使用安装程序置备的基础架构的 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 租期中,您必须将 DHCP 配置为使用默认网关。
如果要使用静态 IP 地址置备节点,则不需要将 DHCP 用于网络。
如果要安装到受限环境中,受限网络中的虚拟机必须有权访问 vCenter,以便它可以置备和管理节点、持久性卷声明 (PVC) 和其他资源。
确保集群中的每个 OpenShift Container Platform 节点都可以访问通过 DHCP 发现的网络时间协议 (NTP) 服务器。没有 NTP 服务器即可安装。但是,异步服务器时钟将导致错误,NTP 服务器会阻止。
另外,在安装 OpenShift Container Platform 集群前,您必须创建以下网络资源:
所需的 IP 地址
对于使用 DHCP 的网络,安装程序置备的 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 节点)为目标的负载均衡器。此记录必须由集群外的客户端和集群中的所有节点解析。 |
vSphere 节点的静态 IP 地址
您可以在没有动态主机配置协议(DHCP)的环境中置备 bootstrap、control plane 和计算节点,以使用静态 IP 地址配置。要配置此环境,您必须为 install-config.yaml
文件中的 platform.vsphere.hosts.role
参数提供值。
vSphere 节点的静态 IP 地址只是一个技术预览功能。技术预览功能不受红帽产品服务等级协议(SLA)支持,且功能可能并不完整。红帽不推荐在生产环境中使用它们。这些技术预览功能可以使用户提早试用新的功能,并有机会在开发阶段提供反馈意见。
有关红帽技术预览功能支持范围的更多信息,请参阅技术预览功能支持范围。
默认情况下,安装程序被配置为使用 DHCP 作为网络,但此网络具有有限的可配置功能。
在 install-config.yaml
文件中定义一个或多个机器池后,您可以为网络上的节点定义网络定义。确保网络定义数量与您为集群配置的机器池数量匹配。
指定不同角色的网络配置示例
# ... platform: vsphere: hosts: - role: bootstrap 1 networkDevice: ipAddrs: - 192.168.204.10/24 2 gateway: 192.168.204.1 3 nameservers: 4 - 192.168.204.1 - role: control-plane networkDevice: ipAddrs: - 192.168.204.11/24 gateway: 192.168.204.1 nameservers: - 192.168.204.1 - role: control-plane networkDevice: ipAddrs: - 192.168.204.12/24 gateway: 192.168.204.1 nameservers: - 192.168.204.1 - role: control-plane networkDevice: ipAddrs: - 192.168.204.13/24 gateway: 192.168.204.1 nameservers: - 192.168.204.1 - role: compute networkDevice: ipAddrs: - 192.168.204.14/24 gateway: 192.168.204.1 nameservers: - 192.168.204.1 # ...
- 1
- 有效的网络定义值包括
bootstrap
、control-plane
和compute
。您必须在install-config.yaml
配置文件中至少列出一个bootstrap
网络定义。 - 2
- 列出安装程序传递给网络接口的 IPv4、IPv6 或两个 IP 地址。机器 API 控制器将所有配置的 IP 地址分配给默认网络接口。
- 3
- 网络接口的默认网关。
- 4
- 最多列出 3 个 DNS 名称服务器。重要
要为集群的 vSphere 节点启用静态 IP 地址的技术预览功能,您必须在
install-config.yaml
文件中包含featureSet:TechPreviewNoUpgrade
作为初始条目。
在部署集群以使用静态 IP 地址运行节点后,您可以扩展机器以使用这些静态 IP 地址之一。另外,您可以使用机器集将机器配置为使用配置的静态 IP 地址之一。
2.2. 准备使用安装程序置备的基础架构安装集群
您可以通过完成以下步骤,准备在 vSphere 上安装 OpenShift Container Platform 集群:
下载安装程序。
注意如果您要在断开连接的环境中安装,您可以从镜像内容中提取安装程序。如需更多信息 ,请参阅为断开连接的安装镜像镜像。
安装 OpenShift CLI (
oc
)。注意如果要在断开连接的环境中安装,请将
oc
安装到镜像主机上。- 生成 SSH 密钥对。您可以在部署后使用此密钥对在 OpenShift Container Platform 集群的节点上进行身份验证。
- 将 vCenter 的可信 root CA 证书添加到您的系统信任中。
2.2.1. 获取安装程序
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,至少有 1.2 GB 本地磁盘空间。
流程
- 进入 Red Hat Hybrid Cloud Console 上的 Cluster Type 页。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 在页的 Run it yourself 部分中选择您的基础架构供应商。
- 从 OpenShift 安装程序下的下拉菜单中选择您的主机操作系统和架构,然后点下载安装程序。
将下载的文件保存在要存储安装配置文件的目录中。
重要- 安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。删除集群需要这两个文件。
- 删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 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。
另外,您还可以从红帽客户门户网站检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您需要有一个有效的订阅才能访问此页。
2.2.2. 通过下载二进制文件安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.14 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.14 Linux Client 条目旁的 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 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.14 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
验证
安装 OpenShift CLI 后,可以使用
oc
命令:C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.14 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.14 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
验证
使用
oc
命令验证安装:$ oc <command>
2.2.3. 为集群节点 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
、ppc64le
和s390x
架构上安装使用 RHEL 加密库(这些加密库已提交给 NIST 用于 FIPS 140-2/140-3 验证)的 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 公钥。
2.2.4. 在您的系统信任中添加 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
2.3. 在 vSphere 上安装集群
在 OpenShift Container Platform 版本 4.14 中,您可以使用安装程序置备的基础架构在 VMware vSphere 实例上安装集群。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
2.3.1. 先决条件
- 您已完成了 准备使用安装程序置备的基础架构安装集群 中的任务。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
-
已为集群置备了 持久性存储。要部署私有镜像 registry,您的存储必须提供
ReadWriteMany
访问模式。 - OpenShift Container Platform 安装程序需要访问 vCenter 和 ESXi 主机上的端口 443。您确认可以访问端口 443。
- 如果您使用防火墙,您与管理员确认可以访问端口 443。control plane 节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,才能成功安装。
如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
2.3.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.14 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
2.3.3. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已确认主机上的云供应商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
可选:在创建集群时,配置外部负载均衡器来代替默认负载均衡器。
重要您不需要为安装程序指定 API 和 Ingress 静态地址。如果选择此配置,则必须采取额外的操作来定义接受每个引用的 vSphere 子网的 IP 地址的网络目标。请参阅"配置外部负载均衡器"一节。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 - 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
-
验证该目录是否具有
在提示符处提供值:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- Select vsphere 作为目标平台。
- 指定 vCenter 实例的名称。
指定创建集群所需的权限的 vCenter 帐户的用户名和密码。
安装程序连接到您的 vCenter 实例。
重要有些带有活动目录(AD)集成的 VMware vCenter Single Sign-On (SSO)环境可能主要要求您使用传统的登录方法,这需要
<domain>\
构造。要确保 vCenter 帐户权限正确检查,请考虑使用 User Principal Name (UPN)登录方法,如
<username>@<fully_qualified_domainname>
。- 选择要连接的 vCenter 实例中的数据中心。
选择要使用的默认 vCenter 数据存储。
注意数据存储和集群名称不能超过 60 个字符,因此请确保组合字符串长度不超过 60 个字符的限制。
- 选择要在其中安装 OpenShift Container Platform 集群的 vCenter 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
- 选择包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。
- 输入您为 control plane API 访问配置的虚拟 IP 地址。
- 输入您为集群入口配置的虚拟 IP 地址。
- 输入基域。这个基域必须与您配置的 DNS 记录中使用的域相同。
为集群输入描述性名称。集群名称必须与您配置的 DNS 记录中使用的相同。
注意数据存储和集群名称不能超过 60 个字符,因此请确保组合字符串长度不超过 60 个字符的限制。
- 粘贴 Red Hat OpenShift Cluster Manager 中的 pull secret。
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin
用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log
.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
... 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: "password" INFO Time elapsed: 36m22s
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
2.3.4. 使用 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
2.3.5. 创建 registry 存储
安装集群后,必须为 registry Operator 创建存储。
2.3.5.1. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置,将 managementState
从 Removed
切换到 Managed
。完成此操作后,您必须配置存储。
2.3.5.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
2.3.5.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- VMware vSphere 上有一个集群。
为集群置备的持久性存储,如 Red Hat OpenShift Data Foundation。
重要当您只有一个副本时,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
2.3.5.2.2. 为 VMware vSphere 配置块 registry 存储
要允许镜像 registry 在作为集群管理员升级过程中使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略
。
支持块存储卷,但不建议在生产环境中用于镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法具有多个副本。
流程
输入以下命令将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用
Recreate
rollout 策略,并只使用一个
副本运行:$ 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。
2.3.6. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.14 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
2.3.7. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 设置 registry 并配置 registry 存储。
- 可选: 查看 vSphere 问题检测器 Operator 中的事件,以确定集群是否有权限或存储配置问题。
2.4. 使用自定义在 vSphere 上安装集群
在 OpenShift Container Platform 版本 4.14 中,您可以使用安装程序置备的基础架构在 VMware vSphere 实例上安装集群。要自定义安装,请在安装集群前修改 install-config.yaml
文件中的参数。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
2.4.1. 先决条件
- 您已完成了 准备使用安装程序置备的基础架构安装集群 中的任务。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
-
已为集群置备了 持久性存储。要部署私有镜像 registry,您的存储必须提供
ReadWriteMany
访问模式。 - OpenShift Container Platform 安装程序需要访问 vCenter 和 ESXi 主机上的端口 443。您确认可以访问端口 443。
- 如果您使用防火墙,您与管理员确认可以访问端口 443。control plane 节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,才能成功安装。
如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
2.4.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.14 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
2.4.3. VMware vSphere 区域和区启用
您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。每个数据中心都可以运行多个集群。此配置降低了导致集群失败的硬件故障或网络中断的风险。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
VMware vSphere 区域和区启用功能需要 vSphere Container Storage Interface (CSI) 驱动程序作为集群中的默认存储驱动程序。因此,这个功能只在新安装的集群中可用。
对于从上一版本升级的集群,您必须为集群启用 CSI 自动迁移。然后,您可以为升级的集群配置多个区域和区域。
默认安装配置将集群部署到单个 vSphere 数据中心。如果要将集群部署到多个 vSphere 数据中心,您必须创建一个启用地区和区功能的安装配置文件。
默认 install-config.yaml
文件包含 vcenters
和 failureDomains
字段,您可以在其中为 OpenShift Container Platform 集群指定多个 vSphere 数据中心和集群。如果要在由单个数据中心组成的 vSphere 环境中安装 OpenShift Container Platform 集群,您可以将这些字段留空。
以下列表描述了为集群定义区和区域相关的术语:
-
故障域:建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 -
Region :指定 vCenter 数据中心。您可以使用
openshift-region
标签类别中的标签来定义区域。 -
Zone:指定一个 vCenter 集群。您可以使用
openshift-zone
标签类别中的标签来定义区。
如果您计划在 install-config.yaml
文件中指定多个故障域,则必须在创建配置文件前创建标签类别、区域标签和区域标签。
您必须为每个代表一个区域的 vCenter 数据中心创建一个 vCenter 标签。另外,您必须为比数据中心(代表一个区)中运行的每个集群创建一个 vCenter 标签。创建标签后,您必须将每个标签附加到对应的数据中心和集群。
下表概述了在单个 VMware vCenter 中运行的多个 vSphere 数据中心的区域、区域和标签之间的关系示例。
数据中心(区域) | 集群(区) | Tags |
---|---|---|
us-east | us-east-1 | us-east-1a |
us-east-1b | ||
us-east-2 | us-east-2a | |
us-east-2b | ||
us-west | us-west-1 | us-west-1a |
us-west-1b | ||
us-west-2 | us-west-2a | |
us-west-2b |
2.4.4. 创建安装配置文件
您可以自定义在 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>
,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
注意始终删除
~/.powervs
目录,以避免重复使用过时的配置。运行以下命令:$ rm -rf ~/.powervs
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- Select vsphere 作为目标平台。
- 指定 vCenter 实例的名称。
指定创建集群所需的权限的 vCenter 帐户的用户名和密码。
安装程序连接到您的 vCenter 实例。
选择要连接的 vCenter 实例中的数据中心。
注意创建安装配置文件后,您可以修改该文件以创建多个 vSphere 数据中心环境。这意味着您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。有关创建此环境的更多信息,请参阅名为 VMware vSphere 区域和区启用的部分。
选择要使用的默认 vCenter 数据存储。
警告您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,使用 Storage vMotion 的存储分布式资源调度程序(SDRS)会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage DRS 以避免 OpenShift Container Platform 集群的数据丢失问题。
您不能指定多个数据存储路径。如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。- 选择要在其中安装 OpenShift Container Platform 集群的 vCenter 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
- 选择包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。
- 输入您为 control plane API 访问配置的虚拟 IP 地址。
- 输入您为集群入口配置的虚拟 IP 地址。
- 输入基域。这个基域必须与您配置的 DNS 记录中使用的域相同。
为集群输入描述性名称。
您输入的集群名称必须与您在配置 DNS 记录时指定的集群名称匹配。
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。注意如果要安装三节点集群,请确保将
compute.replicas
参数设置为0
。这样可确保集群的 control plane 可以调度。如需更多信息,请参阅"在 vSphere 上安装三节点集群"。备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
其他资源
2.4.4.1. 安装程序置备的 VMware vSphere 集群的 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
apiVersion: v1 baseDomain: example.com 1 compute: 2 - architecture: amd64 name: <worker_node> platform: {} replicas: 3 controlPlane: 3 architecture: amd64 name: <parent_node> platform: {} replicas: 3 metadata: creationTimestamp: null name: test 4 platform: vsphere: 5 apiVIPs: - 10.0.0.1 failureDomains: 6 - name: <failure_domain_name> region: <default_region_name> server: <fully_qualified_domain_name> topology: computeCluster: "/<datacenter>/host/<cluster>" datacenter: <datacenter> datastore: "/<datacenter>/datastore/<datastore>" 7 networks: - <VM_Network_name> resourcePool: "/<datacenter>/host/<cluster>/Resources/<resourcePool>" 8 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" zone: <default_zone_name> ingressVIPs: - 10.0.0.2 vcenters: - datacenters: - <datacenter> password: <password> port: 443 server: <fully_qualified_domain_name> user: administrator@vsphere.local diskType: thin 9 fips: false pullSecret: '{"auths": ...}' sshKey: 'ssh-ed25519 AAAA...'
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 3
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 您在 DNS 记录中指定的集群名称。
- 5
- 可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
- 6
- 建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 - 7
- 保存虚拟机文件、模板和 ISO 镜像的 vSphere 数据存储路径。重要
您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,Storage vMotion 会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage vMotion 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。 - 8
- 可选:为创建机器提供现有资源池。如果没有指定值,安装程序将使用 vSphere 集群的 root 资源池。
- 9
- vSphere 磁盘置备方法。
在 OpenShift Container Platform 4.12 及更新的版本中,apiVIP
和 ingressVIP
配置设置已弃用。反之,使用列表格式在 apiVIPs
和 ingressVIPs
配置设置中输入值。
2.4.4.2. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 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
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
2.4.4.3. 为 VMware vCenter 配置区域和区域
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。
之前版本的 OpenShift Container Platform 的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
会提示您显示在配置文件中已弃用字段的警告信息。
这个示例使用 govc
命令。govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽支持团队不维护 govc
命令。有关下载和安装 govc
的说明,请参阅 VMware 文档网站
先决条件
您有一个现有的
install-config.yaml
安装配置文件。重要您必须为 OpenShift Container Platform 集群指定一个故障域,以便您可以为 VMware vCenter 服务器置备数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中置备虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
流程
输入以下
govc
命令行工具命令,以创建openshift-region
和openshift-zone
vCenter 标签类别:重要如果为
openshift-region
和openshift-zone
vCenter 标签类别指定不同的名称,OpenShift Container Platform 集群的安装会失败。$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为您要部署集群的每个区域 vSphere 数据中心创建一个 region 标签,请在终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为您要部署集群的每个 vSphere 集群创建一个区标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
输入以下命令将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<datacenter_1>
输入以下命令将区标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<datacenter_1>/host/vcs-mdcnc-workload-1
- 进入包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
在 vSphere 数据中心中定义的多个数据中心的 install-config.yaml
文件示例
--- compute: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- controlPlane: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- platform: vsphere: vcenters: --- datacenters: - <datacenter1_name> - <datacenter2_name> failureDomains: - name: <machine_pool_zone_1> region: <region_tag_1> zone: <zone_tag_1> server: <fully_qualified_domain_name> topology: datacenter: <datacenter1> computeCluster: "/<datacenter1>/host/<cluster1>" networks: - <VM_Network1_name> datastore: "/<datacenter1>/datastore/<datastore1>" resourcePool: "/<datacenter1>/host/<cluster1>/Resources/<resourcePool1>" folder: "/<datacenter1>/vm/<folder1>" - name: <machine_pool_zone_2> region: <region_tag_2> zone: <zone_tag_2> server: <fully_qualified_domain_name> topology: datacenter: <datacenter2> computeCluster: "/<datacenter2>/host/<cluster2>" networks: - <VM_Network2_name> datastore: "/<datacenter2>/datastore/<datastore2>" resourcePool: "/<datacenter2>/host/<cluster2>/Resources/<resourcePool2>" folder: "/<datacenter2>/vm/<folder2>" ---
2.4.5. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已确认主机上的云供应商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
可选:在创建集群时,配置外部负载均衡器来代替默认负载均衡器。
重要您不需要为安装程序指定 API 和 Ingress 静态地址。如果选择此配置,则必须采取额外的操作来定义接受每个引用的 vSphere 子网的 IP 地址的网络目标。请参阅"配置外部负载均衡器"一节。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin
用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log
.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
... 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: "password" INFO Time elapsed: 36m22s
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
2.4.6. 使用 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
2.4.7. 创建 registry 存储
安装集群后,必须为 registry Operator 创建存储。
2.4.7.1. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置,将 managementState
从 Removed
切换到 Managed
。完成此操作后,您必须配置存储。
2.4.7.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
2.4.7.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- VMware vSphere 上有一个集群。
为集群置备的持久性存储,如 Red Hat OpenShift Data Foundation。
重要当您只有一个副本时,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
2.4.7.2.2. 为 VMware vSphere 配置块 registry 存储
要允许镜像 registry 在作为集群管理员升级过程中使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略
。
支持块存储卷,但不建议在生产环境中用于镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法具有多个副本。
流程
输入以下命令将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用
Recreate
rollout 策略,并只使用一个
副本运行:$ 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。
2.4.8. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.14 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
2.4.9. 外部负载均衡器的服务
您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。
配置外部负载均衡器取决于您的供应商的负载均衡器。
本节中的信息和示例仅用于指导目的。有关供应商负载均衡器的更多信息,请参阅供应商文档。
红帽支持外部负载均衡器的以下服务:
- Ingress Controller
- OpenShift API
- OpenShift MachineConfig API
您可以选择是否为外部负载均衡器配置一个或多个所有服务。仅配置 Ingress Controller 服务是一个通用的配置选项。要更好地了解每个服务,请查看以下图表:
图 2.1. 显示 OpenShift Container Platform 环境中运行的 Ingress Controller 的网络工作流示例
![显示 OpenShift Container Platform 环境中运行 Ingress Controller 的示例网络工作流的镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/c35799e5c44cc8a51b928b5494bd9f84/external-load-balancer-default.png)
图 2.2. 显示 OpenShift Container Platform 环境中运行的 OpenShift API 的网络工作流示例
![显示 OpenShift Container Platform 环境中操作的 OpenShift API 网络工作流示例镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/20b274ff0baf5743ab5f1a57d2dfdc40/external-load-balancer-openshift-api.png)
图 2.3. 显示 OpenShift Container Platform 环境中运行的 OpenShift MachineConfig API 的网络工作流示例
![显示 OpenShift Container Platform 环境中操作的 OpenShift MachineConfig API 示例网络工作流的镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/647ca6d4bc4b5c847872ccda34e79ce5/external-load-balancer-machine-config-api.png)
外部负载均衡器支持以下配置选项:
- 使用节点选择器将 Ingress Controller 映射到一组特定的节点。您必须为这个集合中的每个节点分配一个静态 IP 地址,或者将每个节点配置为从动态主机配置协议(DHCP)接收相同的 IP 地址。基础架构节点通常接收这种类型的配置。
以子网上的所有 IP 地址为目标。此配置可减少维护开销,因为您可以在这些网络中创建和销毁节点,而无需重新配置负载均衡器目标。如果您使用较小的网络上的机器集来部署入口 pod,如
/27
或/28
,您可以简化负载均衡器目标。提示您可以通过检查机器配置池的资源来列出网络中存在的所有 IP 地址。
在为 OpenShift Container Platform 集群配置外部负载均衡器前,请考虑以下信息:
- 对于前端 IP 地址,您可以对前端 IP 地址、Ingress Controller 的负载均衡器和 API 负载均衡器使用相同的 IP 地址。查看厂商的文档以获取此功能的相关信息。
对于后端 IP 地址,请确保 OpenShift Container Platform control plane 节点的 IP 地址在外部负载均衡器的生命周期内不会改变。您可以通过完成以下操作之一来实现此目的:
- 为每个 control plane 节点分配一个静态 IP 地址。
- 将每个节点配置为在每次节点请求 DHCP 租期时从 DHCP 接收相同的 IP 地址。根据供应商,DHCP 租期可能采用 IP 保留或静态 DHCP 分配的形式。
- 在 Ingress Controller 后端服务的外部负载均衡器中手动定义运行 Ingress Controller 的每个节点。例如,如果 Ingress Controller 移到未定义节点,则可能会出现连接中断。
2.4.9.1. 配置外部负载均衡器
您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。
在配置外部负载均衡器前,请确定您阅读了外部负载均衡器的"服务"部分。
阅读适用于您要为外部负载均衡器配置的服务的以下先决条件。
MetalLB,在集群中运行,充当外部负载均衡器。
OpenShift API 的先决条件
- 您定义了前端 IP 地址。
TCP 端口 6443 和 22623 在负载均衡器的前端 IP 地址上公开。检查以下项:
- 端口 6443 提供对 OpenShift API 服务的访问。
- 端口 22623 可以为节点提供 ignition 启动配置。
- 前端 IP 地址和端口 6443 可以被您的系统的所有用户访问,其位置为 OpenShift Container Platform 集群外部。
- 前端 IP 地址和端口 22623 只能被 OpenShift Container Platform 节点访问。
- 负载均衡器后端可以在端口 6443 和 22623 上与 OpenShift Container Platform control plane 节点通信。
Ingress Controller 的先决条件
- 您定义了前端 IP 地址。
- TCP 端口 443 和 80 在负载均衡器的前端 IP 地址上公开。
- 前端 IP 地址、端口 80 和端口 443 可以被您的系统所有用户访问,以及 OpenShift Container Platform 集群外部的位置。
- 前端 IP 地址、端口 80 和端口 443 可被 OpenShift Container Platform 集群中运行的所有节点访问。
- 负载均衡器后端可以在端口 80、443 和 1936 上与运行 Ingress Controller 的 OpenShift Container Platform 节点通信。
健康检查 URL 规格的先决条件
您可以通过设置健康检查 URL 来配置大多数负载均衡器,以确定服务是否可用或不可用。OpenShift Container Platform 为 OpenShift API、Machine Configuration API 和 Ingress Controller 后端服务提供这些健康检查。
以下示例演示了以前列出的后端服务的健康检查规格:
Kubernetes API 健康检查规格示例
Path: HTTPS:6443/readyz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Machine Config API 健康检查规格示例
Path: HTTPS:22623/healthz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Ingress Controller 健康检查规格示例
Path: HTTP:1936/healthz/ready Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 5 Interval: 10
流程
配置 HAProxy Ingress Controller,以便您可以在端口 6443、443 和 80 上从负载均衡器访问集群:
HAProxy 配置示例
#... listen my-cluster-api-6443 bind 192.168.1.100:6443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /readyz http-check expect status 200 server my-cluster-master-2 192.168.1.101:6443 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:6443 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:6443 check inter 10s rise 2 fall 2 listen my-cluster-machine-config-api-22623 bind 192.168.1.100:22623 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz http-check expect status 200 server my-cluster-master-2 192.168.1.101:22623 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:22623 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:22623 check inter 10s rise 2 fall 2 listen my-cluster-apps-443 bind 192.168.1.100:443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:443 check port 1936 inter 10s rise 2 fall 2 listen my-cluster-apps-80 bind 192.168.1.100:80 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:80 check port 1936 inter 10s rise 2 fall 2 # ...
使用
curl
CLI 命令验证外部负载均衡器及其资源是否正常运行:运行以下命令并查看响应,验证集群机器配置 API 是否可以被 Kubernetes API 服务器资源访问:
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并观察输出,验证集群机器配置 API 是否可以被 Machine 配置服务器资源访问:
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并观察输出,验证控制器是否可以被端口 80 上的 Ingress Controller 资源访问:
$ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
运行以下命令并观察输出,验证控制器是否可以被端口 443 上的 Ingress Controller 资源访问:
$ curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
为您的集群配置 DNS 记录,以外部负载均衡器的前端 IP 地址为目标。您必须在负载均衡器上将记录更新为集群 API 和应用程序的 DNS 服务器。
修改 DNS 记录示例
<load_balancer_ip_address> A api.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
<load_balancer_ip_address> A apps.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
重要DNS 传播可能需要一些时间才能获得每个 DNS 记录。在验证每个记录前,请确保每个 DNS 记录传播。
使用
curl
CLI 命令验证外部负载均衡器和 DNS 记录配置是否正常运行:运行以下命令并查看输出,验证您可以访问集群 API:
$ curl https://api.<cluster_name>.<base_domain>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并查看输出,验证您可以访问集群机器配置:
$ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并查看输出,验证您可以在端口上访问每个集群应用程序:
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.<cluster-name>.<base domain>/ cache-control: no-cacheHTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Tue, 17 Nov 2020 08:42:10 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None cache-control: private
运行以下命令并查看输出,验证您可以在端口 443 上访问每个集群应用程序:
$ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
2.4.10. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 设置 registry 并配置 registry 存储。
- 可选: 查看 vSphere 问题检测器 Operator 中的事件,以确定集群是否有权限或存储配置问题。
2.5. 使用自定义网络在 vSphere 上安装集群
在 OpenShift Container Platform 版本 4.14 中,您可以使用安装程序置备的基础架构和自定义的网络配置选项在 VMware vSphere 实例上安装集群。通过自定义网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。要自定义安装,请在安装集群前修改 install-config.yaml
文件中的参数。
您必须在安装过程中设置大多数网络配置参数,且您只能在正在运行的集群中修改 kubeProxy
配置参数。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
2.5.1. 先决条件
- 您已完成了 准备使用安装程序置备的基础架构安装集群 中的任务。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
-
已为集群置备了 持久性存储。要部署私有镜像 registry,您的存储必须提供
ReadWriteMany
访问模式。 - OpenShift Container Platform 安装程序需要访问 vCenter 和 ESXi 主机上的端口 443。您确认可以访问端口 443。
- 如果您使用防火墙,请与管理员一起确认可以访问端口 443。control plane 节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,才能成功安装。
如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
2.5.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.14 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
2.5.3. VMware vSphere 区域和区启用
您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。每个数据中心都可以运行多个集群。此配置降低了导致集群失败的硬件故障或网络中断的风险。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
VMware vSphere 区域和区启用功能需要 vSphere Container Storage Interface (CSI) 驱动程序作为集群中的默认存储驱动程序。因此,这个功能只在新安装的集群中可用。
对于从上一版本升级的集群,您必须为集群启用 CSI 自动迁移。然后,您可以为升级的集群配置多个区域和区域。
默认安装配置将集群部署到单个 vSphere 数据中心。如果要将集群部署到多个 vSphere 数据中心,您必须创建一个启用地区和区功能的安装配置文件。
默认 install-config.yaml
文件包含 vcenters
和 failureDomains
字段,您可以在其中为 OpenShift Container Platform 集群指定多个 vSphere 数据中心和集群。如果要在由单个数据中心组成的 vSphere 环境中安装 OpenShift Container Platform 集群,您可以将这些字段留空。
以下列表描述了为集群定义区和区域相关的术语:
-
故障域:建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 -
Region :指定 vCenter 数据中心。您可以使用
openshift-region
标签类别中的标签来定义区域。 -
Zone:指定一个 vCenter 集群。您可以使用
openshift-zone
标签类别中的标签来定义区。
如果您计划在 install-config.yaml
文件中指定多个故障域,则必须在创建配置文件前创建标签类别、区域标签和区域标签。
您必须为每个代表一个区域的 vCenter 数据中心创建一个 vCenter 标签。另外,您必须为比数据中心(代表一个区)中运行的每个集群创建一个 vCenter 标签。创建标签后,您必须将每个标签附加到对应的数据中心和集群。
下表概述了在单个 VMware vCenter 中运行的多个 vSphere 数据中心的区域、区域和标签之间的关系示例。
数据中心(区域) | 集群(区) | Tags |
---|---|---|
us-east | us-east-1 | us-east-1a |
us-east-1b | ||
us-east-2 | us-east-2a | |
us-east-2b | ||
us-west | us-west-1 | us-west-1a |
us-west-1b | ||
us-west-2 | us-west-2a | |
us-west-2b |
2.5.4. 创建安装配置文件
您可以自定义在 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>
,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
注意始终删除
~/.powervs
目录,以避免重复使用过时的配置。运行以下命令:$ rm -rf ~/.powervs
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- Select vsphere 作为目标平台。
- 指定 vCenter 实例的名称。
指定创建集群所需的权限的 vCenter 帐户的用户名和密码。
安装程序连接到您的 vCenter 实例。
选择要连接的 vCenter 实例中的数据中心。
注意创建安装配置文件后,您可以修改该文件以创建多个 vSphere 数据中心环境。这意味着您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。有关创建此环境的更多信息,请参阅名为 VMware vSphere 区域和区启用的部分。
选择要使用的默认 vCenter 数据存储。
警告您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,使用 Storage vMotion 的存储分布式资源调度程序(SDRS)会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage DRS 以避免 OpenShift Container Platform 集群的数据丢失问题。
您不能指定多个数据存储路径。如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。- 选择要在其中安装 OpenShift Container Platform 集群的 vCenter 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
- 选择包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。
- 输入您为 control plane API 访问配置的虚拟 IP 地址。
- 输入您为集群入口配置的虚拟 IP 地址。
- 输入基域。这个基域必须与您配置的 DNS 记录中使用的域相同。
为集群输入描述性名称。
您输入的集群名称必须与您在配置 DNS 记录时指定的集群名称匹配。
-
修改
install-config.yaml
文件。您可以在"安装配置参数"部分找到有关可用参数的更多信息。 备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
其他资源
2.5.4.1. 安装程序置备的 VMware vSphere 集群的 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
apiVersion: v1 baseDomain: example.com 1 compute: 2 - architecture: amd64 name: <worker_node> platform: {} replicas: 3 controlPlane: 3 architecture: amd64 name: <parent_node> platform: {} replicas: 3 metadata: creationTimestamp: null name: test 4 networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 machineNetwork: - cidr: 10.0.0.0/16 networkType: OVNKubernetes 5 serviceNetwork: - 172.30.0.0/16 platform: vsphere: 6 apiVIPs: - 10.0.0.1 failureDomains: 7 - name: <failure_domain_name> region: <default_region_name> server: <fully_qualified_domain_name> topology: computeCluster: "/<datacenter>/host/<cluster>" datacenter: <datacenter> datastore: "/<datacenter>/datastore/<datastore>" 8 networks: - <VM_Network_name> resourcePool: "/<datacenter>/host/<cluster>/Resources/<resourcePool>" 9 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" zone: <default_zone_name> ingressVIPs: - 10.0.0.2 vcenters: - datacenters: - <datacenter> password: <password> port: 443 server: <fully_qualified_domain_name> user: administrator@vsphere.local diskType: thin 10 fips: false pullSecret: '{"auths": ...}' sshKey: 'ssh-ed25519 AAAA...'
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 3
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 您在 DNS 记录中指定的集群名称。
- 6
- 可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
- 7
- 建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 - 8
- 保存虚拟机文件、模板和 ISO 镜像的 vSphere 数据存储路径。重要
您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,Storage vMotion 会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage vMotion 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。 - 9
- 可选:为创建机器提供现有资源池。如果没有指定值,安装程序将使用 vSphere 集群的 root 资源池。
- 10
- vSphere 磁盘置备方法。
- 5
- 要安装的集群网络插件。支持的值有
OVNKubernetes
和OpenShiftSDN
。默认值为OVNKubernetes
。
在 OpenShift Container Platform 4.12 及更新的版本中,apiVIP
和 ingressVIP
配置设置已弃用。反之,使用列表格式在 apiVIPs
和 ingressVIPs
配置设置中输入值。
2.5.4.2. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 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
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
2.5.4.3. 可选:使用双栈网络部署
对于 OpenShift Container Platform 集群中的双栈网络,您可以为集群节点配置 IPv4 和 IPv6 地址端点。要为集群节点配置 IPv4 和 IPv6 地址端点,请编辑 install-config.yaml
文件中的 machineNetwork
、clusterNetwork
和 serviceNetwork
配置设置。每个设置必须分别有两个 CIDR 条目。对于将 IPv4 系列用作主地址系列的集群,请首先指定 IPv4 设置。对于将 IPv6 系列用作主地址系列的集群,请首先指定 IPv6 设置。
machineNetwork: - cidr: {{ extcidrnet }} - cidr: {{ extcidrnet6 }} clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 - cidr: fd02::/48 hostPrefix: 64 serviceNetwork: - 172.30.0.0/16 - fd03::/112
要为使用 IPv4 和 IPv6 地址的应用程序提供接口,请为 Ingress VIP 和 API VIP 服务配置 IPv4 和 IPv6 虚拟 IP (VIP) 地址端点。要配置 IPv4 和 IPv6 地址端点,请编辑 install-config.yaml
文件中的 apiVIPs
和 ingressVIPs
配置设置。apiVIPs
和 ingressVIPs
配置设置使用列表格式。列表的顺序决定了每个服务的主 VIP 地址和次 VIP 地址。
platform: vsphere: apiVIPs: - <api_ipv4> - <api_ipv6> ingressVIPs: - <wildcard_ipv4> - <wildcard_ipv6>
对于具有双栈网络配置的集群,您必须将 IPv4 和 IPv6 地址分配到同一接口。
2.5.4.4. 为 VMware vCenter 配置区域和区域
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。
之前版本的 OpenShift Container Platform 的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
会提示您显示在配置文件中已弃用字段的警告信息。
这个示例使用 govc
命令。govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽支持团队不维护 govc
命令。有关下载和安装 govc
的说明,请参阅 VMware 文档网站
先决条件
您有一个现有的
install-config.yaml
安装配置文件。重要您必须为 OpenShift Container Platform 集群指定一个故障域,以便您可以为 VMware vCenter 服务器置备数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中置备虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
流程
输入以下
govc
命令行工具命令,以创建openshift-region
和openshift-zone
vCenter 标签类别:重要如果为
openshift-region
和openshift-zone
vCenter 标签类别指定不同的名称,OpenShift Container Platform 集群的安装会失败。$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为您要部署集群的每个区域 vSphere 数据中心创建一个 region 标签,请在终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为您要部署集群的每个 vSphere 集群创建一个区标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
输入以下命令将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<datacenter_1>
输入以下命令将区标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<datacenter_1>/host/vcs-mdcnc-workload-1
- 进入包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
在 vSphere 数据中心中定义的多个数据中心的 install-config.yaml
文件示例
--- compute: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- controlPlane: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- platform: vsphere: vcenters: --- datacenters: - <datacenter1_name> - <datacenter2_name> failureDomains: - name: <machine_pool_zone_1> region: <region_tag_1> zone: <zone_tag_1> server: <fully_qualified_domain_name> topology: datacenter: <datacenter1> computeCluster: "/<datacenter1>/host/<cluster1>" networks: - <VM_Network1_name> datastore: "/<datacenter1>/datastore/<datastore1>" resourcePool: "/<datacenter1>/host/<cluster1>/Resources/<resourcePool1>" folder: "/<datacenter1>/vm/<folder1>" - name: <machine_pool_zone_2> region: <region_tag_2> zone: <zone_tag_2> server: <fully_qualified_domain_name> topology: datacenter: <datacenter2> computeCluster: "/<datacenter2>/host/<cluster2>" networks: - <VM_Network2_name> datastore: "/<datacenter2>/datastore/<datastore2>" resourcePool: "/<datacenter2>/host/<cluster2>/Resources/<resourcePool2>" folder: "/<datacenter2>/vm/<folder2>" ---
2.5.5. 网络配置阶段
OpenShift Container Platform 安装前有两个阶段,您可以在其中自定义网络配置。
- 第 1 阶段
在创建清单文件前,您可以自定义
install-config.yaml
文件中的以下与网络相关的字段:-
networking.networkType
-
networking.clusterNetwork
-
networking.serviceNetwork
networking.machineNetwork
如需更多信息,请参阅"安装配置参数"。
注意将
networking.machineNetwork
设置为与首选子网所在的无类别域间路由 (CIDR) 匹配。重要CIDR 范围
172.17.0.0/16
由libVirt
保留。对于集群中的网络,您无法使用与172.17.0.0/16
CIDR 范围重叠的任何其他 CIDR 范围。
-
- 第 2 阶段
-
运行
openshift-install create 清单创建
清单文件后,您可以只使用您要修改的字段定义自定义 Cluster Network Operator 清单。您可以使用清单来指定高级网络配置。
在阶段 2 中,您无法覆盖 install-config.yaml
文件中在第 1 阶段指定的值。但是,您可以在第 2 阶段自定义网络插件。
2.5.6. 指定高级网络配置
您可以使用网络插件的高级网络配置将集群集成到现有网络环境中。您只能在安装集群前指定高级网络配置。
不支持通过修改安装程序创建的 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/
目录。 删除定义 control plane 机器的 Kubernetes 清单文件和计算 machineSets:
$ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml
由于您要自行创建和管理这些资源,因此不必初始化这些资源。
- 您可以使用机器 API 保留 MachineSet 文件以创建计算机器,但您必须更新对它们的引用以匹配您的环境。
2.5.6.1. 为您的网络指定多个子网
在 vSphere 主机上安装 OpenShift Container Platform 集群前,您可以为网络实现指定多个子网,以便 vSphere 云控制器管理器 (CCM) 可以为给定网络情况选择适当的子网。vSphere 可以使用子网来管理集群中的 pod 和服务。
对于此配置,您必须在 vSphere CCM 配置中指定内部和外部无类别域间路由 (CIDR) 实现。每个 CIDR 实现都会列出 CCM 用来决定与来自内部和外部网络的流量交互的 IP 地址范围。
在 vSphere CCM 配置中配置内部和外部 CIDR 实现可能会导致 vSphere CCM 选择错误的子网。这种情况会导致以下错误:
ERROR Bootstrap failed to complete: timed out waiting for the condition ERROR Failed to wait for bootstrapping to complete. This error usually happens when there is a problem with control plane hosts that prevents the control plane operators from creating the control plane.
此配置可能会导致与 MachineSet
对象与单个子网关联的新节点变得不可用,因为每个新节点接收 node.cloudprovider.kubernetes.io/uninitialized
污点。这些情况可能会导致与 Kubernetes API 服务器的通信问题,这可能会导致集群安装失败。
先决条件
- 为 OpenShift Container Platform 集群创建 Kubernetes 清单文件。
流程
-
从存储 OpenShift Container Platform 集群清单文件的目录中,打开
manifests/cluster-infrastructure-02-config.yml
清单文件。 将
nodeNetworking
对象添加到文件,并为对象指定内部和外部网络子网 CIDR 实现。提示对于大多数网络情况,请考虑设置标准多子网配置。此配置要求您在
nodeNetworking.internal.networkSubnetCidr
和nodeNetworking.external.networkSubnetCidr
参数中设置相同的 IP 地址范围。配置了
cluster-infrastructure-02-config.yml
清单文件的示例apiVersion: config.openshift.io/v1 kind: Infrastructure metadata: name: cluster spec: cloudConfig: key: config name: cloud-provider-config platformSpec: type: VSphere vsphere: failureDomains: - name: generated-failure-domain ... nodeNetworking: external: networkSubnetCidr: - <machine_network_cidr_ipv4> - <machine_network_cidr_ipv6> internal: networkSubnetCidr: - <machine_network_cidr_ipv4> - <machine_network_cidr_ipv6> # ...
2.5.7. 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
对象的字段来为集群指定集群网络插件配置。
2.5.7.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 网络插件只支持服务网络的一个 IP 地址块。例如: spec: serviceNetwork: - 172.30.0.0/14
您只能在创建清单前在 |
|
| 为集群网络配置网络插件。 |
|
| 此对象的字段指定 kube-proxy 配置。如果使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 配置不会起作用。 |
对于需要在多个网络间部署对象的集群,请确保为 install-config.yaml
文件中定义的每种网络类型指定与 clusterNetwork.hostPrefix
参数相同的值。为每个 clusterNetwork.hostPrefix
参数设置不同的值可能会影响 OVN-Kubernetes 网络插件,其中插件无法有效地在不同节点间路由对象流量。
defaultNetwork 对象配置
下表列出了 defaultNetwork
对象的值:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意 OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。 |
|
| 此对象仅对 OpenShift SDN 网络插件有效。 |
|
| 此对象仅对 OVN-Kubernetes 网络插件有效。 |
配置 OpenShift SDN 网络插件
下表描述了 OpenShift SDN 网络插件的配置字段:
字段 | 类型 | 描述 |
---|---|---|
|
|
配置 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 网络插件
下表描述了 OVN-Kubernetes 网络插件的配置字段:
字段 | 类型 | 描述 |
---|---|---|
|
| Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为 |
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
| 指定一个空对象来启用 IPsec 加密。 |
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
|
| 可选:指定一个配置对象来自定义如何将出口流量发送到节点网关。 注意 在迁移出口流量时,工作负载和服务流量会受到一定影响,直到 Cluster Network Operator (CNO) 成功推出更改。 |
|
如果您的现有网络基础架构与 在安装后无法更改此字段。 |
默认值为 |
|
如果您的现有网络基础架构与 在安装后无法更改此字段。 |
默认值为 |
字段 | 类型 | 描述 |
---|---|---|
| 整数 |
每个节点每秒生成一次的消息数量上限。默认值为每秒 |
| 整数 |
审计日志的最大大小,以字节为单位。默认值为 |
| 整数 | 保留的日志文件的最大数量。 |
| 字符串 | 以下附加审计日志目标之一:
|
| 字符串 |
syslog 工具,如 as |
字段 | 类型 | 描述 |
---|---|---|
|
|
将此字段设置为
此字段与 Open vSwitch 硬件卸载功能有交互。如果将此字段设置为 |
|
|
您可以使用 |
启用 IPSec 的 OVN-Kubernetes 配置示例
defaultNetwork: type: OVNKubernetes ovnKubernetesConfig: mtu: 1400 genevePort: 6081 ipsecConfig: {}
kubeProxyConfig 对象配置(仅限 OpenShiftSDN 容器网络接口)
kubeProxyConfig
对象的值在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意
由于 OpenShift Container Platform 4.3 及更高版本中引进了性能改进,不再需要调整 |
|
|
刷新 kubeProxyConfig: proxyArguments: iptables-min-sync-period: - 0s |
2.5.8. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已确认主机上的云供应商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
可选:在创建集群时,配置外部负载均衡器来代替默认负载均衡器。
重要您不需要为安装程序指定 API 和 Ingress 静态地址。如果选择此配置,则必须采取额外的操作来定义接受每个引用的 vSphere 子网的 IP 地址的网络目标。请参阅"配置外部负载均衡器"一节。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin
用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log
.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
... 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: "password" INFO Time elapsed: 36m22s
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
2.5.9. 使用 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
2.5.10. 创建 registry 存储
安装集群后,必须为 registry Operator 创建存储。
2.5.10.1. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置,将 managementState
从 Removed
切换到 Managed
。完成此操作后,您必须配置存储。
2.5.10.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
2.5.10.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- VMware vSphere 上有一个集群。
为集群置备的持久性存储,如 Red Hat OpenShift Data Foundation。
重要当您只有一个副本时,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
2.5.10.2.2. 为 VMware vSphere 配置块 registry 存储
要允许镜像 registry 在作为集群管理员升级过程中使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略
。
支持块存储卷,但不建议在生产环境中用于镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法具有多个副本。
流程
输入以下命令将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用
Recreate
rollout 策略,并只使用一个
副本运行:$ 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。
2.5.11. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.14 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
2.5.12. 外部负载均衡器的服务
您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。
配置外部负载均衡器取决于您的供应商的负载均衡器。
本节中的信息和示例仅用于指导目的。有关供应商负载均衡器的更多信息,请参阅供应商文档。
红帽支持外部负载均衡器的以下服务:
- Ingress Controller
- OpenShift API
- OpenShift MachineConfig API
您可以选择是否为外部负载均衡器配置一个或多个所有服务。仅配置 Ingress Controller 服务是一个通用的配置选项。要更好地了解每个服务,请查看以下图表:
图 2.4. 显示 OpenShift Container Platform 环境中运行的 Ingress Controller 的网络工作流示例
![显示 OpenShift Container Platform 环境中运行 Ingress Controller 的示例网络工作流的镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/c35799e5c44cc8a51b928b5494bd9f84/external-load-balancer-default.png)
图 2.5. 显示 OpenShift Container Platform 环境中运行的 OpenShift API 的网络工作流示例
![显示 OpenShift Container Platform 环境中操作的 OpenShift API 网络工作流示例镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/20b274ff0baf5743ab5f1a57d2dfdc40/external-load-balancer-openshift-api.png)
图 2.6. 显示 OpenShift Container Platform 环境中运行的 OpenShift MachineConfig API 的网络工作流示例
![显示 OpenShift Container Platform 环境中操作的 OpenShift MachineConfig API 示例网络工作流的镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/647ca6d4bc4b5c847872ccda34e79ce5/external-load-balancer-machine-config-api.png)
外部负载均衡器支持以下配置选项:
- 使用节点选择器将 Ingress Controller 映射到一组特定的节点。您必须为这个集合中的每个节点分配一个静态 IP 地址,或者将每个节点配置为从动态主机配置协议(DHCP)接收相同的 IP 地址。基础架构节点通常接收这种类型的配置。
以子网上的所有 IP 地址为目标。此配置可减少维护开销,因为您可以在这些网络中创建和销毁节点,而无需重新配置负载均衡器目标。如果您使用较小的网络上的机器集来部署入口 pod,如
/27
或/28
,您可以简化负载均衡器目标。提示您可以通过检查机器配置池的资源来列出网络中存在的所有 IP 地址。
在为 OpenShift Container Platform 集群配置外部负载均衡器前,请考虑以下信息:
- 对于前端 IP 地址,您可以对前端 IP 地址、Ingress Controller 的负载均衡器和 API 负载均衡器使用相同的 IP 地址。查看厂商的文档以获取此功能的相关信息。
对于后端 IP 地址,请确保 OpenShift Container Platform control plane 节点的 IP 地址在外部负载均衡器的生命周期内不会改变。您可以通过完成以下操作之一来实现此目的:
- 为每个 control plane 节点分配一个静态 IP 地址。
- 将每个节点配置为在每次节点请求 DHCP 租期时从 DHCP 接收相同的 IP 地址。根据供应商,DHCP 租期可能采用 IP 保留或静态 DHCP 分配的形式。
- 在 Ingress Controller 后端服务的外部负载均衡器中手动定义运行 Ingress Controller 的每个节点。例如,如果 Ingress Controller 移到未定义节点,则可能会出现连接中断。
2.5.12.1. 配置外部负载均衡器
您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。
在配置外部负载均衡器前,请确定您阅读了外部负载均衡器的"服务"部分。
阅读适用于您要为外部负载均衡器配置的服务的以下先决条件。
MetalLB,在集群中运行,充当外部负载均衡器。
OpenShift API 的先决条件
- 您定义了前端 IP 地址。
TCP 端口 6443 和 22623 在负载均衡器的前端 IP 地址上公开。检查以下项:
- 端口 6443 提供对 OpenShift API 服务的访问。
- 端口 22623 可以为节点提供 ignition 启动配置。
- 前端 IP 地址和端口 6443 可以被您的系统的所有用户访问,其位置为 OpenShift Container Platform 集群外部。
- 前端 IP 地址和端口 22623 只能被 OpenShift Container Platform 节点访问。
- 负载均衡器后端可以在端口 6443 和 22623 上与 OpenShift Container Platform control plane 节点通信。
Ingress Controller 的先决条件
- 您定义了前端 IP 地址。
- TCP 端口 443 和 80 在负载均衡器的前端 IP 地址上公开。
- 前端 IP 地址、端口 80 和端口 443 可以被您的系统所有用户访问,以及 OpenShift Container Platform 集群外部的位置。
- 前端 IP 地址、端口 80 和端口 443 可被 OpenShift Container Platform 集群中运行的所有节点访问。
- 负载均衡器后端可以在端口 80、443 和 1936 上与运行 Ingress Controller 的 OpenShift Container Platform 节点通信。
健康检查 URL 规格的先决条件
您可以通过设置健康检查 URL 来配置大多数负载均衡器,以确定服务是否可用或不可用。OpenShift Container Platform 为 OpenShift API、Machine Configuration API 和 Ingress Controller 后端服务提供这些健康检查。
以下示例演示了以前列出的后端服务的健康检查规格:
Kubernetes API 健康检查规格示例
Path: HTTPS:6443/readyz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Machine Config API 健康检查规格示例
Path: HTTPS:22623/healthz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Ingress Controller 健康检查规格示例
Path: HTTP:1936/healthz/ready Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 5 Interval: 10
流程
配置 HAProxy Ingress Controller,以便您可以在端口 6443、443 和 80 上从负载均衡器访问集群:
HAProxy 配置示例
#... listen my-cluster-api-6443 bind 192.168.1.100:6443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /readyz http-check expect status 200 server my-cluster-master-2 192.168.1.101:6443 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:6443 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:6443 check inter 10s rise 2 fall 2 listen my-cluster-machine-config-api-22623 bind 192.168.1.100:22623 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz http-check expect status 200 server my-cluster-master-2 192.168.1.101:22623 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:22623 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:22623 check inter 10s rise 2 fall 2 listen my-cluster-apps-443 bind 192.168.1.100:443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:443 check port 1936 inter 10s rise 2 fall 2 listen my-cluster-apps-80 bind 192.168.1.100:80 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:80 check port 1936 inter 10s rise 2 fall 2 # ...
使用
curl
CLI 命令验证外部负载均衡器及其资源是否正常运行:运行以下命令并查看响应,验证集群机器配置 API 是否可以被 Kubernetes API 服务器资源访问:
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并观察输出,验证集群机器配置 API 是否可以被 Machine 配置服务器资源访问:
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并观察输出,验证控制器是否可以被端口 80 上的 Ingress Controller 资源访问:
$ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
运行以下命令并观察输出,验证控制器是否可以被端口 443 上的 Ingress Controller 资源访问:
$ curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
为您的集群配置 DNS 记录,以外部负载均衡器的前端 IP 地址为目标。您必须在负载均衡器上将记录更新为集群 API 和应用程序的 DNS 服务器。
修改 DNS 记录示例
<load_balancer_ip_address> A api.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
<load_balancer_ip_address> A apps.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
重要DNS 传播可能需要一些时间才能获得每个 DNS 记录。在验证每个记录前,请确保每个 DNS 记录传播。
使用
curl
CLI 命令验证外部负载均衡器和 DNS 记录配置是否正常运行:运行以下命令并查看输出,验证您可以访问集群 API:
$ curl https://api.<cluster_name>.<base_domain>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并查看输出,验证您可以访问集群机器配置:
$ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并查看输出,验证您可以在端口上访问每个集群应用程序:
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.<cluster-name>.<base domain>/ cache-control: no-cacheHTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Tue, 17 Nov 2020 08:42:10 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None cache-control: private
运行以下命令并查看输出,验证您可以在端口 443 上访问每个集群应用程序:
$ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
2.5.13. 配置要在 control plane 上运行的网络组件
您可以配置网络组件,使其仅在 control plane 节点上运行。默认情况下,OpenShift Container Platform 允许机器配置池中的任何节点托管 ingressVIP
虚拟 IP 地址。但是,有些环境在与 control plane 节点独立的子网中部署 worker 节点,这需要将 ingressVIP
虚拟 IP 地址配置为在 control plane 节点上运行。
您可以通过在单独的子网中创建 worker machineset 来扩展远程 worker。
在单独的子网中部署远程 worker 时,您必须将 ingressVIP
虚拟 IP 地址专门用于 control plane 节点。
![安装程序置备的网络](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/b1501e734fb93c255a22f589314ad2a5/325_OpenShift_vSphere_Deployment_updates_0323.png)
流程
进入存储
install-config.yaml
文件的目录:$ cd ~/clusterconfigs
切换到
manifests
子目录:$ cd manifests
创建名为
cluster-network-avoid-workers-99-config.yaml
的文件:$ touch cluster-network-avoid-workers-99-config.yaml
在编辑器中打开
cluster-network-avoid-workers-99-config.yaml
文件,并输入描述 Operator 配置的自定义资源(CR):apiVersion: machineconfiguration.openshift.io/v1 kind: MachineConfig metadata: name: 50-worker-fix-ipi-rwn labels: machineconfiguration.openshift.io/role: worker spec: config: ignition: version: 3.2.0 storage: files: - path: /etc/kubernetes/manifests/keepalived.yaml mode: 0644 contents: source: data:,
此清单将
ingressVIP
虚拟 IP 地址放在 control plane 节点上。另外,此清单仅在 control plane 节点上部署以下进程:-
openshift-ingress-operator
-
keepalived
-
-
保存
cluster-network-avoid-workers-99-config.yaml
文件。 创建
manifests/cluster-ingress-default-ingresscontroller.yaml
文件:apiVersion: operator.openshift.io/v1 kind: IngressController metadata: name: default namespace: openshift-ingress-operator spec: nodePlacement: nodeSelector: matchLabels: node-role.kubernetes.io/master: ""
-
考虑备份
manifests
目录。在创建集群时,安装程序会删除manifests/
目录。 通过将
mastersSchedulable
字段设置为true
来修改cluster-scheduler-02-config.yml
清单,使 control plane 节点可以调度。默认情况下,control plane 节点不可调度。例如:$ sed -i "s;mastersSchedulable: false;mastersSchedulable: true;g" clusterconfigs/manifests/cluster-scheduler-02-config.yml
注意如果在完成此步骤后 control plane 节点不可调度,则部署集群将失败。
2.5.14. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 设置 registry 并配置 registry 存储。
- 可选: 查看 vSphere 问题检测器 Operator 中的事件,以确定集群是否有权限或存储配置问题。
2.6. 在受限网络中的 vSphere 上安装集群
在 OpenShift Container Platform 4.14 中,您可以通过创建安装发行内容的内部镜像在受限网络中的 VMware vSphere 基础架构上安装集群。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
2.6.1. 先决条件
- 您已完成了 准备使用安装程序置备的基础架构安装集群 中的任务。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
您在镜像主机上创建 registry,并获取您的 OpenShift Container Platform 版本的
imageContentSources
数据。重要由于安装介质位于镜像主机上,因此您可以使用该计算机完成所有安装步骤。
- 已为集群置备了 持久性存储。要部署私有镜像 registry,您的存储必须提供 ReadWriteMany 访问模式。
- OpenShift Container Platform 安装程序需要访问 vCenter 和 ESXi 主机上的端口 443。您确认可以访问端口 443。
- 如果您使用防火墙,您与管理员确认可以访问端口 443。control plane 节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,才能成功安装。
如果您使用防火墙并计划使用 Telemetry 服务,则将防火墙配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
2.6.2. 关于在受限网络中安装
在 OpenShift Container Platform 4.14 中,可以执行不需要有效的互联网连接来获取软件组件的安装。受限网络安装可以使用安装程序置备的基础架构或用户置备的基础架构完成,具体取决于您要安装集群的云平台。
如果您选择在云平台中执行受限网络安装,您仍需要访问其云 API。有些云功能,比如 Amazon Web Service 的 Route 53 DNS 和 IAM 服务,需要访问互联网。根据您的网络,在裸机硬件、Nutanix 或 VMware vSphere 上安装可能需要较少的互联网访问。
要完成受限网络安装,您必须创建一个 registry,以镜像 OpenShift 镜像 registry 的内容并包含安装介质。您可以在镜像主机上创建此 registry,该主机可同时访问互联网和您的封闭网络,也可以使用满足您的限制条件的其他方法。
2.6.2.1. 其他限制
受限网络中的集群有以下额外限制和限制:
-
ClusterVersion
状态包含一个Unable to retrieve available updates
错误。 - 默认情况下,您无法使用 Developer Catalog 的内容,因为您无法访问所需的镜像流标签。
2.6.3. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.14 中,您需要访问互联网来获得用来安装集群的镜像。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
2.6.4. 为受限网络安装创建 RHCOS 镜像
下载 Red Hat Enterprise Linux CoreOS(RHCOS)镜像,以在受限网络 VMware vSphere 环境上安装 OpenShift Container Platform。
先决条件
- 获取 OpenShift Container Platform 安装程序。对于受限网络安装,该程序位于您的镜像 registry 主机上。
流程
- 登录到红帽客户门户网站的产品 下载页面。
在 Version 下,为 RHEL 8 选择 OpenShift Container Platform 4.14 的最新发行版本。
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。
- 下载 Red Hat Enterprise Linux CoreOS(RHCOS)- vSphere 镜像。
- 将下载的镜像上传到堡垒服务器可访问的位置。
该镜像现在可用于受限安装。记录 OpenShift Container Platform 部署中使用的镜像名称或位置。
2.6.5. VMware vSphere 区域和区启用
您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。每个数据中心都可以运行多个集群。此配置降低了导致集群失败的硬件故障或网络中断的风险。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
VMware vSphere 区域和区启用功能需要 vSphere Container Storage Interface (CSI) 驱动程序作为集群中的默认存储驱动程序。因此,这个功能只在新安装的集群中可用。
对于从上一版本升级的集群,您必须为集群启用 CSI 自动迁移。然后,您可以为升级的集群配置多个区域和区域。
默认安装配置将集群部署到单个 vSphere 数据中心。如果要将集群部署到多个 vSphere 数据中心,您必须创建一个启用地区和区功能的安装配置文件。
默认 install-config.yaml
文件包含 vcenters
和 failureDomains
字段,您可以在其中为 OpenShift Container Platform 集群指定多个 vSphere 数据中心和集群。如果要在由单个数据中心组成的 vSphere 环境中安装 OpenShift Container Platform 集群,您可以将这些字段留空。
以下列表描述了为集群定义区和区域相关的术语:
-
故障域:建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 -
Region :指定 vCenter 数据中心。您可以使用
openshift-region
标签类别中的标签来定义区域。 -
Zone:指定一个 vCenter 集群。您可以使用
openshift-zone
标签类别中的标签来定义区。
如果您计划在 install-config.yaml
文件中指定多个故障域,则必须在创建配置文件前创建标签类别、区域标签和区域标签。
您必须为每个代表一个区域的 vCenter 数据中心创建一个 vCenter 标签。另外,您必须为比数据中心(代表一个区)中运行的每个集群创建一个 vCenter 标签。创建标签后,您必须将每个标签附加到对应的数据中心和集群。
下表概述了在单个 VMware vCenter 中运行的多个 vSphere 数据中心的区域、区域和标签之间的关系示例。
数据中心(区域) | 集群(区) | Tags |
---|---|---|
us-east | us-east-1 | us-east-1a |
us-east-1b | ||
us-east-2 | us-east-2a | |
us-east-2b | ||
us-west | us-west-1 | us-west-1a |
us-west-1b | ||
us-west-2 | us-west-2a | |
us-west-2b |
2.6.6. 创建安装配置文件
您可以自定义在 VMware vSphere 上安装的 OpenShift Container Platform 集群。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。对于受限网络安装,这些文件位于您的镜像主机上。
-
您有创建镜像 registry 期间生成的
imageContentSources
值。 - 您已获取了镜像 registry 的证书内容。
- 您已检索了 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像,并将其上传到可访问的位置。
流程
创建
install-config.yaml
文件。进入包含安装程序的目录并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定要存储安装程序创建的文件的目录名称。
在指定目录时:
-
验证该目录是否具有
执行
权限。在安装目录中运行 Terraform 二进制文件需要这个权限。 使用空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
注意始终删除
~/.powervs
目录,以避免重复使用过时的配置。运行以下命令:$ rm -rf ~/.powervs
在提示符处,提供云的配置详情:
可选: 选择用于访问集群机器的 SSH 密钥。
注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。- Select vsphere 作为目标平台。
- 指定 vCenter 实例的名称。
指定创建集群所需的权限的 vCenter 帐户的用户名和密码。
安装程序连接到您的 vCenter 实例。
选择要连接的 vCenter 实例中的数据中心。
注意创建安装配置文件后,您可以修改该文件以创建多个 vSphere 数据中心环境。这意味着您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。有关创建此环境的更多信息,请参阅名为 VMware vSphere 区域和区启用的部分。
选择要使用的默认 vCenter 数据存储。
警告您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,使用 Storage vMotion 的存储分布式资源调度程序(SDRS)会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage DRS 以避免 OpenShift Container Platform 集群的数据丢失问题。
您不能指定多个数据存储路径。如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。- 选择要在其中安装 OpenShift Container Platform 集群的 vCenter 集群。安装程序使用 vSphere 集群的 root 资源池作为默认资源池。
- 选择包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。
- 输入您为 control plane API 访问配置的虚拟 IP 地址。
- 输入您为集群入口配置的虚拟 IP 地址。
- 输入基域。这个基域必须与您配置的 DNS 记录中使用的域相同。
为集群输入描述性名称。
您输入的集群名称必须与您在配置 DNS 记录时指定的集群名称匹配。
在
install-config.yaml
文件中,将platform.vsphere.clusterOSImage
的值设置为镜像位置或名称。例如:platform: vsphere: clusterOSImage: http://mirror.example.com/images/rhcos-43.81.201912131630.0-vmware.x86_64.ova?sha256=ffebbd68e8a1f2a245ca19522c16c86f67f9ac8e4e0c1f0a812b068b16f7265d
编辑
install-config.yaml
文件,以提供在受限网络中安装所需的额外信息。更新
pullSecret
值,使其包含 registry 的身份验证信息:pullSecret: '{"auths":{"<mirror_host_name>:5000": {"auth": "<credentials>","email": "you@example.com"}}}'
对于
<mirror_host_name>,请指定
您在镜像 registry 证书中指定的 registry 域名;对于 <credentials>,
请指定您的镜像 registry 的 base64 编码用户名和密码。添加
additionalTrustBundle
参数和值。additionalTrustBundle: | -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE-----
该值必须是您用于镜像 registry 的证书文件内容。证书文件可以是现有的可信证书颁发机构,也可以是您为镜像 registry 生成的自签名证书。
添加镜像内容资源,类似于以下 YAML 摘录:
imageContentSources: - mirrors: - <mirror_host_name>:5000/<repo_name>/release source: quay.io/openshift-release-dev/ocp-release - mirrors: - <mirror_host_name>:5000/<repo_name>/release source: registry.redhat.io/ocp/release
对于这些值,请使用您在创建镜像 registry 时记录的
imageContentSources
。可选:将发布策略设置为
Internal
:publish: Internal
通过设置这个选项,您可以创建一个内部 Ingress Controller 和一个私有负载均衡器。
-
对您需要的
install-config.yaml
文件进行任何其他修改。您可以在 安装配置参数部分找到有关可用参数 的更多信息。 备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程中消耗掉。如果要重复使用此文件,必须现在备份。
其他资源
2.6.6.1. 安装程序置备的 VMware vSphere 集群的 install-config.yaml 文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
apiVersion: v1 baseDomain: example.com 1 compute: 2 - architecture: amd64 name: <worker_node> platform: {} replicas: 3 controlPlane: 3 architecture: amd64 name: <parent_node> platform: {} replicas: 3 metadata: creationTimestamp: null name: test 4 platform: vsphere: 5 apiVIPs: - 10.0.0.1 failureDomains: 6 - name: <failure_domain_name> region: <default_region_name> server: <fully_qualified_domain_name> topology: computeCluster: "/<datacenter>/host/<cluster>" datacenter: <datacenter> datastore: "/<datacenter>/datastore/<datastore>" 7 networks: - <VM_Network_name> resourcePool: "/<datacenter>/host/<cluster>/Resources/<resourcePool>" 8 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" zone: <default_zone_name> ingressVIPs: - 10.0.0.2 vcenters: - datacenters: - <datacenter> password: <password> port: 443 server: <fully_qualified_domain_name> user: administrator@vsphere.local diskType: thin 9 clusterOSImage: http://mirror.example.com/images/rhcos-47.83.202103221318-0-vmware.x86_64.ova 10 fips: false pullSecret: '{"auths":{"<local_registry>": {"auth": "<credentials>","email": "you@example.com"}}}' 11 sshKey: 'ssh-ed25519 AAAA...' additionalTrustBundle: | 12 -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE----- imageContentSources: 13 - mirrors: - <mirror_host_name>:<mirror_port>/<repo_name>/release source: <source_image_1> - mirrors: - <mirror_host_name>:<mirror_port>/<repo_name>/release-images source: <source_image_2>
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 3
controlPlane
部分是一个单个映射,但compute
部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。仅使用一个 control plane 池。- 4
- 您在 DNS 记录中指定的集群名称。
- 5
- 可选:为 compute 和 control plane 机器提供额外的机器池参数配置。
- 6
- 建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 - 7
- 保存虚拟机文件、模板和 ISO 镜像的 vSphere 数据存储路径。重要
您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,Storage vMotion 会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage vMotion 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。 - 8
- 可选:为创建机器提供现有资源池。如果没有指定值,安装程序将使用 vSphere 集群的 root 资源池。
- 9
- vSphere 磁盘置备方法。
- 10
- 可从 bastion 服务器访问的 Red Hat Enterprise Linux CoreOS(RHCOS)镜像的位置。
- 11
- 对于
<local_registry>
,请指定 registry 域名,以及您的镜像 registry 用来提供内容的可选端口。例如registry.example.com 或
registry.example.com:5000
。对于<credentials>
,请为您的镜像 registry 指定 base64 编码的用户名和密码。 - 12
- 提供用于镜像 registry 的证书文件内容。
- 13
- 提供命令输出中的
imageContentSources 部分来
镜像存储库。
在 OpenShift Container Platform 4.12 及更新的版本中,apiVIP
和 ingressVIP
配置设置已弃用。反之,使用列表格式在 apiVIPs
和 ingressVIPs
配置设置中输入值。
2.6.6.2. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 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
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
2.6.6.3. 为 VMware vCenter 配置区域和区域
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。
之前版本的 OpenShift Container Platform 的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
会提示您显示在配置文件中已弃用字段的警告信息。
这个示例使用 govc
命令。govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽支持团队不维护 govc
命令。有关下载和安装 govc
的说明,请参阅 VMware 文档网站
先决条件
您有一个现有的
install-config.yaml
安装配置文件。重要您必须为 OpenShift Container Platform 集群指定一个故障域,以便您可以为 VMware vCenter 服务器置备数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中置备虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
流程
输入以下
govc
命令行工具命令,以创建openshift-region
和openshift-zone
vCenter 标签类别:重要如果为
openshift-region
和openshift-zone
vCenter 标签类别指定不同的名称,OpenShift Container Platform 集群的安装会失败。$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为您要部署集群的每个区域 vSphere 数据中心创建一个 region 标签,请在终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为您要部署集群的每个 vSphere 集群创建一个区标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
输入以下命令将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<datacenter_1>
输入以下命令将区标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<datacenter_1>/host/vcs-mdcnc-workload-1
- 进入包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
在 vSphere 数据中心中定义的多个数据中心的 install-config.yaml
文件示例
--- compute: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- controlPlane: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- platform: vsphere: vcenters: --- datacenters: - <datacenter1_name> - <datacenter2_name> failureDomains: - name: <machine_pool_zone_1> region: <region_tag_1> zone: <zone_tag_1> server: <fully_qualified_domain_name> topology: datacenter: <datacenter1> computeCluster: "/<datacenter1>/host/<cluster1>" networks: - <VM_Network1_name> datastore: "/<datacenter1>/datastore/<datastore1>" resourcePool: "/<datacenter1>/host/<cluster1>/Resources/<resourcePool1>" folder: "/<datacenter1>/vm/<folder1>" - name: <machine_pool_zone_2> region: <region_tag_2> zone: <zone_tag_2> server: <fully_qualified_domain_name> topology: datacenter: <datacenter2> computeCluster: "/<datacenter2>/host/<cluster2>" networks: - <VM_Network2_name> datastore: "/<datacenter2>/datastore/<datastore2>" resourcePool: "/<datacenter2>/host/<cluster2>/Resources/<resourcePool2>" folder: "/<datacenter2>/vm/<folder2>" ---
2.6.7. 部署集群
您可以在兼容云平台上安装 OpenShift Container Platform。
在初始安装过程中,您只能运行安装程序的 create cluster
命令一次。
先决条件
- 您有 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已确认主机上的云供应商帐户具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示包括缺失权限的错误消息。
可选:在创建集群时,配置外部负载均衡器来代替默认负载均衡器。
重要您不需要为安装程序指定 API 和 Ingress 静态地址。如果选择此配置,则必须采取额外的操作来定义接受每个引用的 vSphere 子网的 IP 地址的网络目标。请参阅"配置外部负载均衡器"一节。
流程
进入包含安装程序的目录并初始化集群部署:
$ ./openshift-install create cluster --dir <installation_directory> \ 1 --log-level=info 2
验证
当集群部署成功完成时:
-
终端会显示用于访问集群的说明,包括指向 Web 控制台和
kubeadmin
用户的凭证的链接。 -
凭证信息还会输出到
<installation_directory>/.openshift_install.log
.
不要删除安装程序或安装程序所创建的文件。需要这两者才能删除集群。
输出示例
... 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: "password" INFO Time elapsed: 36m22s
-
安装程序生成的 Ignition 配置文件包含在 24 小时后过期的证书,然后在过期时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
2.6.8. 使用 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
2.6.9. 禁用默认的 OperatorHub 目录源
在 OpenShift Container Platform 安装过程中,默认为 OperatorHub 配置由红帽和社区项目提供的源内容的 operator 目录。在受限网络环境中,必须以集群管理员身份禁用默认目录。
流程
通过在
OperatorHub
对象中添加disableAllDefaultSources: true 来
禁用默认目录的源:$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
或者,您可以使用 Web 控制台管理目录源。在 Administration → Cluster Settings → Configuration → OperatorHub 页面中,点 Sources 选项卡,您可以在其中创建、更新、删除、禁用和启用单独的源。
2.6.10. 创建 registry 存储
安装集群后,必须为 Registry Operator 创建存储。
2.6.10.1. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置,将 managementState
从 Removed
切换到 Managed
。完成此操作后,您必须配置存储。
2.6.10.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
2.6.10.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- VMware vSphere 上有一个集群。
为集群置备的持久性存储,如 Red Hat OpenShift Data Foundation。
重要当您只有一个副本时,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
2.6.11. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.14 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
2.6.12. 外部负载均衡器的服务
您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。
配置外部负载均衡器取决于您的供应商的负载均衡器。
本节中的信息和示例仅用于指导目的。有关供应商负载均衡器的更多信息,请参阅供应商文档。
红帽支持外部负载均衡器的以下服务:
- Ingress Controller
- OpenShift API
- OpenShift MachineConfig API
您可以选择是否为外部负载均衡器配置一个或多个所有服务。仅配置 Ingress Controller 服务是一个通用的配置选项。要更好地了解每个服务,请查看以下图表:
图 2.7. 显示 OpenShift Container Platform 环境中运行的 Ingress Controller 的网络工作流示例
![显示 OpenShift Container Platform 环境中运行 Ingress Controller 的示例网络工作流的镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/c35799e5c44cc8a51b928b5494bd9f84/external-load-balancer-default.png)
图 2.8. 显示 OpenShift Container Platform 环境中运行的 OpenShift API 的网络工作流示例
![显示 OpenShift Container Platform 环境中操作的 OpenShift API 网络工作流示例镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/20b274ff0baf5743ab5f1a57d2dfdc40/external-load-balancer-openshift-api.png)
图 2.9. 显示 OpenShift Container Platform 环境中运行的 OpenShift MachineConfig API 的网络工作流示例
![显示 OpenShift Container Platform 环境中操作的 OpenShift MachineConfig API 示例网络工作流的镜像。](https://access.redhat.com/webassets/avalon/d/OpenShift_Container_Platform-4.14-Installing_on_vSphere-zh-CN/images/647ca6d4bc4b5c847872ccda34e79ce5/external-load-balancer-machine-config-api.png)
外部负载均衡器支持以下配置选项:
- 使用节点选择器将 Ingress Controller 映射到一组特定的节点。您必须为这个集合中的每个节点分配一个静态 IP 地址,或者将每个节点配置为从动态主机配置协议(DHCP)接收相同的 IP 地址。基础架构节点通常接收这种类型的配置。
以子网上的所有 IP 地址为目标。此配置可减少维护开销,因为您可以在这些网络中创建和销毁节点,而无需重新配置负载均衡器目标。如果您使用较小的网络上的机器集来部署入口 pod,如
/27
或/28
,您可以简化负载均衡器目标。提示您可以通过检查机器配置池的资源来列出网络中存在的所有 IP 地址。
在为 OpenShift Container Platform 集群配置外部负载均衡器前,请考虑以下信息:
- 对于前端 IP 地址,您可以对前端 IP 地址、Ingress Controller 的负载均衡器和 API 负载均衡器使用相同的 IP 地址。查看厂商的文档以获取此功能的相关信息。
对于后端 IP 地址,请确保 OpenShift Container Platform control plane 节点的 IP 地址在外部负载均衡器的生命周期内不会改变。您可以通过完成以下操作之一来实现此目的:
- 为每个 control plane 节点分配一个静态 IP 地址。
- 将每个节点配置为在每次节点请求 DHCP 租期时从 DHCP 接收相同的 IP 地址。根据供应商,DHCP 租期可能采用 IP 保留或静态 DHCP 分配的形式。
- 在 Ingress Controller 后端服务的外部负载均衡器中手动定义运行 Ingress Controller 的每个节点。例如,如果 Ingress Controller 移到未定义节点,则可能会出现连接中断。
2.6.12.1. 配置外部负载均衡器
您可以将 OpenShift Container Platform 集群配置为使用外部负载均衡器来代替默认负载均衡器。
在配置外部负载均衡器前,请确定您阅读了外部负载均衡器的"服务"部分。
阅读适用于您要为外部负载均衡器配置的服务的以下先决条件。
MetalLB,在集群中运行,充当外部负载均衡器。
OpenShift API 的先决条件
- 您定义了前端 IP 地址。
TCP 端口 6443 和 22623 在负载均衡器的前端 IP 地址上公开。检查以下项:
- 端口 6443 提供对 OpenShift API 服务的访问。
- 端口 22623 可以为节点提供 ignition 启动配置。
- 前端 IP 地址和端口 6443 可以被您的系统的所有用户访问,其位置为 OpenShift Container Platform 集群外部。
- 前端 IP 地址和端口 22623 只能被 OpenShift Container Platform 节点访问。
- 负载均衡器后端可以在端口 6443 和 22623 上与 OpenShift Container Platform control plane 节点通信。
Ingress Controller 的先决条件
- 您定义了前端 IP 地址。
- TCP 端口 443 和 80 在负载均衡器的前端 IP 地址上公开。
- 前端 IP 地址、端口 80 和端口 443 可以被您的系统所有用户访问,以及 OpenShift Container Platform 集群外部的位置。
- 前端 IP 地址、端口 80 和端口 443 可被 OpenShift Container Platform 集群中运行的所有节点访问。
- 负载均衡器后端可以在端口 80、443 和 1936 上与运行 Ingress Controller 的 OpenShift Container Platform 节点通信。
健康检查 URL 规格的先决条件
您可以通过设置健康检查 URL 来配置大多数负载均衡器,以确定服务是否可用或不可用。OpenShift Container Platform 为 OpenShift API、Machine Configuration API 和 Ingress Controller 后端服务提供这些健康检查。
以下示例演示了以前列出的后端服务的健康检查规格:
Kubernetes API 健康检查规格示例
Path: HTTPS:6443/readyz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Machine Config API 健康检查规格示例
Path: HTTPS:22623/healthz Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 10 Interval: 10
Ingress Controller 健康检查规格示例
Path: HTTP:1936/healthz/ready Healthy threshold: 2 Unhealthy threshold: 2 Timeout: 5 Interval: 10
流程
配置 HAProxy Ingress Controller,以便您可以在端口 6443、443 和 80 上从负载均衡器访问集群:
HAProxy 配置示例
#... listen my-cluster-api-6443 bind 192.168.1.100:6443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /readyz http-check expect status 200 server my-cluster-master-2 192.168.1.101:6443 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:6443 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:6443 check inter 10s rise 2 fall 2 listen my-cluster-machine-config-api-22623 bind 192.168.1.100:22623 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz http-check expect status 200 server my-cluster-master-2 192.168.1.101:22623 check inter 10s rise 2 fall 2 server my-cluster-master-0 192.168.1.102:22623 check inter 10s rise 2 fall 2 server my-cluster-master-1 192.168.1.103:22623 check inter 10s rise 2 fall 2 listen my-cluster-apps-443 bind 192.168.1.100:443 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:443 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:443 check port 1936 inter 10s rise 2 fall 2 listen my-cluster-apps-80 bind 192.168.1.100:80 mode tcp balance roundrobin option httpchk http-check connect http-check send meth GET uri /healthz/ready http-check expect status 200 server my-cluster-worker-0 192.168.1.111:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-1 192.168.1.112:80 check port 1936 inter 10s rise 2 fall 2 server my-cluster-worker-2 192.168.1.113:80 check port 1936 inter 10s rise 2 fall 2 # ...
使用
curl
CLI 命令验证外部负载均衡器及其资源是否正常运行:运行以下命令并查看响应,验证集群机器配置 API 是否可以被 Kubernetes API 服务器资源访问:
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并观察输出,验证集群机器配置 API 是否可以被 Machine 配置服务器资源访问:
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并观察输出,验证控制器是否可以被端口 80 上的 Ingress Controller 资源访问:
$ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
运行以下命令并观察输出,验证控制器是否可以被端口 443 上的 Ingress Controller 资源访问:
$ curl -I -L --insecure --resolve console-openshift-console.apps.<cluster_name>.<base_domain>:443:<Load Balancer Front End IP Address> https://console-openshift-console.apps.<cluster_name>.<base_domain>
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
为您的集群配置 DNS 记录,以外部负载均衡器的前端 IP 地址为目标。您必须在负载均衡器上将记录更新为集群 API 和应用程序的 DNS 服务器。
修改 DNS 记录示例
<load_balancer_ip_address> A api.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
<load_balancer_ip_address> A apps.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
重要DNS 传播可能需要一些时间才能获得每个 DNS 记录。在验证每个记录前,请确保每个 DNS 记录传播。
使用
curl
CLI 命令验证外部负载均衡器和 DNS 记录配置是否正常运行:运行以下命令并查看输出,验证您可以访问集群 API:
$ curl https://api.<cluster_name>.<base_domain>:6443/version --insecure
如果配置正确,您会收到 JSON 对象的响应:
{ "major": "1", "minor": "11+", "gitVersion": "v1.11.0+ad103ed", "gitCommit": "ad103ed", "gitTreeState": "clean", "buildDate": "2019-01-09T06:44:10Z", "goVersion": "go1.10.3", "compiler": "gc", "platform": "linux/amd64" }
运行以下命令并查看输出,验证您可以访问集群机器配置:
$ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
运行以下命令并查看输出,验证您可以在端口上访问每个集群应用程序:
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.<cluster-name>.<base domain>/ cache-control: no-cacheHTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=39HoZgztDnzjJkq/JuLJMeoKNXlfiVv2YgZc09c3TBOBU4NI6kDXaJH1LdicNhN1UsQWzon4Dor9GWGfopaTEQ==; Path=/; Secure x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Tue, 17 Nov 2020 08:42:10 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=9b714eb87e93cf34853e87a92d6894be; path=/; HttpOnly; Secure; SameSite=None cache-control: private
运行以下命令并查看输出,验证您可以在端口 443 上访问每个集群应用程序:
$ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK referrer-policy: strict-origin-when-cross-origin set-cookie: csrf-token=UlYWOyQ62LWjw2h003xtYSKlh1a0Py2hhctw0WmV2YEdhJjFyQwWcGBsja261dGLgaYO0nxzVErhiXt6QepA7g==; Path=/; Secure; SameSite=Lax x-content-type-options: nosniff x-dns-prefetch-control: off x-frame-options: DENY x-xss-protection: 1; mode=block date: Wed, 04 Oct 2023 16:29:38 GMT content-type: text/html; charset=utf-8 set-cookie: 1e2670d92730b515ce3a1bb65da45062=1bf5e9573c9a2760c964ed1659cc1673; path=/; HttpOnly; Secure; SameSite=None cache-control: private
2.6.13. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 如果需要,请参阅注册断开连接的集群
- 设置 registry 并配置 registry 存储。
第 3 章 用户置备的基础架构
3.1. 用户置备的基础架构的 vSphere 安装要求
在您置备的基础架构上开始安装前,请确保您的 vSphere 环境满足以下安装要求。
3.1.1. VMware vSphere 基础架构要求
您必须在满足您使用的组件要求的 VMware vSphere 实例之一上安装 OpenShift Container Platform 集群:
- Version 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本
- Version 8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本
这两个版本都支持 Container Storage Interface (CSI) 迁移,它在 OpenShift Container Platform 4.14 中默认启用。
您可以在内部或 VMware Cloud 验证的供应商中托管 VMware vSphere 基础架构,以满足下表中概述的要求:
虚拟环境产品 | 所需的版本 |
---|---|
VMware 虚拟硬件 | 15 或更高版本 |
vSphere ESXi 主机 | 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或r VMware Cloud Foundation 5.0 或更新版本 |
vCenter 主机 | 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或r VMware Cloud Foundation 5.0 或更新版本 |
您必须确保在安装 OpenShift Container Platform 前同步 ESXi 主机上的时间。请参阅 VMware 文档中的 编辑主机时间配置。
组件 | 最低支持版本 | 描述 |
---|---|---|
虚拟机监控程序(Hypervisor) | vSphere 7.0 Update 2 或更新版本,VMware Cloud Foundation 4.3 或更新版本,vSphere 8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本,带有 virtual hardware version 15 | 此 hypervisor 版本是 Red Hat Enterprise Linux CoreOS (RHCOS) 支持的最低版本。有关与 RHCOS 兼容的 Red Hat Enterprise Linux (RHEL) 最新版本中支持的硬件的更多信息,请参阅红帽客户门户网站中的硬件。 |
可选: Networking(NSX-T) | vSphere 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,vSphere 8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本 | 有关 NSX 和 OpenShift Container Platform 兼容性的更多信息,请参阅 VMware 的 NSX 容器插件文档中的发行注记部分。 |
CPU 微架构 | x86-64-v2 或更高版本 | OpenShift 4.13 及更高版本基于 RHEL 9.2 主机操作系统,这提高了 x86-64-v2 的微架构要求。请参阅 RHEL Microarchitecture 要求文档。您可以按照这个 KCS 文章中介绍的步骤验证兼容性。 |
为确保在 Oracle® Cloud Infrastructure (OCI) 和 Oracle® Cloud VMware Solution (OCVS) 服务上运行的集群工作负载的最佳性能条件,请确保块卷的卷性能单元 (VPU) 为您的工作负载的大小。
以下列表提供了一些有关选择特定性能需要 VPU 的指导信息:
- 测试或概念验证环境:100 GB,20 到 30 个 VPU。
- 基础生产环境:500 GB 和 60 个 VPU.
- 高度使用生产环境:超过 500 GB,100 个或更多 VPU。
考虑分配额外的 VPU,以便为更新和扩展活动提供足够的容量。请参阅块卷性能级别(Oracle 文档)。
3.1.2. VMware vSphere CSI Driver Operator 要求
要安装 vSphere CSI Driver Operator,必须满足以下要求:
- VMware vSphere 版本: 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本
- vCenter 版本: 7.0 Update 2 或更新版本,或 VMware Cloud Foundation 4.3 或更新版本,8.0 Update 1 或更新版本,或 VMware Cloud Foundation 5.0 或更新版本
- 硬件版本 15 或更高版本的虚拟机
- 集群中还没有安装第三方 vSphere CSI 驱动程序
如果集群中存在第三方 vSphere CSI 驱动程序,OpenShift Container Platform 不会覆盖它。存在第三方 vSphere CSI 驱动程序可防止 OpenShift Container Platform 更新到 OpenShift Container Platform 4.13 或更高版本。
只有在安装清单中使用 platform: vsphere
部署的集群中才支持 VMware vSphere CSI Driver Operator。
其他资源
- 要删除第三方 vSphere CSI 驱动程序,请参阅删除第三方 vSphere CSI 驱动程序。
- 要为您的 vSphere 节点更新硬件版本,请参阅在 vSphere 中运行的节点上更新硬件。
3.1.3. 具有用户置备基础架构的集群的要求
对于包含用户置备的基础架构的集群,您必须部署所有所需的机器。
本节论述了在用户置备的基础架构上部署 OpenShift Container Platform 的要求。
3.1.3.1. vCenter 要求
在使用您提供的基础架构的 vCenter 上安装 OpenShift Container Platform 集群前,您必须准备您的环境。
所需的 vCenter 帐户权限
要在 vCenter 中安装 OpenShift Container Platform 集群,您的 vSphere 帐户必须包含读取和创建所需资源的权限。使用具有全局管理特权的帐户是访问所有所需权限的最简单方法。
例 3.1. 在 vSphere API 中安装所需的角色和权限
适用于角色的 vSphere 对象 | 必要时 | vSphere API 中所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter 集群 | 如果在集群 root 中创建虚拟机 |
|
vSphere vCenter 资源池 | 如果提供了现有的资源池 |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter |
如果安装程序创建虚拟机文件夹对于 UPI,如果集群没有使用 Machine API,则 |
|
例 3.2. 在 vCenter 图形用户界面 (GUI) 中安装所需的角色和权限
适用于角色的 vSphere 对象 | 必要时 | vCenter GUI 中所需的权限 |
---|---|---|
vSphere vCenter | Always |
|
vSphere vCenter 集群 | 如果在集群 root 中创建虚拟机 |
|
vSphere vCenter 资源池 | 如果提供了现有的资源池 |
|
vSphere Datastore | Always |
|
vSphere 端口组 | Always |
|
虚拟机文件夹 | Always |
|
vSphere vCenter Datacenter |
如果安装程序创建虚拟机文件夹对于 UPI,如果集群没有使用 Machine API,则 |
|
此外,用户需要一些 ReadOnly
权限,一些角色需要相应的权限来将权限代理到子对象。这些设置会因您是否将集群安装到现有文件夹而有所不同。
例 3.3. 所需的权限和传播设置
vSphere object | 必要时 | 传播到子对象 | 所需的权限 |
---|---|---|---|
vSphere vCenter | Always | False | 列出所需的权限 |
vSphere vCenter Datacenter | 现有文件夹 | False |
|
安装程序创建文件夹 | True | 列出所需的权限 | |
vSphere vCenter 集群 | 现有资源池 | False |
|
集群 root 中的虚拟机 | True | 列出所需的权限 | |
vSphere vCenter 数据存储 | Always | False | 列出所需的权限 |
vSphere Switch | Always | False |
|
vSphere 端口组 | Always | False | 列出所需的权限 |
vSphere vCenter 虚拟机文件夹 | 现有文件夹 | True | 列出所需的权限 |
vSphere vCenter 资源池 | 现有资源池 | True | 列出所需的权限 |
有关只使用所需权限创建帐户的更多信息,请参阅 vSphere 文档中的 vSphere 权限和用户管理任务。
将 OpenShift Container Platform 与 vMotion 搭配使用
如果要在 vSphere 环境中使用 vMotion,请在安装 OpenShift Container Platform 集群前考虑以下内容。
- 使用 Storage vMotion 可能会导致问题且不受支持。
使用 VMware compute vMotion 为 OpenShift Container Platform 计算机器和 control plane 机器迁移工作负载通常被支持,通常意味着您满足 vMotion 的所有 VMware 最佳实践。
为了帮助确保计算和 control plane 节点的正常运行时间,请确保遵循 VMware 最佳实践进行 vMotion,并使用 VMware 反关联性规则提高 OpenShift Container Platform 在维护或硬件问题期间的可用性。
有关 vMotion 和 anti-affinity 规则的更多信息,请参阅 VMware vSphere 文档以了解 vMotion 网络要求和虚拟机反关联性规则。
- 如果您在 pod 中使用 VMware vSphere 卷,请手动或通过 Storage vMotion 在数据存储间迁移虚拟机,这会导致 OpenShift Container Platform 持久性卷(PV)对象中的无效引用,这可能会导致数据丢失。
OpenShift Container Platform 不支持在数据存储间有选择地迁移 VMDK,使用数据存储集群进行虚拟机置备或动态或静态置备 PV,或使用作为数据存储集群一部分的数据存储来动态或静态置备 PV。
重要您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,使用 Storage vMotion 的存储分布式资源调度程序(SDRS)会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage DRS 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。
集群资源
当您部署使用您提供的基础架构的 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 租期中,您必须将 DHCP 配置为使用默认网关。
如果要使用静态 IP 地址置备节点,则不需要将 DHCP 用于网络。
如果您要为在用户置备的基础架构上安装的集群在不同 VLAN 中指定节点或节点组,您需要确保集群中的机器满足用户置备的基础架构的"网络连接要求"部分中支持的要求。
如果要安装到受限环境中,受限网络中的虚拟机必须有权访问 vCenter,以便它可以置备和管理节点、持久性卷声明 (PVC) 和其他资源。
确保集群中的每个 OpenShift Container Platform 节点都可以访问通过 DHCP 发现的网络时间协议 (NTP) 服务器。没有 NTP 服务器即可安装。但是,异步服务器时钟将导致错误,NTP 服务器会阻止。
另外,在安装 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 节点)为目标的负载均衡器。此记录必须由集群外的客户端和集群中的所有节点解析。 |
其他资源
3.1.3.2. 集群安装所需的机器
最小的 OpenShift Container Platform 集群需要以下主机:
主机 | 描述 |
---|---|
一个临时 bootstrap 机器 | 集群需要 bootstrap 机器在三台 control plane 机器上部署 OpenShift Container Platform 集群。您可在安装集群后删除 bootstrap 机器。 |
三台 control plane 机器 | control plane 机器运行组成 control plane 的 Kubernetes 和 OpenShift Container Platform 服务。 |
至少两台计算机器,也称为 worker 机器。 | OpenShift Container Platform 用户请求的工作负载在计算机器上运行。 |
要保持集群的高可用性,请将独立的物理主机用于这些集群机器。
bootstrap 和 control plane 机器必须使用 Red Hat Enterprise Linux CoreOS(RHCOS)作为操作系统。但是,计算机器可以在 Red Hat Enterprise Linux CoreOS(RHCOS)、Red Hat Enterprise Linux(RHEL) 8.6 和更高的版本。
请注意,RHCOS 基于 Red Hat Enterprise Linux(RHEL) 9.2,并继承其所有硬件认证和要求。查看 红帽企业 Linux 技术功能和限制。
3.1.3.3. 集群安装的最低资源要求
每台集群机器都必须满足以下最低要求:
机器 | 操作系统 | vCPU [1] | 虚拟内存 | Storage | 每秒输入/输出 (IOPS) [2] |
---|---|---|---|---|---|
bootstrap | RHCOS | 4 | 16 GB | 100 GB | 300 |
Control plane(控制平面) | RHCOS | 4 | 16 GB | 100 GB | 300 |
Compute | RHCOS、RHEL 8.6 及更新版本 [3] | 2 | 8 GB | 100 GB | 300 |
- 当未启用并发多线程 (SMT) 或超线程时,一个 vCPU 相当于一个物理内核。启用后,使用以下公式来计算对应的比例:(每个内核数的线程)× sockets = vCPU。
- OpenShift Container Platform 和 Kubernetes 对磁盘性能非常敏感,建议使用更快的存储速度,特别是 control plane 节点上需要 10 ms p99 fsync 持续时间的 etcd。请注意,在许多云平台上,存储大小和 IOPS 可一起扩展,因此您可能需要过度分配存储卷来获取足够的性能。
- 与所有用户置备的安装一样,如果您选择在集群中使用 RHEL 计算机器,则负责所有操作系统生命周期管理和维护,包括执行系统更新、应用补丁和完成所有其他必要的任务。RHEL 7 计算机器的使用已弃用,并已在 OpenShift Container Platform 4.10 及更新的版本中删除。
从 OpenShift Container Platform 版本 4.13 开始,RHCOS 基于 RHEL 版本 9.2,它更新了微架构要求。以下列表包含每个架构需要的最小指令集架构 (ISA):
- x86-64 体系结构需要 x86-64-v2 ISA
- ARM64 架构需要 ARMv8.0-A ISA
- IBM Power 架构需要 Power 9 ISA
- s390x 架构需要 z14 ISA
如需更多信息,请参阅 RHEL 架构。
如果平台的实例类型满足集群机器的最低要求,则 OpenShift Container Platform 支持使用它。
其他资源
3.1.3.4. 加密虚拟机的要求
您可以通过满足以下要求,在安装 OpenShift Container Platform 4.14 前对虚拟机进行加密。
您已在 vSphere 中配置了标准密钥供应商。如需更多信息,请参阅在 vCenter 服务器中添加 KMS。
重要不支持 vCenter 中的原生密钥供应商。如需更多信息,请参阅 vSphere 原生密钥提供程序概述。
- 您已在托管集群的所有 ESXi 主机上启用了主机加密模式。如需更多信息,请参阅启用主机加密模式。
- 您有一个启用了所有加密权限的 vSphere 帐户。如需更多信息,请参阅 Cryptographic Operations Privileges。
当您在标题为"安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程"的部分中部署 OVF 模板时,在为 OVF 模板选择存储时选择 "Encrypt this virtual virtual machine"。完成集群安装后,创建一个使用您用来加密虚拟机的加密存储策略的存储类。
其他资源
3.1.3.5. 证书签名请求管理
在使用您置备的基础架构时,集群只能有限地访问自动机器管理,因此您必须提供一种在安装后批准集群证书签名请求 (CSR) 的机制。kube-controller-manager
只能批准 kubelet 客户端 CSR。machine-approver
无法保证使用 kubelet 凭证请求的提供证书的有效性,因为它不能确认是正确的机器发出了该请求。您必须决定并实施一种方法,以验证 kubelet 提供证书请求的有效性并进行批准。
3.1.3.6. 用户置备的基础架构对网络的要求
所有 Red Hat Enterprise Linux CoreOS(RHCOS)机器都需要在启动时在 initramfs
中配置联网,以获取它们的 Ignition 配置文件。
在初次启动过程中,机器需要 IP 地址配置,该配置通过 DHCP 服务器或静态设置,提供所需的引导选项。建立网络连接后,机器会从 HTTP 或 HTTPS 服务器下载 Ignition 配置文件。然后,Ignition 配置文件用于设置每台机器的确切状态。Machine Config Operator 在安装后完成对机器的更多更改,如应用新证书或密钥。
建议使用 DHCP 服务器对集群机器进行长期管理。确保 DHCP 服务器已配置为向集群机器提供持久的 IP 地址、DNS 服务器信息和主机名。
如果用户置备的基础架构没有 DHCP 服务,您可以在 RHCOS 安装时向节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。
Kubernetes API 服务器必须能够解析集群机器的节点名称。如果 API 服务器和 worker 节点位于不同的区域中,您可以配置默认 DNS 搜索区域,以允许 API 服务器解析节点名称。另一种支持的方法是始终通过节点对象和所有 DNS 请求中的完全限定域名引用主机。
3.1.3.6.1. 通过 DHCP 设置集群节点主机名
在 Red Hat Enterprise Linux CoreOS(RHCOS)机器上,主机名是通过 NetworkManager 设置的。默认情况下,机器通过 DHCP 获取其主机名。如果主机名不是由 DHCP 提供,请通过内核参数或者其它方法进行静态设置,请通过反向 DNS 查找获取。反向 DNS 查找在网络初始化后进行,可能需要一些时间来解决。其他系统服务可以在此之前启动,并将主机名检测为 localhost
或类似的内容。您可以使用 DHCP 为每个集群节点提供主机名来避免这种情况。
另外,通过 DHCP 设置主机名可以绕过实施 DNS split-horizon 的环境中的手动 DNS 记录名称配置错误。
3.1.3.6.2. 网络连接要求
您必须配置机器之间的网络连接,以允许 OpenShift Container Platform 集群组件进行通信。每台机器都必须能够解析集群中所有其他机器的主机名。
本节详细介绍了所需的端口。
在连接的 OpenShift Container Platform 环境中,所有节点都需要访问互联网才能为平台容器拉取镜像,并向红帽提供遥测数据。
协议 | port | 描述 |
---|---|---|
ICMP | N/A | 网络可访问性测试 |
TCP |
| 指标 |
|
主机级别的服务,包括端口 9 | |
| Kubernetes 保留的默认端口 | |
| openshift-sdn | |
UDP |
| VXLAN |
| Geneve | |
|
主机级别的服务,包括端口 | |
| IPsec IKE 数据包 | |
| IPsec NAT-T 数据包 | |
|
UDP 端口
如果配置了外部 NTP 时间服务器,需要打开 UDP 端口 | |
TCP/UDP |
| Kubernetes 节点端口 |
ESP | N/A | IPsec Encapsulating Security Payload(ESP) |
协议 | port | 描述 |
---|---|---|
TCP |
| Kubernetes API |
协议 | port | 描述 |
---|---|---|
TCP |
| etcd 服务器和对等端口 |
用户置备的基础架构的 NTP 配置
OpenShift Container Platform 集群被配置为默认使用公共网络时间协议(NTP)服务器。如果要使用本地企业 NTP 服务器,或者集群部署在断开连接的网络中,您可以将集群配置为使用特定的时间服务器。如需更多信息,请参阅配置 chrony 时间服务 的文档。
如果 DHCP 服务器提供 NTP 服务器信息,Red Hat Enterprise Linux CoreOS(RHCOS)机器上的 chrony 时间服务会读取信息,并可以把时钟与 NTP 服务器同步。
其他资源
3.1.3.7. 用户置备的 DNS 要求
在 OpenShift Container Platform 部署中,以下组件需要 DNS 名称解析:
- The Kubernetes API
- OpenShift Container Platform 应用程序通配符
- bootstrap、control plane 和计算机器
Kubernetes API、bootstrap 机器、control plane 机器和计算机器也需要反向 DNS 解析。
DNS A/AAAA 或 CNAME 记录用于名称解析,PTR 记录用于反向名称解析。反向记录很重要,因为 Red Hat Enterprise Linux CoreOS(RHCOS)使用反向记录为所有节点设置主机名,除非 DHCP 提供主机名。另外,反向记录用于生成 OpenShift Container Platform 需要操作的证书签名请求(CSR)。
建议使用 DHCP 服务器为每个群集节点提供主机名。如需更多信息,请参阅用户置备的基础架构部分的 DHCP 建议。
用户置备的 OpenShift Container Platform 集群需要以下 DNS 记录,这些记录必须在安装前就位。在每个记录中,<cluster_name>
是集群名称,<base_domain>
是您在 install-config.yaml
文件中指定的基域。完整的 DNS 记录采用以下形式: <component>.<cluster_name>.<base_domain>.
。
组件 | 记录 | 描述 |
---|---|---|
Kubernetes API |
| DNS A/AAAA 或 CNAME 记录,以及用于标识 API 负载均衡器的 DNS PTR 记录。这些记录必须由集群外的客户端和集群中的所有节点解析。 |
| DNS A/AAAA 或 CNAME 记录,以及用于内部标识 API 负载均衡器的 DNS PTR 记录。这些记录必须可以从集群中的所有节点解析。 重要 API 服务器必须能够根据 Kubernetes 中记录的主机名解析 worker 节点。如果 API 服务器无法解析节点名称,则代理的 API 调用会失败,且您无法从 pod 检索日志。 | |
Routes |
| 通配符 DNS A/AAAA 或 CNAME 记录,指向应用程序入口负载均衡器。应用程序入口负载均衡器以运行 Ingress Controller Pod 的机器为目标。默认情况下,Ingress Controller Pod 在计算机器上运行。这些记录必须由集群外的客户端和集群中的所有节点解析。
例如,console |
bootstrap 机器 |
| DNS A/AAAA 或 CNAME 记录,以及用于标识 bootstrap 机器的 DNS PTR 记录。这些记录必须由集群中的节点解析。 |
control plane 机器 |
| DNS A/AAAA 或 CNAME 记录,以识别 control plane 节点的每台机器。这些记录必须由集群中的节点解析。 |
计算机器 |
| DNS A/AAAA 或 CNAME 记录,用于识别 worker 节点的每台机器。这些记录必须由集群中的节点解析。 |
在 OpenShift Container Platform 4.4 及更新的版本中,您不需要在 DNS 配置中指定 etcd 主机和 SRV 记录。
您可以使用 dig
命令验证名称和反向名称解析。如需了解详细的 验证步骤,请参阅为用户置备的基础架构验证 DNS 解析 一节。
3.1.3.7.1. 用户置备的集群的 DNS 配置示例
本节提供 A 和 PTR 记录配置示例,它们满足了在用户置备的基础架构上部署 OpenShift Container Platform 的 DNS 要求。样本不是为选择一个 DNS 解决方案提供建议。
在这个示例中,集群名称为 ocp4
,基域是 example.com
。
用户置备的集群的 DNS A 记录配置示例
以下示例是 BIND 区域文件,其中显示了用户置备的集群中名称解析的 A 记录示例。
例 3.4. DNS 区数据库示例
$TTL 1W @ IN SOA ns1.example.com. root ( 2019070700 ; serial 3H ; refresh (3 hours) 30M ; retry (30 minutes) 2W ; expiry (2 weeks) 1W ) ; minimum (1 week) IN NS ns1.example.com. IN MX 10 smtp.example.com. ; ; ns1.example.com. IN A 192.168.1.5 smtp.example.com. IN A 192.168.1.5 ; helper.example.com. IN A 192.168.1.5 helper.ocp4.example.com. IN A 192.168.1.5 ; api.ocp4.example.com. IN A 192.168.1.5 1 api-int.ocp4.example.com. IN A 192.168.1.5 2 ; *.apps.ocp4.example.com. IN A 192.168.1.5 3 ; bootstrap.ocp4.example.com. IN A 192.168.1.96 4 ; control-plane0.ocp4.example.com. IN A 192.168.1.97 5 control-plane1.ocp4.example.com. IN A 192.168.1.98 6 control-plane2.ocp4.example.com. IN A 192.168.1.99 7 ; compute0.ocp4.example.com. IN A 192.168.1.11 8 compute1.ocp4.example.com. IN A 192.168.1.7 9 ; ;EOF
- 1
- 为 Kubernetes API 提供名称解析。记录引用 API 负载均衡器的 IP 地址。
- 2
- 为 Kubernetes API 提供名称解析。记录引用 API 负载均衡器的 IP 地址,用于内部集群通信。
- 3
- 为通配符路由提供名称解析。记录引用应用程序入口负载均衡器的 IP 地址。应用程序入口负载均衡器以运行 Ingress Controller Pod 的机器为目标。默认情况下,Ingress Controller Pod 在计算机器上运行。注意
在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
- 4
- 为 bootstrap 机器提供名称解析。
- 5 6 7
- 为 control plane 机器提供名称解析。
- 8 9
- 为计算机器提供名称解析。
用户置备的集群的 DNS PTR 记录配置示例
以下示例 BIND 区域文件显示了用户置备的集群中反向名称解析的 PTR 记录示例。
例 3.5. 反向记录的 DNS 区数据库示例
$TTL 1W @ IN SOA ns1.example.com. root ( 2019070700 ; serial 3H ; refresh (3 hours) 30M ; retry (30 minutes) 2W ; expiry (2 weeks) 1W ) ; minimum (1 week) IN NS ns1.example.com. ; 5.1.168.192.in-addr.arpa. IN PTR api.ocp4.example.com. 1 5.1.168.192.in-addr.arpa. IN PTR api-int.ocp4.example.com. 2 ; 96.1.168.192.in-addr.arpa. IN PTR bootstrap.ocp4.example.com. 3 ; 97.1.168.192.in-addr.arpa. IN PTR control-plane0.ocp4.example.com. 4 98.1.168.192.in-addr.arpa. IN PTR control-plane1.ocp4.example.com. 5 99.1.168.192.in-addr.arpa. IN PTR control-plane2.ocp4.example.com. 6 ; 11.1.168.192.in-addr.arpa. IN PTR compute0.ocp4.example.com. 7 7.1.168.192.in-addr.arpa. IN PTR compute1.ocp4.example.com. 8 ; ;EOF
OpenShift Container Platform 应用程序通配符不需要 PTR 记录。
3.1.3.8. 用户置备的基础架构的负载均衡要求
在安装 OpenShift Container Platform 前,您必须置备 API 和应用程序入口负载均衡基础架构。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
如果要使用 Red Hat Enterprise Linux (RHEL) 实例部署 API 和应用程序入口负载均衡器,您必须单独购买 RHEL 订阅。
负载平衡基础架构必须满足以下要求:
API 负载均衡器 :提供一个通用端点,供用户(包括人工和机器)与平台交互和配置。配置以下条件:
- 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
- 无状态负载平衡算法。这些选项根据负载均衡器的实施而有所不同。
重要不要为 API 负载均衡器配置会话持久性。为 Kubernetes API 服务器配置会话持久性可能会导致出现过量 OpenShift Container Platform 集群应用程序流量,以及过量的在集群中运行的 Kubernetes API。
在负载均衡器的前端和后端配置以下端口:
表 3.10. API 负载均衡器 port 后端机器(池成员) internal 外部 描述 6443
Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。您必须为 API 服务器健康检查探测配置
/readyz
端点。X
X
Kubernetes API 服务器
22623
Bootstrap 和 control plane.bootstrap 机器初始化集群 control plane 后,您要从负载均衡器中删除 bootstrap 机器。
X
机器配置服务器
注意负载均衡器必须配置为,从 API 服务器关闭
/readyz
端点到从池中移除 API 服务器实例时最多需要 30 秒。在/readyz
返回错误或健康后的时间范围内,端点必须被删除或添加。每 5 秒或 10 秒探测一次,有两个成功请求处于健康状态,三个成为不健康的请求是经过良好测试的值。应用程序入口负载均衡器 :为应用程序流量从集群外部流提供入口点。OpenShift Container Platform 集群需要正确配置入口路由器。
配置以下条件:
- 仅第 4 层负载均衡.这可被称为 Raw TCP 或 SSL Passthrough 模式。
- 建议根据可用选项以及平台上托管的应用程序类型,使用基于连接的或基于会话的持久性。
提示如果应用程序入口负载均衡器可以看到客户端的真实 IP 地址,启用基于 IP 的会话持久性可以提高使用端到端 TLS 加密的应用程序的性能。
在负载均衡器的前端和后端配置以下端口:
表 3.11. 应用程序入口负载均衡器 port 后端机器(池成员) internal 外部 描述 443
默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。
X
X
HTTPS 流量
80
默认情况下,运行 Ingress Controller Pod、计算或 worker 的机器。
X
X
HTTP 流量
注意如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。
3.1.3.8.1. 用户置备的集群的负载均衡器配置示例
本节提供了一个满足用户置备集群的负载均衡要求的 API 和应用程序入口负载均衡器配置示例。示例是 HAProxy 负载均衡器的 /etc/haproxy/haproxy.cfg
配置。这个示例不是为选择一个负载平衡解决方案提供建议。
在这个示例中,将相同的负载均衡器用于 Kubernetes API 和应用入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
如果您使用 HAProxy 作为负载均衡器,并且 SELinux 设置为 enforcing
,您必须通过运行 setsebool -P haproxy_connect_any=1
来确保 HAProxy 服务可以绑定到配置的 TCP 端口。
例 3.6. API 和应用程序入口负载均衡器配置示例
global log 127.0.0.1 local2 pidfile /var/run/haproxy.pid maxconn 4000 daemon defaults mode http log global option dontlognull option http-server-close option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen api-server-6443 1 bind *:6443 mode tcp option httpchk GET /readyz HTTP/1.0 option log-health-checks balance roundrobin server bootstrap bootstrap.ocp4.example.com:6443 verify none check check-ssl inter 10s fall 2 rise 3 backup 2 server master0 master0.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 server master1 master1.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 server master2 master2.ocp4.example.com:6443 weight 1 verify none check check-ssl inter 10s fall 2 rise 3 listen machine-config-server-22623 3 bind *:22623 mode tcp server bootstrap bootstrap.ocp4.example.com:22623 check inter 1s backup 4 server master0 master0.ocp4.example.com:22623 check inter 1s server master1 master1.ocp4.example.com:22623 check inter 1s server master2 master2.ocp4.example.com:22623 check inter 1s listen ingress-router-443 5 bind *:443 mode tcp balance source server worker0 worker0.ocp4.example.com:443 check inter 1s server worker1 worker1.ocp4.example.com:443 check inter 1s listen ingress-router-80 6 bind *:80 mode tcp balance source server worker0 worker0.ocp4.example.com:80 check inter 1s server worker1 worker1.ocp4.example.com:80 check inter 1s
- 1
- 端口
6443
处理 Kubernetes API 流量并指向 control plane 机器。 - 2 4
- bootstrap 条目必须在 OpenShift Container Platform 集群安装前就位,且必须在 bootstrap 过程完成后删除它们。
- 3
- 端口
22623
处理机器配置服务器流量并指向 control plane 机器。 - 5
- 端口
443
处理 HTTPS 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。 - 6
- 端口
80
处理 HTTP 流量,并指向运行 Ingress Controller pod 的机器。默认情况下,Ingress Controller Pod 在计算机器上运行。注意如果要部署一个带有零计算节点的三节点集群,Ingress Controller Pod 在 control plane 节点上运行。在三节点集群部署中,您必须配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。
如果您使用 HAProxy 作为负载均衡器,您可以通过在 HAProxy 节点上运行 netstat -nltupe
来检查 haproxy
进程是否在侦听端口 6443
、22623
、443
和 80
。
3.2. 准备使用用户置备的基础架构安装集群
您可以通过完成以下步骤,准备在 vSphere 上安装 OpenShift Container Platform 集群:
下载安装程序。
注意如果您要在断开连接的环境中安装,您可以从镜像内容中提取安装程序。如需更多信息 ,请参阅为断开连接的安装镜像镜像。
安装 OpenShift CLI (
oc
)。注意如果要在断开连接的环境中安装,请将
oc
安装到镜像主机上。- 生成 SSH 密钥对。您可以在部署后使用此密钥对在 OpenShift Container Platform 集群的节点上进行身份验证。
- 准备用户置备的基础架构。
- 验证 DNS 解析。
3.2.1. 获取安装程序
在安装 OpenShift Container Platform 前,将安装文件下载到您用于安装的主机上。
先决条件
- 您有一台运行 Linux 或 macOS 的计算机,至少有 1.2 GB 本地磁盘空间。
流程
- 进入 Red Hat Hybrid Cloud Console 上的 Cluster Type 页。如果您有红帽帐户,请使用您的凭证登录。如果没有,请创建一个帐户。
- 在页的 Run it yourself 部分中选择您的基础架构供应商。
- 从 OpenShift 安装程序下的下拉菜单中选择您的主机操作系统和架构,然后点下载安装程序。
将下载的文件保存在要存储安装配置文件的目录中。
重要- 安装程序会在用来安装集群的计算机上创建几个文件。在完成集群安装后,您必须保留安装程序和安装程序所创建的文件。删除集群需要这两个文件。
- 删除安装程序创建的文件不会删除您的集群,即使集群在安装过程中失败也是如此。要删除集群,请为特定云供应商完成 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。
另外,您还可以从红帽客户门户网站检索安装程序,您可以在其中指定要下载的安装程序版本。但是,您需要有一个有效的订阅才能访问此页。
3.2.2. 通过下载二进制文件安装 OpenShift CLI
您可以安装 OpenShift CLI(oc
)来使用命令行界面与 OpenShift Container Platform 进行交互。您可以在 Linux、Windows 或 macOS 上安装 oc
。
如果安装了旧版本的 oc
,则无法使用 OpenShift Container Platform 4.14 中的所有命令。下载并安装新版本的 oc
。
在 Linux 上安装 OpenShift CLI
您可以按照以下流程在 Linux 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 产品变体 下拉列表中选择架构。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.14 Linux Client 条目旁的 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 下载页面。
- 从 版本 下拉列表中选择适当的版本。
- 点 OpenShift v4.14 Windows Client 条目旁的 Download Now 来保存文件。
- 使用 ZIP 程序解压存档。
将
oc
二进制文件移到PATH 中的目录中
。要查看您的
PATH
,请打开命令提示并执行以下命令:C:\> path
验证
安装 OpenShift CLI 后,可以使用
oc
命令:C:\> oc <command>
在 macOS 上安装 OpenShift CLI
您可以按照以下流程在 macOS 上安装 OpenShift CLI(oc
)二进制文件。
流程
- 导航到红帽客户门户网站上的 OpenShift Container Platform 下载页面。
- 从 版本 下拉列表中选择适当的版本。
点 OpenShift v4.14 macOS Client 条目旁的 Download Now 来保存文件。
注意对于 macOS arm64,请选择 OpenShift v4.14 macOS arm64 Client 条目。
- 解包和解压存档。
将
oc
二进制文件移到 PATH 的目录中。要查看您的
PATH
,请打开终端并执行以下命令:$ echo $PATH
验证
使用
oc
命令验证安装:$ oc <command>
3.2.3. 为集群节点 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
、ppc64le
和s390x
架构上安装使用 RHEL 加密库(这些加密库已提交给 NIST 用于 FIPS 140-2/140-3 验证)的 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 公钥。
3.2.4. 准备用户置备的基础架构
在用户置备的基础架构上安装 OpenShift Container Platform 之前,您必须准备底层基础架构。
本节详细介绍了设置集群基础架构以准备 OpenShift Container Platform 安装所需的高级别步骤。这包括为您的集群节点配置 IP 网络和网络连接,通过防火墙启用所需的端口,以及设置所需的 DNS 和负载均衡基础架构。
准备后,集群基础架构必须满足 带有用户置备的基础架构部分的集群要求。
先决条件
- 您已参阅 OpenShift Container Platform 4.x Tested Integrations 页面。
- 您已查看了 具有用户置备基础架构的集群要求部分中详述的基础架构 要求。
流程
如果您使用 DHCP 向集群节点提供 IP 网络配置,请配置 DHCP 服务。
- 将节点的持久 IP 地址添加到您的 DHCP 服务器配置。在您的配置中,将相关网络接口的 MAC 地址与每个节点的预期 IP 地址匹配。
当您使用 DHCP 为集群机器配置 IP 寻址时,机器还通过 DHCP 获取 DNS 服务器信息。定义集群节点通过 DHCP 服务器配置使用的持久性 DNS 服务器地址。
注意如果没有使用 DHCP 服务,则必须在 RHCOS 安装时为节点提供 IP 网络配置和 DNS 服务器地址。如果要从 ISO 镜像安装,这些参数可作为引导参数传递。如需有关静态 IP 置备和高级网络选项的更多信息,请参阅 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程 部分。
在 DHCP 服务器配置中定义集群节点的主机名。有关 主机名注意事项的详情,请参阅通过 DHCP 设置集群节点 主机名部分。
注意如果没有使用 DHCP 服务,集群节点可以通过反向 DNS 查找来获取其主机名。
- 确保您的网络基础架构提供集群组件之间所需的网络连接。有关 要求的详情,请参阅用户置备的基础架构 的网络要求部分。
将防火墙配置为启用 OpenShift Container Platform 集群组件进行通信所需的端口。如需有关所需端口的详细信息,请参阅用户置备的基础架构 部分的网络要求。
重要默认情况下,OpenShift Container Platform 集群可以访问端口
1936
,因为每个 control plane 节点都需要访问此端口。避免使用 Ingress 负载均衡器公开此端口,因为这样做可能会导致公开敏感信息,如统计信息和指标(与 Ingress Controller 相关的统计信息和指标)。
为集群设置所需的 DNS 基础架构。
- 为 Kubernetes API、应用程序通配符、bootstrap 机器、control plane 机器和计算机器配置 DNS 名称解析。
为 Kubernetes API、bootstrap 机器、control plane 机器和计算机器配置反向 DNS 解析。
如需有关 OpenShift Container Platform DNS 要求的更多信息,请参阅用户置备 DNS 要求部分。
验证您的 DNS 配置。
- 从安装节点,针对 Kubernetes API 的记录名称、通配符路由和集群节点运行 DNS 查找。验证响应中的 IP 地址是否与正确的组件对应。
从安装节点,针对负载均衡器和集群节点的 IP 地址运行反向 DNS 查找。验证响应中的记录名称是否与正确的组件对应。
有关详细的 DNS 验证步骤,请参阅用户置备的基础架构 验证 DNS 解析部分。
- 置备所需的 API 和应用程序入口负载平衡基础架构。有关 要求的更多信息,请参阅用户置备的基础架构的负载平衡 要求部分。
某些负载平衡解决方案要求在初始化负载平衡之前,对群集节点进行 DNS 名称解析。
3.2.5. 验证用户置备的基础架构的 DNS 解析
您可以在在用户置备的基础架构上安装 OpenShift Container Platform 前验证 DNS 配置。
本节中详述的验证步骤必须在安装集群前成功。
先决条件
- 已为您的用户置备的基础架构配置了所需的 DNS 记录。
流程
从安装节点,针对 Kubernetes API 的记录名称、通配符路由和集群节点运行 DNS 查找。验证响应中包含的 IP 地址是否与正确的组件对应。
对 Kubernetes API 记录名称执行查询。检查结果是否指向 API 负载均衡器的 IP 地址:
$ dig +noall +answer @<nameserver_ip> api.<cluster_name>.<base_domain> 1
- 1
- 将
<nameserver_ip>
替换为 nameserver 的 IP 地址,<cluster_name>
替换为您的集群名称,<base_domain>
替换为您的基本域名。
输出示例
api.ocp4.example.com. 604800 IN A 192.168.1.5
对 Kubernetes 内部 API 记录名称执行查询。检查结果是否指向 API 负载均衡器的 IP 地址:
$ dig +noall +answer @<nameserver_ip> api-int.<cluster_name>.<base_domain>
输出示例
api-int.ocp4.example.com. 604800 IN A 192.168.1.5
测试
*.apps.<cluster_name>.<base_domain> DNS
通配符查找示例。所有应用程序通配符查询都必须解析为应用程序入口负载均衡器的 IP 地址:$ dig +noall +answer @<nameserver_ip> random.apps.<cluster_name>.<base_domain>
输出示例
random.apps.ocp4.example.com. 604800 IN A 192.168.1.5
注意在示例中,将相同的负载均衡器用于 Kubernetes API 和应用程序入口流量。在生产环境中,您可以单独部署 API 和应用程序入口负载均衡器,以便可以隔离扩展每个负载均衡器基础架构。
您可以使用另一个通配符值替换
random
。例如,您可以查询到 OpenShift Container Platform 控制台的路由:$ dig +noall +answer @<nameserver_ip> console-openshift-console.apps.<cluster_name>.<base_domain>
输出示例
console-openshift-console.apps.ocp4.example.com. 604800 IN A 192.168.1.5
针对 bootstrap DNS 记录名称运行查询。检查结果是否指向 bootstrap 节点的 IP 地址:
$ dig +noall +answer @<nameserver_ip> bootstrap.<cluster_name>.<base_domain>
输出示例
bootstrap.ocp4.example.com. 604800 IN A 192.168.1.96
- 使用此方法对 control plane 和计算节点的 DNS 记录名称执行查找。检查结果是否与每个节点的 IP 地址对应。
从安装节点,针对负载均衡器和集群节点的 IP 地址运行反向 DNS 查找。验证响应中包含的记录名称是否与正确的组件对应。
对 API 负载均衡器的 IP 地址执行反向查找。检查响应是否包含 Kubernetes API 和 Kubernetes 内部 API 的记录名称:
$ dig +noall +answer @<nameserver_ip> -x 192.168.1.5
输出示例
5.1.168.192.in-addr.arpa. 604800 IN PTR api-int.ocp4.example.com. 1 5.1.168.192.in-addr.arpa. 604800 IN PTR api.ocp4.example.com. 2
注意OpenShift Container Platform 应用程序通配符不需要 PTR 记录。针对应用程序入口负载均衡器的 IP 地址解析反向 DNS 解析不需要验证步骤。
对 bootstrap 节点的 IP 地址执行反向查找。检查结果是否指向 bootstrap 节点的 DNS 记录名称:
$ dig +noall +answer @<nameserver_ip> -x 192.168.1.96
输出示例
96.1.168.192.in-addr.arpa. 604800 IN PTR bootstrap.ocp4.example.com.
- 使用此方法对 control plane 和计算节点的 IP 地址执行反向查找。检查结果是否与每个节点的 DNS 记录名称对应。
3.3. 使用用户置备的基础架构在 vSphere 上安装集群
在 OpenShift Container Platform 版本 4.14 中,您可以在您置备的 VMware vSphere 基础架构上安装集群。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
执行用户置备的基础架构安装的步骤仅作为示例。使用您提供的基础架构安装集群需要了解 vSphere 平台和 OpenShift Container Platform 的安装过程。使用用户置备的基础架构安装说明作为指南 ; 您可以通过其他方法创建所需的资源。
3.3.1. 先决条件
- 您已完成了 使用用户置备的基础架构准备安装集群 中的任务。
- 您检查了 VMware 平台许可证。红帽不会对 VMware 许可证产生任何限制,但有些 VMware 基础架构组件需要许可。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
-
已为集群置备了 持久性存储。要部署私有镜像 registry,您的存储必须提供
ReadWriteMany
访问模式。 - 完成安装要求您在 vSphere 主机上上传 Red Hat Enterprise Linux CoreOS(RHCOS)OVA。完成此过程的机器需要访问 vCenter 和 ESXi 主机上的端口 443。您确认可以访问端口 443。
- 如果您使用防火墙,您与管理员确认可以访问端口 443。control plane 节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,才能成功安装。
如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
3.3.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.14 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
3.3.3. VMware vSphere 区域和区启用
您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。每个数据中心都可以运行多个集群。此配置降低了导致集群失败的硬件故障或网络中断的风险。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
VMware vSphere 区域和区启用功能需要 vSphere Container Storage Interface (CSI) 驱动程序作为集群中的默认存储驱动程序。因此,这个功能只在新安装的集群中可用。
对于从上一版本升级的集群,您必须为集群启用 CSI 自动迁移。然后,您可以为升级的集群配置多个区域和区域。
默认安装配置将集群部署到单个 vSphere 数据中心。如果要将集群部署到多个 vSphere 数据中心,您必须创建一个启用地区和区功能的安装配置文件。
默认 install-config.yaml
文件包含 vcenters
和 failureDomains
字段,您可以在其中为 OpenShift Container Platform 集群指定多个 vSphere 数据中心和集群。如果要在由单个数据中心组成的 vSphere 环境中安装 OpenShift Container Platform 集群,您可以将这些字段留空。
以下列表描述了为集群定义区和区域相关的术语:
-
故障域:建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 -
Region :指定 vCenter 数据中心。您可以使用
openshift-region
标签类别中的标签来定义区域。 -
Zone:指定一个 vCenter 集群。您可以使用
openshift-zone
标签类别中的标签来定义区。
如果您计划在 install-config.yaml
文件中指定多个故障域,则必须在创建配置文件前创建标签类别、区域标签和区域标签。
您必须为每个代表一个区域的 vCenter 数据中心创建一个 vCenter 标签。另外,您必须为比数据中心(代表一个区)中运行的每个集群创建一个 vCenter 标签。创建标签后,您必须将每个标签附加到对应的数据中心和集群。
下表概述了在单个 VMware vCenter 中运行的多个 vSphere 数据中心的区域、区域和标签之间的关系示例。
数据中心(区域) | 集群(区) | Tags |
---|---|---|
us-east | us-east-1 | us-east-1a |
us-east-1b | ||
us-east-2 | us-east-2a | |
us-east-2b | ||
us-west | us-west-1 | us-west-1a |
us-west-1b | ||
us-west-2 | us-west-2a | |
us-west-2b |
3.3.4. 手动创建安装配置文件
对于用户置备的 OpenShift Container Platform 安装,需要手动生成安装配置文件。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
$ mkdir <installation_directory>
重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml
文件模板示例,并将其保存在<installation_directory>
中。注意此配置文件必须命名为
install-config.yaml
。-
如果要安装三节点集群,请通过将
compute.replicas
参数设置为0
来修改install-config.yaml
文件。这样可确保集群的 control plane 可以调度。如需更多信息,请参阅"在 vSphere 上安装三节点集群"。 备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程的下一步中使用。现在必须备份它。
其他资源
3.3.4.1. VMware vSphere 的 install-config.yaml
文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
additionalTrustBundlePolicy: Proxyonly apiVersion: v1 baseDomain: example.com 1 compute: 2 - architecture: amd64 name: <worker_node> platform: {} replicas: 0 3 controlPlane: 4 architecture: amd64 name: <parent_node> platform: {} replicas: 3 5 metadata: creationTimestamp: null name: test 6 networking: --- platform: vsphere: failureDomains: 7 - name: <failure_domain_name> region: <default_region_name> server: <fully_qualified_domain_name> topology: computeCluster: "/<datacenter>/host/<cluster>" datacenter: <datacenter> 8 datastore: "/<datacenter>/datastore/<datastore>" 9 networks: - <VM_Network_name> resourcePool: "/<datacenter>/host/<cluster>/Resources/<resourcePool>" 10 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" 11 zone: <default_zone_name> vcenters: - datacenters: - <datacenter> password: <password> 12 port: 443 server: <fully_qualified_domain_name> 13 user: administrator@vsphere.local diskType: thin 14 fips: false 15 pullSecret: '{"auths": ...}' 16 sshKey: 'ssh-ed25519 AAAA...' 17
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 4
controlPlane
部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。两个部分都定义单个机器池,因此只使用一个 control plane。OpenShift Container Platform 不支持定义多个计算池。- 3
replicas
参数的值必须设置为0
。此参数控制集群为您创建和管理的 worker 数量,在使用用户置备的基础架构时集群不会执行这些功能。在完成 OpenShift Container Platform 安装前,您必须手动为集群部署 worker 机器。- 5
- 您添加到集群的 control plane 机器数量。由于集群使用此值作为集群中的 etcd 端点数量,所以该值必须与您部署的 control plane 机器数量匹配。
- 6
- 您在 DNS 记录中指定的集群名称。
- 7
- 建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 - 8
- vSphere 数据中心.
- 9
- 保存虚拟机文件、模板和 ISO 镜像的 vSphere 数据存储路径。重要
您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,Storage vMotion 会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage vMotion 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。 - 10
- 可选: 对于安装程序置备的基础架构,安装程序创建虚拟机的现有资源池的绝对路径,例如
/<datacenter_name>/host/<cluster_name>/Resources/<resource_pool_name>/<optional_nested_resource_pool_name>
。如果没有指定值,则会在集群/example_datacenter/host/example_cluster/Resources
根中安装资源。 - 11
- 可选: 对于安装程序置备的基础架构,安装程序创建虚拟机的现有文件夹的绝对路径,如
/<datacenter_name>/vm/<folder_name>/<subfolder_name>
。如果没有提供这个值,安装程序会在数据中心虚拟机文件夹中创建一个顶层文件夹,其名称为基础架构 ID。如果您为集群提供基础架构,且您不想使用默认的StorageClass
对象(名为thin
),您可以从install-config.yaml
文件中省略folder
参数。 - 12
- 与 vSphere 用户关联的密码。
- 13
- vCenter 服务器的完全限定主机名或 IP 地址。重要
Cluster Cloud Controller Manager Operator 对提供的主机名或 IP 地址执行连接检查。确保为可访问的 vCenter 服务器指定主机名或 IP 地址。如果您向不存在的 vCenter 服务器提供元数据,集群安装会在 bootstrap 阶段失败。
- 14
- vSphere 磁盘置备方法。
- 15
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 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。
- 16
- 从 OpenShift Cluster Manager 获取的 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
- 17
- Red Hat Enterprise Linux CoreOS(RHCOS)中
core
用户的默认 SSH 密钥的公钥部分。
3.3.4.2. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 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
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
3.3.4.3. 为 VMware vCenter 配置区域和区域
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。
之前版本的 OpenShift Container Platform 的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
会提示您显示在配置文件中已弃用字段的警告信息。
这个示例使用 govc
命令。govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽支持团队不维护 govc
命令。有关下载和安装 govc
的说明,请参阅 VMware 文档网站
先决条件
您有一个现有的
install-config.yaml
安装配置文件。重要您必须为 OpenShift Container Platform 集群指定一个故障域,以便您可以为 VMware vCenter 服务器置备数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中置备虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
流程
输入以下
govc
命令行工具命令,以创建openshift-region
和openshift-zone
vCenter 标签类别:重要如果为
openshift-region
和openshift-zone
vCenter 标签类别指定不同的名称,OpenShift Container Platform 集群的安装会失败。$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为您要部署集群的每个区域 vSphere 数据中心创建一个 region 标签,请在终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为您要部署集群的每个 vSphere 集群创建一个区标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
输入以下命令将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<datacenter_1>
输入以下命令将区标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<datacenter_1>/host/vcs-mdcnc-workload-1
- 进入包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
在 vSphere 数据中心中定义的多个数据中心的 install-config.yaml
文件示例
--- compute: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- controlPlane: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- platform: vsphere: vcenters: --- datacenters: - <datacenter1_name> - <datacenter2_name> failureDomains: - name: <machine_pool_zone_1> region: <region_tag_1> zone: <zone_tag_1> server: <fully_qualified_domain_name> topology: datacenter: <datacenter1> computeCluster: "/<datacenter1>/host/<cluster1>" networks: - <VM_Network1_name> datastore: "/<datacenter1>/datastore/<datastore1>" resourcePool: "/<datacenter1>/host/<cluster1>/Resources/<resourcePool1>" folder: "/<datacenter1>/vm/<folder1>" - name: <machine_pool_zone_2> region: <region_tag_2> zone: <zone_tag_2> server: <fully_qualified_domain_name> topology: datacenter: <datacenter2> computeCluster: "/<datacenter2>/host/<cluster2>" networks: - <VM_Network2_name> datastore: "/<datacenter2>/datastore/<datastore2>" resourcePool: "/<datacenter2>/host/<cluster2>/Resources/<resourcePool2>" folder: "/<datacenter2>/vm/<folder2>" ---
3.3.5. 创建 Kubernetes 清单和 Ignition 配置文件
由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成 Kubernetes 清单和 Ignition 配置文件来配置机器。
安装配置文件转换为 Kubernetes 清单。清单嵌套到 Ignition 配置文件中,稍后用于配置集群机器。
-
OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
先决条件
- 已获得 OpenShift Container Platform 安装程序。
-
已创建
install-config.yaml
安装配置文件。
流程
进入包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定包含您创建的install-config.yaml
文件的安装目录。
删除定义 control plane 机器的 Kubernetes 清单文件、计算机器集和 control plane 机器集:
$ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml openshift/99_openshift-machine-api_master-control-plane-machine-set.yaml
由于您要自行创建和管理这些资源,因此不必初始化这些资源。
您可以使用机器 API 来保留计算机器集文件来创建计算机器,但您必须更新对它们的引用以匹配您的环境。
警告如果您要安装一个三节点集群,请跳过以下步骤,以便可以调度 control plane 节点。
重要当您将 control plane 节点从默认的不可调度配置为可以调度时,需要额外的订阅。这是因为 control plane 节点变为计算节点。
检查
<installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的
mastersSchedulable
参数是否已设置为false
。此设置可防止在 control plane 机器上调度 pod:-
打开
<installation_directory>/manifests/cluster-scheduler-02-config.yml
文件。 -
找到
mastersSchedulable
参数,并确保它被设置为false
。 - 保存并退出 文件。
-
打开
要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令:
$ ./openshift-install create ignition-configs --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定相同的安装目录。
为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。
kubeadmin-password
和kubeconfig
文件在./<installation_directory>/auth
目录中创建:. ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
3.3.6. 提取基础架构名称
Ignition 配置文件包含一个唯一集群标识符,您可以使用它在 VMware vSphere 中唯一地标识您的集群。如果计划使用集群标识符作为虚拟机文件夹的名称,则必须提取它。
先决条件
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已为集群生成 Ignition 配置文件。
-
已安装
jq
软件包。
3.3.7. 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程
要在 VMware vSphere 上的用户置备的基础架构上安装 OpenShift Container Platform,您必须在 vSphere 主机上安装 Red Hat Enterprise Linux CoreOS(RHCOS)。安装 RHCOS 时,您必须为您要安装的机器类型提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。如果您配置了适当的网络、DNS 和负载均衡基础架构,OpenShift Container Platform bootstrap 过程会在 RHCOS 机器重启后自动启动。
先决条件
- 已获取集群的 Ignition 配置文件。
- 具有 HTTP 服务器的访问权限,以便您可从计算机进行访问,并且您创建的机器也可访问此服务器。
- 您已创建了 vSphere 集群。
流程
-
将名为
<installation_directory>/bootstrap.ign
的 bootstrap Ignition 配置文件上传到 HTTP 服务器。注意此文件的 URL。 将 bootstrap 节点的以下辅助 Ignition 配置文件保存到计算机中,存为
<installation_directory>/merge-bootstrap.ign
:{ "ignition": { "config": { "merge": [ { "source": "<bootstrap_ignition_config_url>", 1 "verification": {} } ] }, "timeouts": {}, "version": "3.2.0" }, "networkd": {}, "passwd": {}, "storage": {}, "systemd": {} }
- 1
- 指定您托管的 bootstrap Ignition 配置文件的 URL。
为 bootstrap 机器创建虚拟机(VM)时,您要使用此 Ignition 配置文件。
找到安装程序创建的以下 Ignition 配置文件:
-
<installation_directory>/master.ign
-
<installation_directory>/worker.ign
-
<installation_directory>/merge-bootstrap.ign
-
将 Ignition 配置文件转换为 Base64 编码。在此流程中,您必须将这些文件添加到虚拟机中的额外配置参数
guestinfo.ignition.config.data
中。例如,如果使用 Linux 操作系统,您可以使用
base64
命令对文件进行编码。$ base64 -w0 <installation_directory>/master.ign > <installation_directory>/master.64
$ base64 -w0 <installation_directory>/worker.ign > <installation_directory>/worker.64
$ base64 -w0 <installation_directory>/merge-bootstrap.ign > <installation_directory>/merge-bootstrap.64
重要如果您计划在安装完成后在集群中添加更多计算机器,请不要删除这些文件。
获取 RHCOS OVA 镜像。镜像位于 RHCOS 镜像镜像页面。
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。
文件名包含 OpenShift Container Platform 版本号,格式为
rhcos-vmware.<architecture>.ova
。在 vSphere 客户端中,在数据中心中创建一个文件夹来存储虚拟机。
- 单击 VMs and Templates 视图。
- 右键单击您的数据中心的名称。
- 点击 New Folder → New VM and Template Folder。
-
在显示的窗口中,输入文件夹名称。如果您没有在
install-config.yaml
文件中指定现有文件夹,请创建一个名称与基础架构 ID 相同的文件夹。您可以使用这个文件夹名称,因此 vCenter 会在适当的位置为 Workspace 配置动态置备存储。
在 vSphere 客户端中,为 OVA 镜像创建一个模板,然后根据需要克隆模板。
注意在以下步骤中,您将创建模板,然后克隆所有集群机器的模板。然后,您在置备虚拟机时为该克隆的机器类型提供 Ignition 配置文件的位置。
- 在 Hosts and Clusters 选项卡中,右键点击您的集群名称并选择 Deploy OVF Template。
- 在 Select an OVF 选项卡中,指定您下载的 RHCOS OVA 文件的名称。
-
在 Select a name and folder 选项卡中,为您的模板设置 虚拟机名称,如
Template-RHCOS
。点击 vSphere 集群的名称并选择您在上一步中创建的文件夹。 - 在 Select a compute resource 选项卡中,点击 vSphere 集群的名称。
在 Select storage 选项卡中,配置虚拟机的存储选项。
- 根据您的存储首选项,选择 Thin Provision 或 Thick Provision。
-
选择您在
install-config.yaml
文件中指定的数据存储。 - 如果要加密虚拟机,请选择 Encrypt this virtual machine。如需更多信息,请参阅标题为"加密虚拟机的要求"的部分。
- 在 Select network 选项卡中,指定您为集群配置的网络(如果可用)。
在创建 OVF 模板时,不要在 Customize template 选项卡上指定值,也不会进一步配置模板。
重要不要启动原始虚拟机模板。VM 模板必须保持关闭,必须为新的 RHCOS 机器克隆。启动虚拟机模板会将虚拟机模板配置为平台上的虚拟机,这样可防止它被用作计算机器集可应用配置的模板。
可选: 如果需要,更新 VM 模板中配置的虚拟硬件版本。如需更多信息 ,请参阅 VMware 文档中的将虚拟机升级到最新硬件版本。
重要如有必要,建议您在从虚拟机创建虚拟机前将虚拟机模板的硬件版本更新为版本 15。在 vSphere 上运行的集群节点使用硬件版本 13 现已弃用。如果您导入的模板默认为硬件版本 13,您必须在将 VM 模板升级到硬件版本 15 前确保 ESXi 主机为 6.7U3 或更高版本。如果您的 vSphere 版本小于 6.7U3,您可以跳过此升级步骤;但是,计划将来的 OpenShift Container Platform 版本删除对小于 6.7U3 的硬件版本 13 和 vSphere 版本的支持。
部署模板后,为集群中的机器部署虚拟机。
- 右键点击模板名称,再点击 Clone → Clone to Virtual Machine。
在 Select a name and folder 选项卡中,指定虚拟机的名称。您可以在名称中包含机器类型,如
control-plane-0 或
compute-1
。注意确保 vSphere 安装中的所有虚拟机名称都是唯一的。
- 在 Select a name and folder 选项卡中,选择您为集群创建的文件夹名称。
- 在 Select a compute resource 选项卡中,选择数据中心中的主机名称。
- 在 Select clone options 选项卡中,选择 Customize this virtual machine's hardware。
在 Customize hardware 选项卡上,点 Advanced Parameters。
重要以下配置建议仅用于演示目的。作为集群管理员,您必须根据集群上的资源需求来配置资源。为了更好地管理集群资源,请考虑从集群的 root 资源池创建资源池。
可选:覆盖 vSphere 中的默认 DHCP 网络。启用静态 IP 网络:
设置静态 IP 配置:
示例命令
$ export IPCFG="ip=<ip>::<gateway>:<netmask>:<hostname>:<iface>:none nameserver=srv1 [nameserver=srv2 [nameserver=srv3 [...]]]"
示例命令
$ export IPCFG="ip=192.168.100.101::192.168.100.254:255.255.255.0:::none nameserver=8.8.8.8"
在从 vSphere 中的 OVA 引导虚拟机前,设置
guestinfo.afterburn.initrd.network-kargs
属性:示例命令
$ govc vm.change -vm "<vm_name>" -e "guestinfo.afterburn.initrd.network-kargs=${IPCFG}"
通过在 Attribute 和 Values 字段中指定数据来添加以下配置参数名称和值。确保为您创建的每个参数选择 Add 按钮。
-
guestinfo.ignition.config.data
:找到您在此流程中创建的 base-64 编码文件,并粘贴此机器类型的 base64 编码 Ignition 配置文件的内容。 -
guestinfo.ignition.config.data.encoding
:指定base64
。 -
disk.EnableUUID
:指定TRUE
。 -
stealclock.enable
:如果没有定义此参数,请添加它并指定TRUE
。 - 从集群的 root 资源池创建子资源池。执行此子资源池中的资源分配。
-
- 在 Customize hardware 选项卡的 Virtual Hardware 面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储的数量满足机器类型的最低要求。
- 完成剩余的配置步骤。点 Finish 按钮,您已完成克隆操作。
- 在 Virtual Machines 选项卡中,右键点您的虚拟机,然后选择 Power → Power On。
检查控制台输出,以验证 Ignition 是否运行。
示例命令
Ignition: ran on 2022/03/14 14:48:33 UTC (this boot) Ignition: user-provided config was applied
后续步骤
对每台机器执行前面的步骤,为集群创建其余机器。
重要此时您必须创建 bootstrap 和 control plane 机器。由于计算机器上已默认部署了一些 Pod,因此还要在安装集群前至少创建两台计算机器。
3.3.8. 将更多计算机器添加到 vSphere 中的集群
您可以将更多计算机器添加到 VMware vSphere 上的用户置备的 OpenShift Container Platform 集群中。
在 OpenShift Container Platform 集群中部署 vSphere 模板后,您可以为该集群中的机器部署虚拟机(VM)。
如果您要安装三节点集群,请跳过这一步。三节点集群包含三个 control plane 机器,它们也可以充当计算机器。
先决条件
- 获取计算机器的 base64 编码 Ignition 文件。
- 您可以访问您为集群创建的 vSphere 模板。
流程
- 右键点击模板的名称,再点击 Clone → Clone to Virtual Machine。
在 Select a name and folder 选项卡中,指定虚拟机的名称。您可以在名称中包含机器类型,如
compute-1
。注意确保 vSphere 安装中的所有虚拟机名称都是唯一的。
- 在 Select a name and folder 选项卡中,选择您为集群创建的文件夹名称。
- 在 Select a compute resource 选项卡中,选择数据中心中的主机名称。
- 在 Select storage 选项卡中,为您的配置和磁盘文件选择存储。
- 在 Select clone options 选项卡中,选择 Customize this virtual machine's hardware。
在 Customize hardware 选项卡上,点 Advanced Parameters。
通过在 Attribute 和 Values 字段中指定数据来添加以下配置参数名称和值。确保为您创建的每个参数选择 Add 按钮。
-
guestinfo.ignition.config.data
:粘贴此机器类型的 base64 编码计算 Ignition 配置文件的内容。 -
guestinfo.ignition.config.data.encoding
:指定base64
。 -
disk.EnableUUID
:指定TRUE
。
-
- 在 Customize hardware 选项卡的 Virtual Hardware 面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储的数量满足机器类型的最低要求。如果存在多个网络,请选择 Add New Device > Network Adapter,然后在 New Network 菜单项提供的字段中输入您的网络信息。
- 完成剩余的配置步骤。点 Finish 按钮,您已完成克隆操作。
- 在 Virtual Machines 选项卡中,右键点您的虚拟机,然后选择 Power → Power On。
后续步骤
- 继续为集群创建更多计算机器。
3.3.9. 磁盘分区
在大多数情况下,数据分区最初是由安装 RHCOS 而不是安装另一个操作系统来创建的。在这种情况下,OpenShift Container Platform 安装程序被允许配置磁盘分区。
但是,在安装 OpenShift Container Platform 节点时,在两种情况下您可能需要覆盖默认分区:
创建单独的分区: 要在空磁盘上进行 greenfield 安装,您可能需要在分区中添加单独的存储。这正式支持生成
/var 或 /var
的子目录,
如/var/lib/etcd
(独立分区),但不支持两者。重要对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的
/var
分区。如需更多信息,请参阅"创建独立/var
分区"和 红帽知识库文章。重要Kubernetes 仅支持两个文件系统分区。如果您在原始配置中添加多个分区,Kubernetes 无法监控所有这些分区。
-
保留现有分区:对于 brownfield 安装,您要在现有节点上重新安装 OpenShift Container Platform,并希望保留从之前的操作系统中安装的数据分区,对于
coreos-installer
来说,引导选项和选项都允许您保留现有数据分区。
创建独立 /var
分区
通常,OpenShift Container Platform 的磁盘分区应该保留给安装程序。然而,在有些情况下您可能需要在文件系统的一部分中创建独立分区。
OpenShift Container Platform 支持添加单个分区来将存储附加到 /var
分区或 /var
的子目录中。例如:
-
/var/lib/containers
:保存随着系统中添加更多镜像和容器而增长的容器相关内容。 -
/var/lib/etcd
:保存您可能希望独立保留的数据,比如 etcd 存储的性能优化。 /var
:保存您可能希望独立保留的数据,以满足审计等目的。重要对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的
/var
分区。
通过单独存储 /var
目录的内容,可以更轻松地根据需要为区域扩展存储,并在以后重新安装 OpenShift Container Platform,并保持该数据的完整性。使用这个方法,您不必再次拉取所有容器,在更新系统时也不必复制大量日志文件。
因为 /var
在进行一个全新的 Red Hat Enterprise Linux CoreOS(RHCOS)安装前必需存在,所以这个流程会在 OpenShift Container Platform 安装过程的 openshift-install
准备阶段插入一个创建的机器配置清单的机器配置来设置独立的 /var
分区。
流程
创建存放 OpenShift Container Platform 安装文件的目录:
$ mkdir $HOME/clusterconfig
运行
openshift-install
,以在manifest
和openshift
子目录中创建一组文件。在系统提示时回答系统问题:$ openshift-install create manifests --dir $HOME/clusterconfig ? SSH Public Key ... $ ls $HOME/clusterconfig/openshift/ 99_kubeadmin-password-secret.yaml 99_openshift-cluster-api_master-machines-0.yaml 99_openshift-cluster-api_master-machines-1.yaml 99_openshift-cluster-api_master-machines-2.yaml ...
创建用于配置额外分区的 Butane 配置。例如,将文件命名为
$HOME/clusterconfig/98-var-partition.bu
,将磁盘设备名称改为worker
系统上存储设备的名称,并根据情况设置存储大小。这个示例将/var
目录放在一个单独的分区中:variant: openshift version: 4.14.0 metadata: labels: machineconfiguration.openshift.io/role: worker name: 98-var-partition storage: disks: - device: /dev/disk/by-id/<device_name> 1 partitions: - label: var start_mib: <partition_start_offset> 2 size_mib: <partition_size> 3 number: 5 filesystems: - device: /dev/disk/by-partlabel/var path: /var format: xfs mount_options: [defaults, prjquota] 4 with_mount_unit: true
注意当创建单独的
/var
分区时,如果不同的实例类型没有相同的设备名称,则无法为 worker 节点使用不同的实例类型。从 Butane 配置创建一个清单,并将它保存到
clusterconfig/openshift
目录中。例如,运行以下命令:$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
再次运行
openshift-install
,从manifest
和openshift
子目录中的一组文件创建 Ignition 配置:$ openshift-install create ignition-configs --dir $HOME/clusterconfig $ ls $HOME/clusterconfig/ auth bootstrap.ign master.ign metadata.json worker.ign
现在,您可以使用 Ignition 配置文件作为 vSphere 安装程序的输入来安装 Red Hat Enterprise Linux CoreOS(RHCOS)系统。
3.3.10. 等待 bootstrap 过程完成
OpenShift Container Platform bootstrap 过程在集群节点首次引导到安装到磁盘的持久 RHCOS 环境后开始。通过 Ignition 配置文件提供的配置信息用于初始化 bootstrap 过程并在机器上安装 OpenShift Container Platform。您必须等待 bootstrap 过程完成。
先决条件
- 已为集群创建 Ignition 配置文件。
- 您已配置了适当的网络、DNS 和负载平衡基础架构。
- 已获得安装程序,并为集群生成 Ignition 配置文件。
- 已在集群机器上安装 RHCOS,并提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。
- 您的机器可以直接访问互联网,或者有 HTTP 或 HTTPS 代理可用。
流程
监控 bootstrap 过程:
$ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete \ 1 --log-level=info 2
输出示例
INFO Waiting up to 30m0s for the Kubernetes API at https://api.test.example.com:6443... INFO API v1.27.3 up INFO Waiting up to 30m0s for bootstrapping to complete... INFO It is now safe to remove the bootstrap resources
当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。
bootstrap 过程完成后,从负载均衡器中删除 bootstrap 机器。
重要此时您必须从负载均衡器中删除 bootstrap 机器。您还可以删除或重新格式化 bootstrap 机器本身。
3.3.11. 使用 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
3.3.12. 批准机器的证书签名请求
当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。
先决条件
- 您已将机器添加到集群中。
流程
确认集群可以识别这些机器:
$ oc get nodes
输出示例
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.27.3 master-1 Ready master 63m v1.27.3 master-2 Ready master 64m v1.27.3
输出中列出了您创建的所有机器。
注意在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。
检查待处理的 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 请求具有相同参数的新证书,则后续提供证书续订请求由
machine-approver
自动批准。注意对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则
oc exec
、ocrsh
和oc logs
命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system:node
或system:admin
组中的node-bootstrapper
服务帐户提交,并确认节点的身份。要单独批准,请对每个有效的 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
注意在有些 CSR 被批准前,一些 Operator 可能无法使用。
现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:
$ 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.27.3 master-1 Ready master 73m v1.27.3 master-2 Ready master 74m v1.27.3 worker-0 Ready worker 11m v1.27.3 worker-1 Ready worker 11m v1.27.3
注意批准服务器 CSR 后可能需要几分钟时间让机器过渡到
Ready 状态
。
其他信息
- 如需有关 CSR 的更多信息,请参阅 证书签名请求。
3.3.13. 初始 Operator 配置
在 control plane 初始化后,您必须立即配置一些 Operator,以便它们都可用。
先决条件
- 您的 control plane 已初始化。
流程
观察集群组件上线:
$ watch -n5 oc get clusteroperators
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE authentication 4.14.0 True False False 19m baremetal 4.14.0 True False False 37m cloud-credential 4.14.0 True False False 40m cluster-autoscaler 4.14.0 True False False 37m config-operator 4.14.0 True False False 38m console 4.14.0 True False False 26m csi-snapshot-controller 4.14.0 True False False 37m dns 4.14.0 True False False 37m etcd 4.14.0 True False False 36m image-registry 4.14.0 True False False 31m ingress 4.14.0 True False False 30m insights 4.14.0 True False False 31m kube-apiserver 4.14.0 True False False 26m kube-controller-manager 4.14.0 True False False 36m kube-scheduler 4.14.0 True False False 36m kube-storage-version-migrator 4.14.0 True False False 37m machine-api 4.14.0 True False False 29m machine-approver 4.14.0 True False False 37m machine-config 4.14.0 True False False 36m marketplace 4.14.0 True False False 37m monitoring 4.14.0 True False False 29m network 4.14.0 True False False 38m node-tuning 4.14.0 True False False 37m openshift-apiserver 4.14.0 True False False 32m openshift-controller-manager 4.14.0 True False False 30m openshift-samples 4.14.0 True False False 32m operator-lifecycle-manager 4.14.0 True False False 37m operator-lifecycle-manager-catalog 4.14.0 True False False 37m operator-lifecycle-manager-packageserver 4.14.0 True False False 32m service-ca 4.14.0 True False False 38m storage 4.14.0 True False False 37m
- 配置不可用的 Operator。
3.3.13.1. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置,将 managementState
从 Removed
切换到 Managed
。完成此操作后,您必须配置存储。
3.3.13.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
3.3.13.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- VMware vSphere 上有一个集群。
为集群置备的持久性存储,如 Red Hat OpenShift Data Foundation。
重要当您只有一个副本时,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
3.3.13.2.2. 在非生产集群中为镜像 registry 配置存储
您必须为 Image Registry Operator 配置存储。对于非生产集群,您可以将镜像 registry 设置为空目录。如果您这样做,重启 registry 时会丢失所有镜像。
流程
将镜像 registry 存储设置为空目录:
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
警告仅为非生产集群配置这个选项。
如果在 Image Registry Operator 初始化其组件前运行这个命令,
oc patch
命令会失败并显示以下错误:Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
等待几分钟,然后再次运行 命令。
3.3.13.2.3. 为 VMware vSphere 配置块 registry 存储
要允许镜像 registry 在作为集群管理员升级过程中使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略
。
支持块存储卷,但不建议在生产环境中用于镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法具有多个副本。
流程
输入以下命令将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用
Recreate
rollout 策略,并只使用一个
副本运行:$ 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。
3.3.14. 在用户置备的基础架构上完成安装
完成 Operator 配置后,可以在您提供的基础架构上完成集群安装。
先决条件
- 您的 control plane 已初始化。
- 已完成初始 Operator 配置。
流程
使用以下命令确认所有集群组件都在线:
$ watch -n5 oc get clusteroperators
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE authentication 4.14.0 True False False 19m baremetal 4.14.0 True False False 37m cloud-credential 4.14.0 True False False 40m cluster-autoscaler 4.14.0 True False False 37m config-operator 4.14.0 True False False 38m console 4.14.0 True False False 26m csi-snapshot-controller 4.14.0 True False False 37m dns 4.14.0 True False False 37m etcd 4.14.0 True False False 36m image-registry 4.14.0 True False False 31m ingress 4.14.0 True False False 30m insights 4.14.0 True False False 31m kube-apiserver 4.14.0 True False False 26m kube-controller-manager 4.14.0 True False False 36m kube-scheduler 4.14.0 True False False 36m kube-storage-version-migrator 4.14.0 True False False 37m machine-api 4.14.0 True False False 29m machine-approver 4.14.0 True False False 37m machine-config 4.14.0 True False False 36m marketplace 4.14.0 True False False 37m monitoring 4.14.0 True False False 29m network 4.14.0 True False False 38m node-tuning 4.14.0 True False False 37m openshift-apiserver 4.14.0 True False False 32m openshift-controller-manager 4.14.0 True False False 30m openshift-samples 4.14.0 True False False 32m operator-lifecycle-manager 4.14.0 True False False 37m operator-lifecycle-manager-catalog 4.14.0 True False False 37m operator-lifecycle-manager-packageserver 4.14.0 True False False 32m service-ca 4.14.0 True False False 38m storage 4.14.0 True False False 37m
另外,当所有集群都可用时,以下命令会通知您。它还检索并显示凭证:
$ ./openshift-install --dir <installation_directory> wait-for install-complete 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
输出示例
INFO Waiting up to 30m0s for the cluster to initialize...
Cluster Version Operator 完成从 Kubernetes API 服务器部署 OpenShift Container Platform 集群时,该命令会成功。
重要-
安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
确认 Kubernetes API 服务器正在与 pod 通信。
要查看所有 pod 的列表,请使用以下命令:
$ oc get pods --all-namespaces
输出示例
NAMESPACE NAME READY STATUS RESTARTS AGE openshift-apiserver-operator openshift-apiserver-operator-85cb746d55-zqhs8 1/1 Running 1 9m openshift-apiserver apiserver-67b9g 1/1 Running 0 3m openshift-apiserver apiserver-ljcmx 1/1 Running 0 1m openshift-apiserver apiserver-z25h4 1/1 Running 0 2m openshift-authentication-operator authentication-operator-69d5d8bf84-vh2n8 1/1 Running 0 5m ...
使用以下命令,查看上一命令的输出中所列 pod 的日志:
$ oc logs <pod_name> -n <namespace> 1
- 1
- 指定 pod 名称和命名空间,如上一命令的输出中所示。
如果 pod 日志显示,Kubernetes API 服务器可以与集群机器通信。
对于使用光纤通道协议(FCP)的安装,还需要额外的步骤才能启用多路径。不要在安装过程中启用多路径。
如需更多信息,请参阅 安装后机器配置任务 文档中的"使用 RHCOS 上使用内核参数启用多路径"。
您可以按照将计算机器 添加到 vSphere 的内容在集群安装后添加额外的计算机器。
3.3.15. 为 control plane 节点配置 vSphere DRS 反关联性规则
可将 vSphere 分布式资源调度程序 DRS) 关联性规则配置为支持 OpenShift Container Platform Control Plane 节点的高可用性。反关联性规则确保 OpenShift Container Platform Control Plane 节点的 vSphere 虚拟机没有调度到同一 vSphere 主机。
- 以下信息只适用于计算 DRS,不适用于存储 DRS。
-
govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽不支持govc
命令。 -
有关下载和安装
govc
的说明,请参阅 VMware 文档网站。
运行以下命令来创建反关联性规则:
示例命令
$ govc cluster.rule.create \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyCluster \ -enable \ -anti-affinity master-0 master-1 master-2
创建规则后,您的 control plane 节点由 vSphere 自动迁移,以便它们不会在同一主机上运行。当 vSphere 协调新规则时,这可能需要一些时间。以下流程中会显示成功的命令完成。
迁移会自动进行,并可能导致 OpenShift API 中断或延迟,直到迁移完成为止。
当 control plane 虚拟机名称发生变化或迁移到新的 vSphere 集群时,需要手动更新 vSphere DRS 反关联性规则。
流程
运行以下命令来删除任何现有的 DRS 反关联性规则:
$ govc cluster.rule.remove \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyCluster
输出示例
[13-10-22 09:33:24] Reconfigure /MyDatacenter/host/MyCluster...OK
运行以下命令,使用更新的名称再次创建规则:
$ govc cluster.rule.create \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyOtherCluster \ -enable \ -anti-affinity master-0 master-1 master-2
3.3.16. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.14 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
3.3.17. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 设置 registry 并配置 registry 存储。
- 可选: 查看 vSphere 问题检测器 Operator 中的事件,以确定集群是否有权限或存储配置问题。
- 可选:如果您创建了加密的虚拟机,请创建一个加密的存储类。
3.4. 使用自定义网络在 vSphere 上安装集群
在 OpenShift Container Platform 版本 4.14 中,您可以使用自定义的网络配置选项在 VMware vSphere 环境中安装集群。通过自定义网络配置,您的集群可以与环境中现有的 IP 地址分配共存,并与现有的 MTU 和 VXLAN 配置集成。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
您必须在安装过程中设置大多数网络配置参数,且您只能在正在运行的集群中修改 kubeProxy
配置参数。
执行用户置备的基础架构安装的步骤仅作为示例。使用您提供的基础架构安装集群需要了解 vSphere 平台和 OpenShift Container Platform 的安装过程。使用用户置备的基础架构安装说明作为指南 ; 您可以通过其他方法创建所需的资源。
3.4.1. 先决条件
- 您已完成了 使用用户置备的基础架构准备安装集群 中的任务。
- 您检查了 VMware 平台许可证。红帽不会对 VMware 许可证产生任何限制,但有些 VMware 基础架构组件需要许可。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
- 完成安装要求您在 vSphere 主机上上传 Red Hat Enterprise Linux CoreOS(RHCOS)OVA。完成此过程的机器需要访问 vCenter 和 ESXi 主机上的端口 443。验证是否可以访问端口 443。
- 如果您使用防火墙,您与管理员确认可以访问端口 443。control plane 节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,才能成功安装。
- 如果使用防火墙,则会 将其配置为允许集群需要访问的站点。
3.4.2. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.14 中,您需要访问互联网来安装集群。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在置备的某些类型的基础架构上执行受限网络安装。在此过程中,您可以下载所需的内容,并使用它为镜像 registry 填充安装软件包。对于某些安装类型,集群要安装到的环境不需要访问互联网。在更新集群前,您要更新镜像 registry 的内容。
3.4.3. VMware vSphere 区域和区启用
您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。每个数据中心都可以运行多个集群。此配置降低了导致集群失败的硬件故障或网络中断的风险。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
VMware vSphere 区域和区启用功能需要 vSphere Container Storage Interface (CSI) 驱动程序作为集群中的默认存储驱动程序。因此,这个功能只在新安装的集群中可用。
对于从上一版本升级的集群,您必须为集群启用 CSI 自动迁移。然后,您可以为升级的集群配置多个区域和区域。
默认安装配置将集群部署到单个 vSphere 数据中心。如果要将集群部署到多个 vSphere 数据中心,您必须创建一个启用地区和区功能的安装配置文件。
默认 install-config.yaml
文件包含 vcenters
和 failureDomains
字段,您可以在其中为 OpenShift Container Platform 集群指定多个 vSphere 数据中心和集群。如果要在由单个数据中心组成的 vSphere 环境中安装 OpenShift Container Platform 集群,您可以将这些字段留空。
以下列表描述了为集群定义区和区域相关的术语:
-
故障域:建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 -
Region :指定 vCenter 数据中心。您可以使用
openshift-region
标签类别中的标签来定义区域。 -
Zone:指定一个 vCenter 集群。您可以使用
openshift-zone
标签类别中的标签来定义区。
如果您计划在 install-config.yaml
文件中指定多个故障域,则必须在创建配置文件前创建标签类别、区域标签和区域标签。
您必须为每个代表一个区域的 vCenter 数据中心创建一个 vCenter 标签。另外,您必须为比数据中心(代表一个区)中运行的每个集群创建一个 vCenter 标签。创建标签后,您必须将每个标签附加到对应的数据中心和集群。
下表概述了在单个 VMware vCenter 中运行的多个 vSphere 数据中心的区域、区域和标签之间的关系示例。
数据中心(区域) | 集群(区) | Tags |
---|---|---|
us-east | us-east-1 | us-east-1a |
us-east-1b | ||
us-east-2 | us-east-2a | |
us-east-2b | ||
us-west | us-west-1 | us-west-1a |
us-west-1b | ||
us-west-2 | us-west-2a | |
us-west-2b |
3.4.4. 手动创建安装配置文件
对于用户置备的 OpenShift Container Platform 安装,需要手动生成安装配置文件。
Cluster Cloud Controller Manager Operator 对提供的主机名或 IP 地址执行连接检查。确保为可访问的 vCenter 服务器指定主机名或 IP 地址。如果您向不存在的 vCenter 服务器提供元数据,集群安装会在 bootstrap 阶段失败。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
创建一个安装目录来存储所需的安装资产:
$ mkdir <installation_directory>
重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml
文件模板示例,并将其保存在<installation_directory>
中。注意此配置文件必须命名为
install-config.yaml
。备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程的下一步中使用。现在必须备份它。
其他资源
3.4.4.1. VMware vSphere 的 install-config.yaml
文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
additionalTrustBundlePolicy: Proxyonly apiVersion: v1 baseDomain: example.com 1 compute: 2 - architecture: amd64 name: <worker_node> platform: {} replicas: 0 3 controlPlane: 4 architecture: amd64 name: <parent_node> platform: {} replicas: 3 5 metadata: creationTimestamp: null name: test 6 networking: --- platform: vsphere: failureDomains: 7 - name: <failure_domain_name> region: <default_region_name> server: <fully_qualified_domain_name> topology: computeCluster: "/<datacenter>/host/<cluster>" datacenter: <datacenter> 8 datastore: "/<datacenter>/datastore/<datastore>" 9 networks: - <VM_Network_name> resourcePool: "/<datacenter>/host/<cluster>/Resources/<resourcePool>" 10 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" 11 zone: <default_zone_name> vcenters: - datacenters: - <datacenter> password: <password> 12 port: 443 server: <fully_qualified_domain_name> 13 user: administrator@vsphere.local diskType: thin 14 fips: false 15 pullSecret: '{"auths": ...}' 16 sshKey: 'ssh-ed25519 AAAA...' 17
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 4
controlPlane
部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。两个部分都定义单个机器池,因此只使用一个 control plane。OpenShift Container Platform 不支持定义多个计算池。- 3
replicas
参数的值必须设置为0
。此参数控制集群为您创建和管理的 worker 数量,在使用用户置备的基础架构时集群不会执行这些功能。在完成 OpenShift Container Platform 安装前,您必须手动为集群部署 worker 机器。- 5
- 您添加到集群的 control plane 机器数量。由于集群使用此值作为集群中的 etcd 端点数量,所以该值必须与您部署的 control plane 机器数量匹配。
- 6
- 您在 DNS 记录中指定的集群名称。
- 7
- 建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 - 8
- vSphere 数据中心.
- 9
- 保存虚拟机文件、模板和 ISO 镜像的 vSphere 数据存储路径。重要
您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,Storage vMotion 会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage vMotion 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。 - 10
- 可选: 对于安装程序置备的基础架构,安装程序创建虚拟机的现有资源池的绝对路径,例如
/<datacenter_name>/host/<cluster_name>/Resources/<resource_pool_name>/<optional_nested_resource_pool_name>
。如果没有指定值,则会在集群/example_datacenter/host/example_cluster/Resources
根中安装资源。 - 11
- 可选: 对于安装程序置备的基础架构,安装程序创建虚拟机的现有文件夹的绝对路径,如
/<datacenter_name>/vm/<folder_name>/<subfolder_name>
。如果没有提供这个值,安装程序会在数据中心虚拟机文件夹中创建一个顶层文件夹,其名称为基础架构 ID。如果您为集群提供基础架构,且您不想使用默认的StorageClass
对象(名为thin
),您可以从install-config.yaml
文件中省略folder
参数。 - 12
- 与 vSphere 用户关联的密码。
- 13
- vCenter 服务器的完全限定主机名或 IP 地址。重要
Cluster Cloud Controller Manager Operator 对提供的主机名或 IP 地址执行连接检查。确保为可访问的 vCenter 服务器指定主机名或 IP 地址。如果您向不存在的 vCenter 服务器提供元数据,集群安装会在 bootstrap 阶段失败。
- 14
- vSphere 磁盘置备方法。
- 15
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 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。
- 16
- 从 OpenShift Cluster Manager 获取的 pull secret。此 pull secret 允许您与所含授权机构提供的服务进行身份验证,这些服务包括为 OpenShift Container Platform 组件提供容器镜像的 Quay.io。
- 17
- Red Hat Enterprise Linux CoreOS(RHCOS)中
core
用户的默认 SSH 密钥的公钥部分。
3.4.4.2. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 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
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
3.4.4.3. 为 VMware vCenter 配置区域和区域
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。
之前版本的 OpenShift Container Platform 的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
会提示您显示在配置文件中已弃用字段的警告信息。
这个示例使用 govc
命令。govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽支持团队不维护 govc
命令。有关下载和安装 govc
的说明,请参阅 VMware 文档网站
先决条件
您有一个现有的
install-config.yaml
安装配置文件。重要您必须为 OpenShift Container Platform 集群指定一个故障域,以便您可以为 VMware vCenter 服务器置备数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中置备虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
流程
输入以下
govc
命令行工具命令,以创建openshift-region
和openshift-zone
vCenter 标签类别:重要如果为
openshift-region
和openshift-zone
vCenter 标签类别指定不同的名称,OpenShift Container Platform 集群的安装会失败。$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为您要部署集群的每个区域 vSphere 数据中心创建一个 region 标签,请在终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为您要部署集群的每个 vSphere 集群创建一个区标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
输入以下命令将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<datacenter_1>
输入以下命令将区标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<datacenter_1>/host/vcs-mdcnc-workload-1
- 进入包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
在 vSphere 数据中心中定义的多个数据中心的 install-config.yaml
文件示例
--- compute: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- controlPlane: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- platform: vsphere: vcenters: --- datacenters: - <datacenter1_name> - <datacenter2_name> failureDomains: - name: <machine_pool_zone_1> region: <region_tag_1> zone: <zone_tag_1> server: <fully_qualified_domain_name> topology: datacenter: <datacenter1> computeCluster: "/<datacenter1>/host/<cluster1>" networks: - <VM_Network1_name> datastore: "/<datacenter1>/datastore/<datastore1>" resourcePool: "/<datacenter1>/host/<cluster1>/Resources/<resourcePool1>" folder: "/<datacenter1>/vm/<folder1>" - name: <machine_pool_zone_2> region: <region_tag_2> zone: <zone_tag_2> server: <fully_qualified_domain_name> topology: datacenter: <datacenter2> computeCluster: "/<datacenter2>/host/<cluster2>" networks: - <VM_Network2_name> datastore: "/<datacenter2>/datastore/<datastore2>" resourcePool: "/<datacenter2>/host/<cluster2>/Resources/<resourcePool2>" folder: "/<datacenter2>/vm/<folder2>" ---
3.4.5. 网络配置阶段
OpenShift Container Platform 安装前有两个阶段,您可以在其中自定义网络配置。
- 第 1 阶段
在创建清单文件前,您可以自定义
install-config.yaml
文件中的以下与网络相关的字段:-
networking.networkType
-
networking.clusterNetwork
-
networking.serviceNetwork
networking.machineNetwork
如需更多信息,请参阅"安装配置参数"。
注意将
networking.machineNetwork
设置为与首选子网所在的无类别域间路由 (CIDR) 匹配。重要CIDR 范围
172.17.0.0/16
由libVirt
保留。对于集群中的网络,您无法使用与172.17.0.0/16
CIDR 范围重叠的任何其他 CIDR 范围。
-
- 第 2 阶段
-
运行
openshift-install create 清单创建
清单文件后,您可以只使用您要修改的字段定义自定义 Cluster Network Operator 清单。您可以使用清单来指定高级网络配置。
在阶段 2 中,您无法覆盖 install-config.yaml
文件中在第 1 阶段指定的值。但是,您可以在第 2 阶段自定义网络插件。
3.4.6. 指定高级网络配置
您可以使用网络插件的高级网络配置将集群集成到现有网络环境中。您只能在安装集群前指定高级网络配置。
不支持通过修改安装程序创建的 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/
目录。 删除定义 control plane 机器的 Kubernetes 清单文件和计算 machineSets:
$ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml
由于您要自行创建和管理这些资源,因此不必初始化这些资源。
- 您可以使用机器 API 保留 MachineSet 文件以创建计算机器,但您必须更新对它们的引用以匹配您的环境。
3.4.6.1. 为您的网络指定多个子网
在 vSphere 主机上安装 OpenShift Container Platform 集群前,您可以为网络实现指定多个子网,以便 vSphere 云控制器管理器 (CCM) 可以为给定网络情况选择适当的子网。vSphere 可以使用子网来管理集群中的 pod 和服务。
对于此配置,您必须在 vSphere CCM 配置中指定内部和外部无类别域间路由 (CIDR) 实现。每个 CIDR 实现都会列出 CCM 用来决定与来自内部和外部网络的流量交互的 IP 地址范围。
在 vSphere CCM 配置中配置内部和外部 CIDR 实现可能会导致 vSphere CCM 选择错误的子网。这种情况会导致以下错误:
ERROR Bootstrap failed to complete: timed out waiting for the condition ERROR Failed to wait for bootstrapping to complete. This error usually happens when there is a problem with control plane hosts that prevents the control plane operators from creating the control plane.
此配置可能会导致与 MachineSet
对象与单个子网关联的新节点变得不可用,因为每个新节点接收 node.cloudprovider.kubernetes.io/uninitialized
污点。这些情况可能会导致与 Kubernetes API 服务器的通信问题,这可能会导致集群安装失败。
先决条件
- 为 OpenShift Container Platform 集群创建 Kubernetes 清单文件。
流程
-
从存储 OpenShift Container Platform 集群清单文件的目录中,打开
manifests/cluster-infrastructure-02-config.yml
清单文件。 将
nodeNetworking
对象添加到文件,并为对象指定内部和外部网络子网 CIDR 实现。提示对于大多数网络情况,请考虑设置标准多子网配置。此配置要求您在
nodeNetworking.internal.networkSubnetCidr
和nodeNetworking.external.networkSubnetCidr
参数中设置相同的 IP 地址范围。配置了
cluster-infrastructure-02-config.yml
清单文件的示例apiVersion: config.openshift.io/v1 kind: Infrastructure metadata: name: cluster spec: cloudConfig: key: config name: cloud-provider-config platformSpec: type: VSphere vsphere: failureDomains: - name: generated-failure-domain ... nodeNetworking: external: networkSubnetCidr: - <machine_network_cidr_ipv4> - <machine_network_cidr_ipv6> internal: networkSubnetCidr: - <machine_network_cidr_ipv4> - <machine_network_cidr_ipv6> # ...
3.4.7. 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
对象的字段来为集群指定集群网络插件配置。
3.4.7.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 网络插件只支持服务网络的一个 IP 地址块。例如: spec: serviceNetwork: - 172.30.0.0/14
您只能在创建清单前在 |
|
| 为集群网络配置网络插件。 |
|
| 此对象的字段指定 kube-proxy 配置。如果使用 OVN-Kubernetes 集群网络供应商,则 kube-proxy 配置不会起作用。 |
对于需要在多个网络间部署对象的集群,请确保为 install-config.yaml
文件中定义的每种网络类型指定与 clusterNetwork.hostPrefix
参数相同的值。为每个 clusterNetwork.hostPrefix
参数设置不同的值可能会影响 OVN-Kubernetes 网络插件,其中插件无法有效地在不同节点间路由对象流量。
defaultNetwork 对象配置
下表列出了 defaultNetwork
对象的值:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意 OpenShift Container Platform 默认使用 OVN-Kubernetes 网络插件。 |
|
| 此对象仅对 OpenShift SDN 网络插件有效。 |
|
| 此对象仅对 OVN-Kubernetes 网络插件有效。 |
配置 OpenShift SDN 网络插件
下表描述了 OpenShift SDN 网络插件的配置字段:
字段 | 类型 | 描述 |
---|---|---|
|
|
配置 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 网络插件
下表描述了 OVN-Kubernetes 网络插件的配置字段:
字段 | 类型 | 描述 |
---|---|---|
|
| Geneve(通用网络虚拟化封装)覆盖网络的最大传输单元(MTU)。这根据主网络接口的 MTU 自动探测。您通常不需要覆盖检测到的 MTU。 如果自动探测的值不是您期望的值,请确认节点上主网络接口上的 MTU 是否正确。您不能使用这个选项更改节点上主网络接口的 MTU 值。
如果集群中不同节点需要不同的 MTU 值,则必须将此值设置为 |
|
|
用于所有 Geneve 数据包的端口。默认值为 |
|
| 指定一个空对象来启用 IPsec 加密。 |
|
| 指定用于自定义网络策略审计日志的配置对象。如果未设置,则使用默认的审计日志设置。 |
|
| 可选:指定一个配置对象来自定义如何将出口流量发送到节点网关。 注意 在迁移出口流量时,工作负载和服务流量会受到一定影响,直到 Cluster Network Operator (CNO) 成功推出更改。 |
|
如果您的现有网络基础架构与 在安装后无法更改此字段。 |
默认值为 |
|
如果您的现有网络基础架构与 在安装后无法更改此字段。 |
默认值为 |
字段 | 类型 | 描述 |
---|---|---|
| 整数 |
每个节点每秒生成一次的消息数量上限。默认值为每秒 |
| 整数 |
审计日志的最大大小,以字节为单位。默认值为 |
| 整数 | 保留的日志文件的最大数量。 |
| 字符串 | 以下附加审计日志目标之一:
|
| 字符串 |
syslog 工具,如 as |
字段 | 类型 | 描述 |
---|---|---|
|
|
将此字段设置为
此字段与 Open vSwitch 硬件卸载功能有交互。如果将此字段设置为 |
|
|
您可以使用 |
启用 IPSec 的 OVN-Kubernetes 配置示例
defaultNetwork: type: OVNKubernetes ovnKubernetesConfig: mtu: 1400 genevePort: 6081 ipsecConfig: {}
kubeProxyConfig 对象配置(仅限 OpenShiftSDN 容器网络接口)
kubeProxyConfig
对象的值在下表中定义:
字段 | 类型 | 描述 |
---|---|---|
|
|
注意
由于 OpenShift Container Platform 4.3 及更高版本中引进了性能改进,不再需要调整 |
|
|
刷新 kubeProxyConfig: proxyArguments: iptables-min-sync-period: - 0s |
3.4.8. 创建 Ignition 配置文件
由于您必须手动启动集群机器,因此您必须生成 Ignition 配置文件,集群需要这些配置文件来创建其机器。
-
安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
先决条件
- 获取 OpenShift Container Platform 安装程序和集群的 pull secret。
流程
获取 Ignition 配置文件:
$ ./openshift-install create ignition-configs --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定要存储安装程序创建的文件的目录名称。
重要如果创建了
install-config.yaml
文件,请指定包含该文件的目录。否则,指定一个空目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。该目录中会生成以下文件:
. ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
3.4.9. 提取基础架构名称
Ignition 配置文件包含一个唯一集群标识符,您可以使用它在 VMware vSphere 中唯一地标识您的集群。如果计划使用集群标识符作为虚拟机文件夹的名称,则必须提取它。
先决条件
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已为集群生成 Ignition 配置文件。
-
已安装
jq
软件包。
3.4.10. 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程
要在 VMware vSphere 上的用户置备的基础架构上安装 OpenShift Container Platform,您必须在 vSphere 主机上安装 Red Hat Enterprise Linux CoreOS(RHCOS)。安装 RHCOS 时,您必须为您要安装的机器类型提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。如果您配置了适当的网络、DNS 和负载均衡基础架构,OpenShift Container Platform bootstrap 过程会在 RHCOS 机器重启后自动启动。
先决条件
- 已获取集群的 Ignition 配置文件。
- 具有 HTTP 服务器的访问权限,以便您可从计算机进行访问,并且您创建的机器也可访问此服务器。
- 您已创建了 vSphere 集群。
流程
-
将名为
<installation_directory>/bootstrap.ign
的 bootstrap Ignition 配置文件上传到 HTTP 服务器。注意此文件的 URL。 将 bootstrap 节点的以下辅助 Ignition 配置文件保存到计算机中,存为
<installation_directory>/merge-bootstrap.ign
:{ "ignition": { "config": { "merge": [ { "source": "<bootstrap_ignition_config_url>", 1 "verification": {} } ] }, "timeouts": {}, "version": "3.2.0" }, "networkd": {}, "passwd": {}, "storage": {}, "systemd": {} }
- 1
- 指定您托管的 bootstrap Ignition 配置文件的 URL。
为 bootstrap 机器创建虚拟机(VM)时,您要使用此 Ignition 配置文件。
找到安装程序创建的以下 Ignition 配置文件:
-
<installation_directory>/master.ign
-
<installation_directory>/worker.ign
-
<installation_directory>/merge-bootstrap.ign
-
将 Ignition 配置文件转换为 Base64 编码。在此流程中,您必须将这些文件添加到虚拟机中的额外配置参数
guestinfo.ignition.config.data
中。例如,如果使用 Linux 操作系统,您可以使用
base64
命令对文件进行编码。$ base64 -w0 <installation_directory>/master.ign > <installation_directory>/master.64
$ base64 -w0 <installation_directory>/worker.ign > <installation_directory>/worker.64
$ base64 -w0 <installation_directory>/merge-bootstrap.ign > <installation_directory>/merge-bootstrap.64
重要如果您计划在安装完成后在集群中添加更多计算机器,请不要删除这些文件。
获取 RHCOS OVA 镜像。镜像位于 RHCOS 镜像镜像页面。
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。
文件名包含 OpenShift Container Platform 版本号,格式为
rhcos-vmware.<architecture>.ova
。在 vSphere 客户端中,在数据中心中创建一个文件夹来存储虚拟机。
- 单击 VMs and Templates 视图。
- 右键单击您的数据中心的名称。
- 点击 New Folder → New VM and Template Folder。
-
在显示的窗口中,输入文件夹名称。如果您没有在
install-config.yaml
文件中指定现有文件夹,请创建一个名称与基础架构 ID 相同的文件夹。您可以使用这个文件夹名称,因此 vCenter 会在适当的位置为 Workspace 配置动态置备存储。
在 vSphere 客户端中,为 OVA 镜像创建一个模板,然后根据需要克隆模板。
注意在以下步骤中,您将创建模板,然后克隆所有集群机器的模板。然后,您在置备虚拟机时为该克隆的机器类型提供 Ignition 配置文件的位置。
- 在 Hosts and Clusters 选项卡中,右键点击您的集群名称并选择 Deploy OVF Template。
- 在 Select an OVF 选项卡中,指定您下载的 RHCOS OVA 文件的名称。
-
在 Select a name and folder 选项卡中,为您的模板设置 虚拟机名称,如
Template-RHCOS
。点击 vSphere 集群的名称并选择您在上一步中创建的文件夹。 - 在 Select a compute resource 选项卡中,点击 vSphere 集群的名称。
在 Select storage 选项卡中,配置虚拟机的存储选项。
- 根据您的存储首选项,选择 Thin Provision 或 Thick Provision。
-
选择您在
install-config.yaml
文件中指定的数据存储。 - 如果要加密虚拟机,请选择 Encrypt this virtual machine。如需更多信息,请参阅标题为"加密虚拟机的要求"的部分。
- 在 Select network 选项卡中,指定您为集群配置的网络(如果可用)。
在创建 OVF 模板时,不要在 Customize template 选项卡上指定值,也不会进一步配置模板。
重要不要启动原始虚拟机模板。VM 模板必须保持关闭,必须为新的 RHCOS 机器克隆。启动虚拟机模板会将虚拟机模板配置为平台上的虚拟机,这样可防止它被用作计算机器集可应用配置的模板。
可选: 如果需要,更新 VM 模板中配置的虚拟硬件版本。如需更多信息 ,请参阅 VMware 文档中的将虚拟机升级到最新硬件版本。
重要如有必要,建议您在从虚拟机创建虚拟机前将虚拟机模板的硬件版本更新为版本 15。在 vSphere 上运行的集群节点使用硬件版本 13 现已弃用。如果您导入的模板默认为硬件版本 13,您必须在将 VM 模板升级到硬件版本 15 前确保 ESXi 主机为 6.7U3 或更高版本。如果您的 vSphere 版本小于 6.7U3,您可以跳过此升级步骤;但是,计划将来的 OpenShift Container Platform 版本删除对小于 6.7U3 的硬件版本 13 和 vSphere 版本的支持。
部署模板后,为集群中的机器部署虚拟机。
- 右键点击模板名称,再点击 Clone → Clone to Virtual Machine。
在 Select a name and folder 选项卡中,指定虚拟机的名称。您可以在名称中包含机器类型,如
control-plane-0 或
compute-1
。注意确保 vSphere 安装中的所有虚拟机名称都是唯一的。
- 在 Select a name and folder 选项卡中,选择您为集群创建的文件夹名称。
- 在 Select a compute resource 选项卡中,选择数据中心中的主机名称。
- 在 Select clone options 选项卡中,选择 Customize this virtual machine's hardware。
在 Customize hardware 选项卡上,点 Advanced Parameters。
重要以下配置建议仅用于演示目的。作为集群管理员,您必须根据集群上的资源需求来配置资源。为了更好地管理集群资源,请考虑从集群的 root 资源池创建资源池。
可选:覆盖 vSphere 中的默认 DHCP 网络。启用静态 IP 网络:
设置静态 IP 配置:
示例命令
$ export IPCFG="ip=<ip>::<gateway>:<netmask>:<hostname>:<iface>:none nameserver=srv1 [nameserver=srv2 [nameserver=srv3 [...]]]"
示例命令
$ export IPCFG="ip=192.168.100.101::192.168.100.254:255.255.255.0:::none nameserver=8.8.8.8"
在从 vSphere 中的 OVA 引导虚拟机前,设置
guestinfo.afterburn.initrd.network-kargs
属性:示例命令
$ govc vm.change -vm "<vm_name>" -e "guestinfo.afterburn.initrd.network-kargs=${IPCFG}"
通过在 Attribute 和 Values 字段中指定数据来添加以下配置参数名称和值。确保为您创建的每个参数选择 Add 按钮。
-
guestinfo.ignition.config.data
:找到您在此流程中创建的 base-64 编码文件,并粘贴此机器类型的 base64 编码 Ignition 配置文件的内容。 -
guestinfo.ignition.config.data.encoding
:指定base64
。 -
disk.EnableUUID
:指定TRUE
。 -
stealclock.enable
:如果没有定义此参数,请添加它并指定TRUE
。 - 从集群的 root 资源池创建子资源池。执行此子资源池中的资源分配。
-
- 在 Customize hardware 选项卡的 Virtual Hardware 面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储的数量满足机器类型的最低要求。
- 完成剩余的配置步骤。点 Finish 按钮,您已完成克隆操作。
- 在 Virtual Machines 选项卡中,右键点您的虚拟机,然后选择 Power → Power On。
检查控制台输出,以验证 Ignition 是否运行。
示例命令
Ignition: ran on 2022/03/14 14:48:33 UTC (this boot) Ignition: user-provided config was applied
后续步骤
对每台机器执行前面的步骤,为集群创建其余机器。
重要此时您必须创建 bootstrap 和 control plane 机器。由于计算机器上已默认部署了一些 Pod,因此还要在安装集群前至少创建两台计算机器。
3.4.11. 将更多计算机器添加到 vSphere 中的集群
您可以将更多计算机器添加到 VMware vSphere 上的用户置备的 OpenShift Container Platform 集群中。
在 OpenShift Container Platform 集群中部署 vSphere 模板后,您可以为该集群中的机器部署虚拟机(VM)。
先决条件
- 获取计算机器的 base64 编码 Ignition 文件。
- 您可以访问您为集群创建的 vSphere 模板。
流程
- 右键点击模板的名称,再点击 Clone → Clone to Virtual Machine。
在 Select a name and folder 选项卡中,指定虚拟机的名称。您可以在名称中包含机器类型,如
compute-1
。注意确保 vSphere 安装中的所有虚拟机名称都是唯一的。
- 在 Select a name and folder 选项卡中,选择您为集群创建的文件夹名称。
- 在 Select a compute resource 选项卡中,选择数据中心中的主机名称。
- 在 Select storage 选项卡中,为您的配置和磁盘文件选择存储。
- 在 Select clone options 选项卡中,选择 Customize this virtual machine's hardware。
在 Customize hardware 选项卡上,点 Advanced Parameters。
通过在 Attribute 和 Values 字段中指定数据来添加以下配置参数名称和值。确保为您创建的每个参数选择 Add 按钮。
-
guestinfo.ignition.config.data
:粘贴此机器类型的 base64 编码计算 Ignition 配置文件的内容。 -
guestinfo.ignition.config.data.encoding
:指定base64
。 -
disk.EnableUUID
:指定TRUE
。
-
- 在 Customize hardware 选项卡的 Virtual Hardware 面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储的数量满足机器类型的最低要求。如果存在多个网络,请选择 Add New Device > Network Adapter,然后在 New Network 菜单项提供的字段中输入您的网络信息。
- 完成剩余的配置步骤。点 Finish 按钮,您已完成克隆操作。
- 在 Virtual Machines 选项卡中,右键点您的虚拟机,然后选择 Power → Power On。
后续步骤
- 继续为集群创建更多计算机器。
3.4.12. 磁盘分区
在大多数情况下,数据分区最初是由安装 RHCOS 而不是安装另一个操作系统来创建的。在这种情况下,OpenShift Container Platform 安装程序被允许配置磁盘分区。
但是,在安装 OpenShift Container Platform 节点时,在两种情况下您可能需要覆盖默认分区:
创建单独的分区: 要在空磁盘上进行 greenfield 安装,您可能需要在分区中添加单独的存储。这正式支持生成
/var 或 /var
的子目录,
如/var/lib/etcd
(独立分区),但不支持两者。重要对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的
/var
分区。如需更多信息,请参阅"创建独立/var
分区"和 红帽知识库文章。重要Kubernetes 仅支持两个文件系统分区。如果您在原始配置中添加多个分区,Kubernetes 无法监控所有这些分区。
-
保留现有分区:对于 brownfield 安装,您要在现有节点上重新安装 OpenShift Container Platform,并希望保留从之前的操作系统中安装的数据分区,对于
coreos-installer
来说,引导选项和选项都允许您保留现有数据分区。
创建独立 /var
分区
通常,OpenShift Container Platform 的磁盘分区应该保留给安装程序。然而,在有些情况下您可能需要在文件系统的一部分中创建独立分区。
OpenShift Container Platform 支持添加单个分区来将存储附加到 /var
分区或 /var
的子目录中。例如:
-
/var/lib/containers
:保存随着系统中添加更多镜像和容器而增长的容器相关内容。 -
/var/lib/etcd
:保存您可能希望独立保留的数据,比如 etcd 存储的性能优化。 /var
:保存您可能希望独立保留的数据,以满足审计等目的。重要对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的
/var
分区。
通过单独存储 /var
目录的内容,可以更轻松地根据需要为区域扩展存储,并在以后重新安装 OpenShift Container Platform,并保持该数据的完整性。使用这个方法,您不必再次拉取所有容器,在更新系统时也不必复制大量日志文件。
因为 /var
在进行一个全新的 Red Hat Enterprise Linux CoreOS(RHCOS)安装前必需存在,所以这个流程会在 OpenShift Container Platform 安装过程的 openshift-install
准备阶段插入一个创建的机器配置清单的机器配置来设置独立的 /var
分区。
流程
创建存放 OpenShift Container Platform 安装文件的目录:
$ mkdir $HOME/clusterconfig
运行
openshift-install
,以在manifest
和openshift
子目录中创建一组文件。在系统提示时回答系统问题:$ openshift-install create manifests --dir $HOME/clusterconfig ? SSH Public Key ... $ ls $HOME/clusterconfig/openshift/ 99_kubeadmin-password-secret.yaml 99_openshift-cluster-api_master-machines-0.yaml 99_openshift-cluster-api_master-machines-1.yaml 99_openshift-cluster-api_master-machines-2.yaml ...
创建用于配置额外分区的 Butane 配置。例如,将文件命名为
$HOME/clusterconfig/98-var-partition.bu
,将磁盘设备名称改为worker
系统上存储设备的名称,并根据情况设置存储大小。这个示例将/var
目录放在一个单独的分区中:variant: openshift version: 4.14.0 metadata: labels: machineconfiguration.openshift.io/role: worker name: 98-var-partition storage: disks: - device: /dev/disk/by-id/<device_name> 1 partitions: - label: var start_mib: <partition_start_offset> 2 size_mib: <partition_size> 3 number: 5 filesystems: - device: /dev/disk/by-partlabel/var path: /var format: xfs mount_options: [defaults, prjquota] 4 with_mount_unit: true
注意当创建单独的
/var
分区时,如果不同的实例类型没有相同的设备名称,则无法为 worker 节点使用不同的实例类型。从 Butane 配置创建一个清单,并将它保存到
clusterconfig/openshift
目录中。例如,运行以下命令:$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
再次运行
openshift-install
,从manifest
和openshift
子目录中的一组文件创建 Ignition 配置:$ openshift-install create ignition-configs --dir $HOME/clusterconfig $ ls $HOME/clusterconfig/ auth bootstrap.ign master.ign metadata.json worker.ign
现在,您可以使用 Ignition 配置文件作为 vSphere 安装程序的输入来安装 Red Hat Enterprise Linux CoreOS(RHCOS)系统。
3.4.13. 等待 bootstrap 过程完成
OpenShift Container Platform bootstrap 过程在集群节点首次引导到安装到磁盘的持久 RHCOS 环境后开始。通过 Ignition 配置文件提供的配置信息用于初始化 bootstrap 过程并在机器上安装 OpenShift Container Platform。您必须等待 bootstrap 过程完成。
先决条件
- 已为集群创建 Ignition 配置文件。
- 您已配置了适当的网络、DNS 和负载平衡基础架构。
- 已获得安装程序,并为集群生成 Ignition 配置文件。
- 已在集群机器上安装 RHCOS,并提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。
- 您的机器可以直接访问互联网,或者有 HTTP 或 HTTPS 代理可用。
流程
监控 bootstrap 过程:
$ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete \ 1 --log-level=info 2
输出示例
INFO Waiting up to 30m0s for the Kubernetes API at https://api.test.example.com:6443... INFO API v1.27.3 up INFO Waiting up to 30m0s for bootstrapping to complete... INFO It is now safe to remove the bootstrap resources
当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。
bootstrap 过程完成后,从负载均衡器中删除 bootstrap 机器。
重要此时您必须从负载均衡器中删除 bootstrap 机器。您还可以删除或重新格式化 bootstrap 机器本身。
3.4.14. 使用 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
3.4.15. 批准机器的证书签名请求
当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。
先决条件
- 您已将机器添加到集群中。
流程
确认集群可以识别这些机器:
$ oc get nodes
输出示例
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.27.3 master-1 Ready master 63m v1.27.3 master-2 Ready master 64m v1.27.3
输出中列出了您创建的所有机器。
注意在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。
检查待处理的 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 请求具有相同参数的新证书,则后续提供证书续订请求由
machine-approver
自动批准。注意对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则
oc exec
、ocrsh
和oc logs
命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system:node
或system:admin
组中的node-bootstrapper
服务帐户提交,并确认节点的身份。要单独批准,请对每个有效的 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
注意在有些 CSR 被批准前,一些 Operator 可能无法使用。
现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:
$ 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.27.3 master-1 Ready master 73m v1.27.3 master-2 Ready master 74m v1.27.3 worker-0 Ready worker 11m v1.27.3 worker-1 Ready worker 11m v1.27.3
注意批准服务器 CSR 后可能需要几分钟时间让机器过渡到
Ready 状态
。
其他信息
- 如需有关 CSR 的更多信息,请参阅 证书签名请求。
3.4.15.1. 初始 Operator 配置
在 control plane 初始化后,您必须立即配置一些 Operator,以便它们都可用。
先决条件
- 您的 control plane 已初始化。
流程
观察集群组件上线:
$ watch -n5 oc get clusteroperators
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE authentication 4.14.0 True False False 19m baremetal 4.14.0 True False False 37m cloud-credential 4.14.0 True False False 40m cluster-autoscaler 4.14.0 True False False 37m config-operator 4.14.0 True False False 38m console 4.14.0 True False False 26m csi-snapshot-controller 4.14.0 True False False 37m dns 4.14.0 True False False 37m etcd 4.14.0 True False False 36m image-registry 4.14.0 True False False 31m ingress 4.14.0 True False False 30m insights 4.14.0 True False False 31m kube-apiserver 4.14.0 True False False 26m kube-controller-manager 4.14.0 True False False 36m kube-scheduler 4.14.0 True False False 36m kube-storage-version-migrator 4.14.0 True False False 37m machine-api 4.14.0 True False False 29m machine-approver 4.14.0 True False False 37m machine-config 4.14.0 True False False 36m marketplace 4.14.0 True False False 37m monitoring 4.14.0 True False False 29m network 4.14.0 True False False 38m node-tuning 4.14.0 True False False 37m openshift-apiserver 4.14.0 True False False 32m openshift-controller-manager 4.14.0 True False False 30m openshift-samples 4.14.0 True False False 32m operator-lifecycle-manager 4.14.0 True False False 37m operator-lifecycle-manager-catalog 4.14.0 True False False 37m operator-lifecycle-manager-packageserver 4.14.0 True False False 32m service-ca 4.14.0 True False False 38m storage 4.14.0 True False False 37m
- 配置不可用的 Operator。
3.4.15.2. 安装过程中删除的镜像 registry
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator bootstraps 本身为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置,将 managementState
从 Removed
切换到 Managed
。完成此操作后,您必须配置存储。
3.4.15.3. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
3.4.15.3.1. 为 VMware vSphere 配置块 registry 存储
要允许镜像 registry 在作为集群管理员升级过程中使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略
。
支持块存储卷,但不建议在生产环境中用于镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法具有多个副本。
流程
输入以下命令将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用
Recreate
rollout 策略,并只使用一个
副本运行:$ 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。
3.4.16. 在用户置备的基础架构上完成安装
完成 Operator 配置后,可以在您提供的基础架构上完成集群安装。
先决条件
- 您的 control plane 已初始化。
- 已完成初始 Operator 配置。
流程
使用以下命令确认所有集群组件都在线:
$ watch -n5 oc get clusteroperators
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE authentication 4.14.0 True False False 19m baremetal 4.14.0 True False False 37m cloud-credential 4.14.0 True False False 40m cluster-autoscaler 4.14.0 True False False 37m config-operator 4.14.0 True False False 38m console 4.14.0 True False False 26m csi-snapshot-controller 4.14.0 True False False 37m dns 4.14.0 True False False 37m etcd 4.14.0 True False False 36m image-registry 4.14.0 True False False 31m ingress 4.14.0 True False False 30m insights 4.14.0 True False False 31m kube-apiserver 4.14.0 True False False 26m kube-controller-manager 4.14.0 True False False 36m kube-scheduler 4.14.0 True False False 36m kube-storage-version-migrator 4.14.0 True False False 37m machine-api 4.14.0 True False False 29m machine-approver 4.14.0 True False False 37m machine-config 4.14.0 True False False 36m marketplace 4.14.0 True False False 37m monitoring 4.14.0 True False False 29m network 4.14.0 True False False 38m node-tuning 4.14.0 True False False 37m openshift-apiserver 4.14.0 True False False 32m openshift-controller-manager 4.14.0 True False False 30m openshift-samples 4.14.0 True False False 32m operator-lifecycle-manager 4.14.0 True False False 37m operator-lifecycle-manager-catalog 4.14.0 True False False 37m operator-lifecycle-manager-packageserver 4.14.0 True False False 32m service-ca 4.14.0 True False False 38m storage 4.14.0 True False False 37m
另外,当所有集群都可用时,以下命令会通知您。它还检索并显示凭证:
$ ./openshift-install --dir <installation_directory> wait-for install-complete 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
输出示例
INFO Waiting up to 30m0s for the cluster to initialize...
Cluster Version Operator 完成从 Kubernetes API 服务器部署 OpenShift Container Platform 集群时,该命令会成功。
重要-
安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
确认 Kubernetes API 服务器正在与 pod 通信。
要查看所有 pod 的列表,请使用以下命令:
$ oc get pods --all-namespaces
输出示例
NAMESPACE NAME READY STATUS RESTARTS AGE openshift-apiserver-operator openshift-apiserver-operator-85cb746d55-zqhs8 1/1 Running 1 9m openshift-apiserver apiserver-67b9g 1/1 Running 0 3m openshift-apiserver apiserver-ljcmx 1/1 Running 0 1m openshift-apiserver apiserver-z25h4 1/1 Running 0 2m openshift-authentication-operator authentication-operator-69d5d8bf84-vh2n8 1/1 Running 0 5m ...
使用以下命令,查看上一命令的输出中所列 pod 的日志:
$ oc logs <pod_name> -n <namespace> 1
- 1
- 指定 pod 名称和命名空间,如上一命令的输出中所示。
如果 pod 日志显示,Kubernetes API 服务器可以与集群机器通信。
对于使用光纤通道协议(FCP)的安装,还需要额外的步骤才能启用多路径。不要在安装过程中启用多路径。
如需更多信息,请参阅 安装后机器配置任务 文档中的"使用 RHCOS 上使用内核参数启用多路径"。
您可以按照将计算机器 添加到 vSphere 的内容在集群安装后添加额外的计算机器。
3.4.17. 为 control plane 节点配置 vSphere DRS 反关联性规则
可将 vSphere 分布式资源调度程序 DRS) 关联性规则配置为支持 OpenShift Container Platform Control Plane 节点的高可用性。反关联性规则确保 OpenShift Container Platform Control Plane 节点的 vSphere 虚拟机没有调度到同一 vSphere 主机。
- 以下信息只适用于计算 DRS,不适用于存储 DRS。
-
govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽不支持govc
命令。 -
有关下载和安装
govc
的说明,请参阅 VMware 文档网站。
运行以下命令来创建反关联性规则:
示例命令
$ govc cluster.rule.create \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyCluster \ -enable \ -anti-affinity master-0 master-1 master-2
创建规则后,您的 control plane 节点由 vSphere 自动迁移,以便它们不会在同一主机上运行。当 vSphere 协调新规则时,这可能需要一些时间。以下流程中会显示成功的命令完成。
迁移会自动进行,并可能导致 OpenShift API 中断或延迟,直到迁移完成为止。
当 control plane 虚拟机名称发生变化或迁移到新的 vSphere 集群时,需要手动更新 vSphere DRS 反关联性规则。
流程
运行以下命令来删除任何现有的 DRS 反关联性规则:
$ govc cluster.rule.remove \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyCluster
输出示例
[13-10-22 09:33:24] Reconfigure /MyDatacenter/host/MyCluster...OK
运行以下命令,使用更新的名称再次创建规则:
$ govc cluster.rule.create \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyOtherCluster \ -enable \ -anti-affinity master-0 master-1 master-2
3.4.18. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.14 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
3.4.19. 后续步骤
- 自定义集群。
- 如果需要,您可以选择 不使用远程健康报告。
- 设置 registry 并配置 registry 存储。
- 可选: 查看 vSphere 问题检测器 Operator 中的事件,以确定集群是否有权限或存储配置问题。
- 可选:如果您创建了加密的虚拟机,请创建一个加密的存储类。
3.5. 在使用用户置备的受限网络中的 vSphere 上安装集群
在 OpenShift Container Platform 版本 4.14 中,您可以在受限网络中置备的 VMware vSphere 基础架构上安装集群。
OpenShift Container Platform 支持将集群部署到单个 VMware vCenter 中。不支持在多个 vCenter 上使用机器/机器集部署集群。
执行用户置备的基础架构安装的步骤仅作为示例。使用您提供的基础架构安装集群需要了解 vSphere 平台和 OpenShift Container Platform 的安装过程。使用用户置备的基础架构安装说明作为指南 ; 您可以通过其他方法创建所需的资源。
3.5.1. 先决条件
- 您已完成了 使用用户置备的基础架构准备安装集群 中的任务。
- 您检查了 VMware 平台许可证。红帽不会对 VMware 许可证产生任何限制,但有些 VMware 基础架构组件需要许可。
- 您可以参阅有关 OpenShift Container Platform 安装和更新 流程的详细信息。
- 您可以阅读有关 选择集群安装方法的文档,并为用户准备它。
您在镜像主机上创建 registry,并获取您的 OpenShift Container Platform 版本的
imageContentSources
数据。重要由于安装介质位于镜像主机上,因此您可以使用该计算机完成所有安装步骤。
-
已为集群置备了 持久性存储。要部署私有镜像 registry,您的存储必须提供
ReadWriteMany
访问模式。 - 完成安装要求您在 vSphere 主机上上传 Red Hat Enterprise Linux CoreOS(RHCOS)OVA。完成此过程的机器需要访问 vCenter 和 ESXi 主机上的端口 443。您确认可以访问端口 443。
- 如果您使用防火墙,您与管理员确认可以访问端口 443。control plane 节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,才能成功安装。
如果您使用防火墙并计划使用 Telemetry 服务,则将防火墙配置为允许集群需要访问的站点。
注意如果要配置代理,请务必查看此站点列表。
3.5.2. 关于在受限网络中安装
在 OpenShift Container Platform 4.14 中,可以执行不需要有效的互联网连接来获取软件组件的安装。受限网络安装可以使用安装程序置备的基础架构或用户置备的基础架构完成,具体取决于您要安装集群的云平台。
如果您选择在云平台中执行受限网络安装,您仍需要访问其云 API。有些云功能,比如 Amazon Web Service 的 Route 53 DNS 和 IAM 服务,需要访问互联网。根据您的网络,在裸机硬件、Nutanix 或 VMware vSphere 上安装可能需要较少的互联网访问。
要完成受限网络安装,您必须创建一个 registry,以镜像 OpenShift 镜像 registry 的内容并包含安装介质。您可以在镜像主机上创建此 registry,该主机可同时访问互联网和您的封闭网络,也可以使用满足您的限制条件的其他方法。
由于用户置备安装配置的复杂性,在尝试使用用户置备的基础架构受限网络安装前,请考虑完成标准用户置备的基础架构安装。完成此测试安装后,您可以更轻松地隔离和排除在受限网络中安装过程中可能出现的任何问题。
3.5.2.1. 其他限制
受限网络中的集群有以下额外限制和限制:
-
ClusterVersion
状态包含一个Unable to retrieve available updates
错误。 - 默认情况下,您无法使用 Developer Catalog 的内容,因为您无法访问所需的镜像流标签。
3.5.3. OpenShift Container Platform 互联网访问
在 OpenShift Container Platform 4.14 中,您需要访问互联网来获得用来安装集群的镜像。
您必须具有以下互联网访问权限:
- 访问 OpenShift Cluster Manager 以下载安装程序并执行订阅管理。如果集群可以访问互联网,并且没有禁用 Telemetry,该服务会自动授权您的集群。
- 访问 Quay.io,以获取安装集群所需的软件包。
- 获取执行集群更新所需的软件包。
3.5.4. VMware vSphere 区域和区启用
您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。每个数据中心都可以运行多个集群。此配置降低了导致集群失败的硬件故障或网络中断的风险。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
VMware vSphere 区域和区启用功能需要 vSphere Container Storage Interface (CSI) 驱动程序作为集群中的默认存储驱动程序。因此,这个功能只在新安装的集群中可用。
对于从上一版本升级的集群,您必须为集群启用 CSI 自动迁移。然后,您可以为升级的集群配置多个区域和区域。
默认安装配置将集群部署到单个 vSphere 数据中心。如果要将集群部署到多个 vSphere 数据中心,您必须创建一个启用地区和区功能的安装配置文件。
默认 install-config.yaml
文件包含 vcenters
和 failureDomains
字段,您可以在其中为 OpenShift Container Platform 集群指定多个 vSphere 数据中心和集群。如果要在由单个数据中心组成的 vSphere 环境中安装 OpenShift Container Platform 集群,您可以将这些字段留空。
以下列表描述了为集群定义区和区域相关的术语:
-
故障域:建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 -
Region :指定 vCenter 数据中心。您可以使用
openshift-region
标签类别中的标签来定义区域。 -
Zone:指定一个 vCenter 集群。您可以使用
openshift-zone
标签类别中的标签来定义区。
如果您计划在 install-config.yaml
文件中指定多个故障域,则必须在创建配置文件前创建标签类别、区域标签和区域标签。
您必须为每个代表一个区域的 vCenter 数据中心创建一个 vCenter 标签。另外,您必须为比数据中心(代表一个区)中运行的每个集群创建一个 vCenter 标签。创建标签后,您必须将每个标签附加到对应的数据中心和集群。
下表概述了在单个 VMware vCenter 中运行的多个 vSphere 数据中心的区域、区域和标签之间的关系示例。
数据中心(区域) | 集群(区) | Tags |
---|---|---|
us-east | us-east-1 | us-east-1a |
us-east-1b | ||
us-east-2 | us-east-2a | |
us-east-2b | ||
us-west | us-west-1 | us-west-1a |
us-west-1b | ||
us-west-2 | us-west-2a | |
us-west-2b |
3.5.5. 手动创建安装配置文件
对于用户置备的 OpenShift Container Platform 安装,需要手动生成安装配置文件。
Cluster Cloud Controller Manager Operator 对提供的主机名或 IP 地址执行连接检查。确保为可访问的 vCenter 服务器指定主机名或 IP 地址。如果您向不存在的 vCenter 服务器提供元数据,集群安装会在 bootstrap 阶段失败。
先决条件
- 您在本地机器上有一个 SSH 公钥来提供给安装程序。该密钥将用于在集群节点上进行 SSH 身份验证,以进行调试和灾难恢复。
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
-
获取命令输出中的
imageContentSources 部分来
镜像存储库。 - 获取您的镜像 registry 的证书内容。
流程
创建一个安装目录来存储所需的安装资产:
$ mkdir <installation_directory>
重要您必须创建一个目录。有些安装资产,如 bootstrap X.509 证书的过期间隔较短,因此不得重复使用安装目录。如果要重复使用另一个集群安装中的单个文件,您可以将它们复制到您的目录中。但是,安装资产的文件名可能会在发行版本间有所变化。从以前的 OpenShift Container Platform 版本中复制安装文件时请小心。
自定义提供的
install-config.yaml
文件模板示例,并将其保存在<installation_directory>
中。注意您必须将此配置文件命名为
install-config.yaml
。-
除非使用 RHCOS 默认信任的 registry,如
docker.io
,否则必须在additionalTrustBundle
部分中提供镜像存储库的证书内容。在大多数情况下,您必须为您的镜像提供证书。 -
您必须包含命令输出
中的 imageContentSources 部分才能
镜像存储库。
重要-
在镜像过程完成后,
ImageContentSourcePolicy
文件作为oc mirror
的输出生成。 -
oc mirror
命令会生成ImageContentSourcePolicy
文件,其中包含定义ImageContentSourcePolicy
所需的 YAML。复制此文件中的文本并将其粘贴到install-config.yaml
文件中。 -
您必须运行 'oc mirror' 命令两次。第一次运行
oc mirror
命令时,您将获得完整的ImageContentSourcePolicy
文件。第二次运行oc mirror
命令时,您只获得第一次运行和第二次运行之间的差别。由于此行为,您必须始终保留这些文件的备份,以防需要将这些文件合并到一个完整的ImageContentSourcePolicy
文件中。备份这两个输出文件可确保您有完整的ImageContentSourcePolicy
文件。
-
除非使用 RHCOS 默认信任的 registry,如
备份
install-config.yaml
文件,以便您可以使用它安装多个集群。重要install-config.yaml
文件会在安装过程的下一步中使用。现在必须备份它。
其他资源
3.5.5.1. VMware vSphere 的 install-config.yaml
文件示例
您可以自定义 install-config.yaml
文件,以指定有关 OpenShift Container Platform 集群平台的更多详情,或修改所需参数的值。
additionalTrustBundlePolicy: Proxyonly apiVersion: v1 baseDomain: example.com 1 compute: 2 - architecture: amd64 name: <worker_node> platform: {} replicas: 0 3 controlPlane: 4 architecture: amd64 name: <parent_node> platform: {} replicas: 3 5 metadata: creationTimestamp: null name: test 6 networking: --- platform: vsphere: failureDomains: 7 - name: <failure_domain_name> region: <default_region_name> server: <fully_qualified_domain_name> topology: computeCluster: "/<datacenter>/host/<cluster>" datacenter: <datacenter> 8 datastore: "/<datacenter>/datastore/<datastore>" 9 networks: - <VM_Network_name> resourcePool: "/<datacenter>/host/<cluster>/Resources/<resourcePool>" 10 folder: "/<datacenter_name>/vm/<folder_name>/<subfolder_name>" 11 zone: <default_zone_name> vcenters: - datacenters: - <datacenter> password: <password> 12 port: 443 server: <fully_qualified_domain_name> 13 user: administrator@vsphere.local diskType: thin 14 fips: false 15 pullSecret: '{"auths":{"<local_registry>": {"auth": "<credentials>","email": "you@example.com"}}}' 16 sshKey: 'ssh-ed25519 AAAA...' 17 additionalTrustBundle: | 18 -----BEGIN CERTIFICATE----- ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ -----END CERTIFICATE----- imageContentSources: 19 - mirrors: - <mirror_host_name>:<mirror_port>/<repo_name>/release source: <source_image_1> - mirrors: - <mirror_host_name>:<mirror_port>/<repo_name>/release-images source: <source_image_2>
- 1
- 集群的基域。所有 DNS 记录都必须是这个基域的子域,并包含集群名称。
- 2 4
controlPlane
部分是一个单个映射,但 compute 部分是一系列映射。为满足不同数据结构的要求,compute
部分的第一行必须以连字符-
开头,controlPlane部分
的第一行则不以连字符开头。两个部分都定义单个机器池,因此只使用一个 control plane。OpenShift Container Platform 不支持定义多个计算池。- 3
replicas
参数的值必须设置为0
。此参数控制集群为您创建和管理的 worker 数量,在使用用户置备的基础架构时集群不会执行这些功能。在完成 OpenShift Container Platform 安装前,您必须手动为集群部署 worker 机器。- 5
- 您添加到集群的 control plane 机器数量。由于集群使用此值作为集群中的 etcd 端点数量,所以该值必须与您部署的 control plane 机器数量匹配。
- 6
- 您在 DNS 记录中指定的集群名称。
- 7
- 建立地区和区域之间的关系。您可以使用 vCenter 对象(如
datastore
对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 - 8
- vSphere 数据中心.
- 9
- 保存虚拟机文件、模板和 ISO 镜像的 vSphere 数据存储路径。重要
您可以指定数据存储集群中存在的任何数据存储路径。默认情况下,Storage vMotion 会自动为数据存储集群启用。红帽不支持 Storage vMotion,因此您必须禁用 Storage vMotion 以避免 OpenShift Container Platform 集群的数据丢失问题。
如果需要在多个数据存储间指定虚拟机,请使用
数据存储
对象在集群install-config.yaml
配置文件中指定故障域。如需更多信息,请参阅"VMware vSphere 区域和区启用"。 - 10
- 可选: 对于安装程序置备的基础架构,安装程序创建虚拟机的现有资源池的绝对路径,例如
/<datacenter_name>/host/<cluster_name>/Resources/<resource_pool_name>/<optional_nested_resource_pool_name>
。如果没有指定值,则会在集群/example_datacenter/host/example_cluster/Resources
根中安装资源。 - 11
- 可选: 对于安装程序置备的基础架构,安装程序创建虚拟机的现有文件夹的绝对路径,如
/<datacenter_name>/vm/<folder_name>/<subfolder_name>
。如果没有提供这个值,安装程序会在数据中心虚拟机文件夹中创建一个顶层文件夹,其名称为基础架构 ID。如果您为集群提供基础架构,且您不想使用默认的StorageClass
对象(名为thin
),您可以从install-config.yaml
文件中省略folder
参数。 - 12
- 与 vSphere 用户关联的密码。
- 13
- vCenter 服务器的完全限定主机名或 IP 地址。重要
Cluster Cloud Controller Manager Operator 对提供的主机名或 IP 地址执行连接检查。确保为可访问的 vCenter 服务器指定主机名或 IP 地址。如果您向不存在的 vCenter 服务器提供元数据,集群安装会在 bootstrap 阶段失败。
- 14
- vSphere 磁盘置备方法。
- 15
- 是否启用或禁用 FIPS 模式。默认情况下不启用 FIPS 模式。如果启用了 FIPS 模式,运行 OpenShift Container Platform 的 Red Hat Enterprise Linux CoreOS(RHCOS)机器会绕过默认的 Kubernetes 加密套件,并使用由 RHCOS 提供的加密模块。重要
要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 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。
- 16
- 对于
<local_registry>
,请指定 registry 域名,以及您的镜像 registry 用来提供内容的可选端口。例如registry.example.com 或
registry.example.com:5000
。对于<credentials>
,请为您的镜像 registry 指定 base64 编码的用户名和密码。 - 17
- Red Hat Enterprise Linux CoreOS(RHCOS)中
core
用户的默认 SSH 密钥的公钥部分。注意对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定
ssh-agent
进程使用的 SSH 密钥。 - 18
- 提供用于镜像 registry 的证书文件内容。
- 19
- 提供命令输出中的
imageContentSources 部分来
镜像存储库。
3.5.5.2. 在安装过程中配置集群范围的代理
生产环境可能会拒绝直接访问互联网,而是提供 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----- additionalTrustBundlePolicy: <policy_to_add_additionalTrustBundle> 5
- 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
的配置映射,其包含代理 HTTPS 连接所需的一个或多个额外 CA 证书。然后,Cluster Network Operator 会创建trusted-ca-bundle
配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS(RHCOS)信任捆绑包合并,Proxy
对象的trustedCA
字段中也会引用此配置映射。additionalTrustBundle
字段是必需的,除非代理的身份证书由来自 RHCOS 信任捆绑包的颁发机构签名。 - 5
- 可选:决定
Proxy
对象的配置以引用trustedCA
字段中user-ca-bundle
配置映射的策略。允许的值是Proxyonly
和Always
。仅在配置了http/https
代理时,使用Proxyonly
引用user-ca-bundle
配置映射。使用Always
始终引用user-ca-bundle
配置映射。默认值为Proxyonly
。
注意安装程序不支持代理的
readinessEndpoints
字段。注意如果安装程序超时,重启并使用安装程序的
wait-for
命令完成部署。例如:$ ./openshift-install wait-for install-complete --log-level debug
- 保存该文件并在安装 OpenShift Container Platform 时引用。
安装程序会创建一个名为 cluster 的集群范围代理,该代理 使用
提供的 install-config.yaml
文件中的代理设置。如果没有提供代理设置,仍然会创建一个 cluster
Proxy
对象,但它会有一个空 spec
。
只支持名为 cluster
的 Proxy
对象,且无法创建额外的代理。
3.5.5.3. 为 VMware vCenter 配置区域和区域
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到在单个 VMware vCenter 中运行的多个 vSphere 数据中心。
之前版本的 OpenShift Container Platform 的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
会提示您显示在配置文件中已弃用字段的警告信息。
这个示例使用 govc
命令。govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽支持团队不维护 govc
命令。有关下载和安装 govc
的说明,请参阅 VMware 文档网站
先决条件
您有一个现有的
install-config.yaml
安装配置文件。重要您必须为 OpenShift Container Platform 集群指定一个故障域,以便您可以为 VMware vCenter 服务器置备数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中置备虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。
流程
输入以下
govc
命令行工具命令,以创建openshift-region
和openshift-zone
vCenter 标签类别:重要如果为
openshift-region
和openshift-zone
vCenter 标签类别指定不同的名称,OpenShift Container Platform 集群的安装会失败。$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为您要部署集群的每个区域 vSphere 数据中心创建一个 region 标签,请在终端中输入以下命令:
$ govc tags.create -c <region_tag_category> <region_tag>
要为您要部署集群的每个 vSphere 集群创建一个区标签,请输入以下命令:
$ govc tags.create -c <zone_tag_category> <zone_tag>
输入以下命令将区域标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <region_tag_category> <region_tag_1> /<datacenter_1>
输入以下命令将区标签附加到每个 vCenter 数据中心对象:
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<datacenter_1>/host/vcs-mdcnc-workload-1
- 进入包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
在 vSphere 数据中心中定义的多个数据中心的 install-config.yaml
文件示例
--- compute: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- controlPlane: --- vsphere: zones: - "<machine_pool_zone_1>" - "<machine_pool_zone_2>" --- platform: vsphere: vcenters: --- datacenters: - <datacenter1_name> - <datacenter2_name> failureDomains: - name: <machine_pool_zone_1> region: <region_tag_1> zone: <zone_tag_1> server: <fully_qualified_domain_name> topology: datacenter: <datacenter1> computeCluster: "/<datacenter1>/host/<cluster1>" networks: - <VM_Network1_name> datastore: "/<datacenter1>/datastore/<datastore1>" resourcePool: "/<datacenter1>/host/<cluster1>/Resources/<resourcePool1>" folder: "/<datacenter1>/vm/<folder1>" - name: <machine_pool_zone_2> region: <region_tag_2> zone: <zone_tag_2> server: <fully_qualified_domain_name> topology: datacenter: <datacenter2> computeCluster: "/<datacenter2>/host/<cluster2>" networks: - <VM_Network2_name> datastore: "/<datacenter2>/datastore/<datastore2>" resourcePool: "/<datacenter2>/host/<cluster2>/Resources/<resourcePool2>" folder: "/<datacenter2>/vm/<folder2>" ---
3.5.6. 创建 Kubernetes 清单和 Ignition 配置文件
由于您必须修改一些集群定义文件并手动启动集群机器,因此您必须生成 Kubernetes 清单和 Ignition 配置文件来配置机器。
安装配置文件转换为 Kubernetes 清单。清单嵌套到 Ignition 配置文件中,稍后用于配置集群机器。
-
OpenShift Container Platform 安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
先决条件
- 已获得 OpenShift Container Platform 安装程序。对于受限网络安装,这些文件位于您的镜像主机上。
-
已创建
install-config.yaml
安装配置文件。
流程
进入包含 OpenShift Container Platform 安装程序的目录,并为集群生成 Kubernetes 清单:
$ ./openshift-install create manifests --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定包含您创建的install-config.yaml
文件的安装目录。
删除定义 control plane 机器的 Kubernetes 清单文件、计算机器集和 control plane 机器集:
$ rm -f openshift/99_openshift-cluster-api_master-machines-*.yaml openshift/99_openshift-cluster-api_worker-machineset-*.yaml openshift/99_openshift-machine-api_master-control-plane-machine-set.yaml
由于您要自行创建和管理这些资源,因此不必初始化这些资源。
- 您可以使用机器 API 来保留计算机器集文件来创建计算机器,但您必须更新对它们的引用以匹配您的环境。
检查
<installation_directory>/manifests/cluster-scheduler-02-config.yml Kubernetes 清单文件中的
mastersSchedulable
参数是否已设置为false
。此设置可防止在 control plane 机器上调度 pod:-
打开
<installation_directory>/manifests/cluster-scheduler-02-config.yml
文件。 -
找到
mastersSchedulable
参数,并确保它被设置为false
。 - 保存并退出 文件。
-
打开
要创建 Ignition 配置文件,请从包含安装程序的目录运行以下命令:
$ ./openshift-install create ignition-configs --dir <installation_directory> 1
- 1
- 对于
<installation_directory>
,请指定相同的安装目录。
为安装目录中的 bootstrap、control plane 和计算节点创建 Ignition 配置文件。
kubeadmin-password
和kubeconfig
文件在./<installation_directory>/auth
目录中创建:. ├── auth │ ├── kubeadmin-password │ └── kubeconfig ├── bootstrap.ign ├── master.ign ├── metadata.json └── worker.ign
3.5.7. 配置 chrony 时间服务
您必须通过修改 chrony .conf
文件的内容来设置 chrony 时间服务(chronyd
)使用的时间服务器和相关设置,并将这些内容作为机器配置传递给节点。
流程
创建一个 Butane 配置,包括
chrony.conf
文件的内容。例如,要在 worker 节点上配置 chrony,请创建一个99-worker-chrony.bu
文件。注意如需有关 Butane 的信息,请参阅"使用 Butane 创建机器配置"。
variant: openshift version: 4.14.0 metadata: name: 99-worker-chrony 1 labels: machineconfiguration.openshift.io/role: worker 2 storage: files: - path: /etc/chrony.conf mode: 0644 3 overwrite: true contents: inline: | pool 0.rhel.pool.ntp.org iburst 4 driftfile /var/lib/chrony/drift makestep 1.0 3 rtcsync logdir /var/log/chrony
使用 Butane 生成
MachineConfig
对象文件99-worker-chrony.yaml
,其中包含要交付至节点的配置:$ butane 99-worker-chrony.bu -o 99-worker-chrony.yaml
使用以下两种方式之一应用配置:
-
如果集群还没有运行,在生成清单文件后,将
MachineConfig
对象文件添加到<installation_directory>/openshift
目录中,然后继续创建集群。 如果集群已在运行,请应用该文件:
$ oc apply -f ./99-worker-chrony.yaml
-
如果集群还没有运行,在生成清单文件后,将
3.5.8. 提取基础架构名称
Ignition 配置文件包含一个唯一集群标识符,您可以使用它在 VMware vSphere 中唯一地标识您的集群。如果计划使用集群标识符作为虚拟机文件夹的名称,则必须提取它。
先决条件
- 已获取 OpenShift Container Platform 安装程序和集群的 pull secret。
- 已为集群生成 Ignition 配置文件。
-
已安装
jq
软件包。
3.5.9. 安装 RHCOS 并启动 OpenShift Container Platform bootstrap 过程
要在 VMware vSphere 上的用户置备的基础架构上安装 OpenShift Container Platform,您必须在 vSphere 主机上安装 Red Hat Enterprise Linux CoreOS(RHCOS)。安装 RHCOS 时,您必须为您要安装的机器类型提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。如果您配置了适当的网络、DNS 和负载均衡基础架构,OpenShift Container Platform bootstrap 过程会在 RHCOS 机器重启后自动启动。
先决条件
- 已获取集群的 Ignition 配置文件。
- 具有 HTTP 服务器的访问权限,以便您可从计算机进行访问,并且您创建的机器也可访问此服务器。
- 您已创建了 vSphere 集群。
流程
-
将名为
<installation_directory>/bootstrap.ign
的 bootstrap Ignition 配置文件上传到 HTTP 服务器。注意此文件的 URL。 将 bootstrap 节点的以下辅助 Ignition 配置文件保存到计算机中,存为
<installation_directory>/merge-bootstrap.ign
:{ "ignition": { "config": { "merge": [ { "source": "<bootstrap_ignition_config_url>", 1 "verification": {} } ] }, "timeouts": {}, "version": "3.2.0" }, "networkd": {}, "passwd": {}, "storage": {}, "systemd": {} }
- 1
- 指定您托管的 bootstrap Ignition 配置文件的 URL。
为 bootstrap 机器创建虚拟机(VM)时,您要使用此 Ignition 配置文件。
找到安装程序创建的以下 Ignition 配置文件:
-
<installation_directory>/master.ign
-
<installation_directory>/worker.ign
-
<installation_directory>/merge-bootstrap.ign
-
将 Ignition 配置文件转换为 Base64 编码。在此流程中,您必须将这些文件添加到虚拟机中的额外配置参数
guestinfo.ignition.config.data
中。例如,如果使用 Linux 操作系统,您可以使用
base64
命令对文件进行编码。$ base64 -w0 <installation_directory>/master.ign > <installation_directory>/master.64
$ base64 -w0 <installation_directory>/worker.ign > <installation_directory>/worker.64
$ base64 -w0 <installation_directory>/merge-bootstrap.ign > <installation_directory>/merge-bootstrap.64
重要如果您计划在安装完成后在集群中添加更多计算机器,请不要删除这些文件。
获取 RHCOS OVA 镜像。镜像位于 RHCOS 镜像镜像页面。
重要RHCOS 镜像可能不会随着 OpenShift Container Platform 的每个发行版本而改变。您必须下载最高版本的镜像,其版本号应小于或等于您安装的 OpenShift Container Platform 版本。如果可用,请使用与 OpenShift Container Platform 版本匹配的镜像版本。
文件名包含 OpenShift Container Platform 版本号,格式为
rhcos-vmware.<architecture>.ova
。在 vSphere 客户端中,在数据中心中创建一个文件夹来存储虚拟机。
- 单击 VMs and Templates 视图。
- 右键单击您的数据中心的名称。
- 点击 New Folder → New VM and Template Folder。
-
在显示的窗口中,输入文件夹名称。如果您没有在
install-config.yaml
文件中指定现有文件夹,请创建一个名称与基础架构 ID 相同的文件夹。您可以使用这个文件夹名称,因此 vCenter 会在适当的位置为 Workspace 配置动态置备存储。
在 vSphere 客户端中,为 OVA 镜像创建一个模板,然后根据需要克隆模板。
注意在以下步骤中,您将创建模板,然后克隆所有集群机器的模板。然后,您在置备虚拟机时为该克隆的机器类型提供 Ignition 配置文件的位置。
- 在 Hosts and Clusters 选项卡中,右键点击您的集群名称并选择 Deploy OVF Template。
- 在 Select an OVF 选项卡中,指定您下载的 RHCOS OVA 文件的名称。
-
在 Select a name and folder 选项卡中,为您的模板设置 虚拟机名称,如
Template-RHCOS
。点击 vSphere 集群的名称并选择您在上一步中创建的文件夹。 - 在 Select a compute resource 选项卡中,点击 vSphere 集群的名称。
在 Select storage 选项卡中,配置虚拟机的存储选项。
- 根据您的存储首选项,选择 Thin Provision 或 Thick Provision。
-
选择您在
install-config.yaml
文件中指定的数据存储。 - 如果要加密虚拟机,请选择 Encrypt this virtual machine。如需更多信息,请参阅标题为"加密虚拟机的要求"的部分。
- 在 Select network 选项卡中,指定您为集群配置的网络(如果可用)。
在创建 OVF 模板时,不要在 Customize template 选项卡上指定值,也不会进一步配置模板。
重要不要启动原始虚拟机模板。VM 模板必须保持关闭,必须为新的 RHCOS 机器克隆。启动虚拟机模板会将虚拟机模板配置为平台上的虚拟机,这样可防止它被用作计算机器集可应用配置的模板。
可选: 如果需要,更新 VM 模板中配置的虚拟硬件版本。如需更多信息 ,请参阅 VMware 文档中的将虚拟机升级到最新硬件版本。
重要如有必要,建议您在从虚拟机创建虚拟机前将虚拟机模板的硬件版本更新为版本 15。在 vSphere 上运行的集群节点使用硬件版本 13 现已弃用。如果您导入的模板默认为硬件版本 13,您必须在将 VM 模板升级到硬件版本 15 前确保 ESXi 主机为 6.7U3 或更高版本。如果您的 vSphere 版本小于 6.7U3,您可以跳过此升级步骤;但是,计划将来的 OpenShift Container Platform 版本删除对小于 6.7U3 的硬件版本 13 和 vSphere 版本的支持。
部署模板后,为集群中的机器部署虚拟机。
- 右键点击模板名称,再点击 Clone → Clone to Virtual Machine。
在 Select a name and folder 选项卡中,指定虚拟机的名称。您可以在名称中包含机器类型,如
control-plane-0 或
compute-1
。注意确保 vSphere 安装中的所有虚拟机名称都是唯一的。
- 在 Select a name and folder 选项卡中,选择您为集群创建的文件夹名称。
- 在 Select a compute resource 选项卡中,选择数据中心中的主机名称。
- 在 Select clone options 选项卡中,选择 Customize this virtual machine's hardware。
在 Customize hardware 选项卡上,点 Advanced Parameters。
重要以下配置建议仅用于演示目的。作为集群管理员,您必须根据集群上的资源需求来配置资源。为了更好地管理集群资源,请考虑从集群的 root 资源池创建资源池。
可选:覆盖 vSphere 中的默认 DHCP 网络。启用静态 IP 网络:
设置静态 IP 配置:
示例命令
$ export IPCFG="ip=<ip>::<gateway>:<netmask>:<hostname>:<iface>:none nameserver=srv1 [nameserver=srv2 [nameserver=srv3 [...]]]"
示例命令
$ export IPCFG="ip=192.168.100.101::192.168.100.254:255.255.255.0:::none nameserver=8.8.8.8"
在从 vSphere 中的 OVA 引导虚拟机前,设置
guestinfo.afterburn.initrd.network-kargs
属性:示例命令
$ govc vm.change -vm "<vm_name>" -e "guestinfo.afterburn.initrd.network-kargs=${IPCFG}"
通过在 Attribute 和 Values 字段中指定数据来添加以下配置参数名称和值。确保为您创建的每个参数选择 Add 按钮。
-
guestinfo.ignition.config.data
:找到您在此流程中创建的 base-64 编码文件,并粘贴此机器类型的 base64 编码 Ignition 配置文件的内容。 -
guestinfo.ignition.config.data.encoding
:指定base64
。 -
disk.EnableUUID
:指定TRUE
。 -
stealclock.enable
:如果没有定义此参数,请添加它并指定TRUE
。 - 从集群的 root 资源池创建子资源池。执行此子资源池中的资源分配。
-
- 在 Customize hardware 选项卡的 Virtual Hardware 面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储的数量满足机器类型的最低要求。
- 完成剩余的配置步骤。点 Finish 按钮,您已完成克隆操作。
- 在 Virtual Machines 选项卡中,右键点您的虚拟机,然后选择 Power → Power On。
检查控制台输出,以验证 Ignition 是否运行。
示例命令
Ignition: ran on 2022/03/14 14:48:33 UTC (this boot) Ignition: user-provided config was applied
后续步骤
对每台机器执行前面的步骤,为集群创建其余机器。
重要此时您必须创建 bootstrap 和 control plane 机器。由于计算机器上已默认部署了一些 Pod,因此还要在安装集群前至少创建两台计算机器。
3.5.10. 将更多计算机器添加到 vSphere 中的集群
您可以将更多计算机器添加到 VMware vSphere 上的用户置备的 OpenShift Container Platform 集群中。
在 OpenShift Container Platform 集群中部署 vSphere 模板后,您可以为该集群中的机器部署虚拟机(VM)。
先决条件
- 获取计算机器的 base64 编码 Ignition 文件。
- 您可以访问您为集群创建的 vSphere 模板。
流程
- 右键点击模板的名称,再点击 Clone → Clone to Virtual Machine。
在 Select a name and folder 选项卡中,指定虚拟机的名称。您可以在名称中包含机器类型,如
compute-1
。注意确保 vSphere 安装中的所有虚拟机名称都是唯一的。
- 在 Select a name and folder 选项卡中,选择您为集群创建的文件夹名称。
- 在 Select a compute resource 选项卡中,选择数据中心中的主机名称。
- 在 Select storage 选项卡中,为您的配置和磁盘文件选择存储。
- 在 Select clone options 选项卡中,选择 Customize this virtual machine's hardware。
在 Customize hardware 选项卡上,点 Advanced Parameters。
通过在 Attribute 和 Values 字段中指定数据来添加以下配置参数名称和值。确保为您创建的每个参数选择 Add 按钮。
-
guestinfo.ignition.config.data
:粘贴此机器类型的 base64 编码计算 Ignition 配置文件的内容。 -
guestinfo.ignition.config.data.encoding
:指定base64
。 -
disk.EnableUUID
:指定TRUE
。
-
- 在 Customize hardware 选项卡的 Virtual Hardware 面板中,根据需要修改指定的值。确保 RAM、CPU 和磁盘存储的数量满足机器类型的最低要求。如果存在多个网络,请选择 Add New Device > Network Adapter,然后在 New Network 菜单项提供的字段中输入您的网络信息。
- 完成剩余的配置步骤。点 Finish 按钮,您已完成克隆操作。
- 在 Virtual Machines 选项卡中,右键点您的虚拟机,然后选择 Power → Power On。
后续步骤
- 继续为集群创建更多计算机器。
3.5.11. 磁盘分区
在大多数情况下,数据分区最初是由安装 RHCOS 而不是安装另一个操作系统来创建的。在这种情况下,OpenShift Container Platform 安装程序被允许配置磁盘分区。
但是,在安装 OpenShift Container Platform 节点时,在两种情况下您可能需要覆盖默认分区:
创建单独的分区: 要在空磁盘上进行 greenfield 安装,您可能需要在分区中添加单独的存储。这正式支持生成
/var 或 /var
的子目录,
如/var/lib/etcd
(独立分区),但不支持两者。重要对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的
/var
分区。如需更多信息,请参阅"创建独立/var
分区"和 红帽知识库文章。重要Kubernetes 仅支持两个文件系统分区。如果您在原始配置中添加多个分区,Kubernetes 无法监控所有这些分区。
-
保留现有分区:对于 brownfield 安装,您要在现有节点上重新安装 OpenShift Container Platform,并希望保留从之前的操作系统中安装的数据分区,对于
coreos-installer
来说,引导选项和选项都允许您保留现有数据分区。
创建独立 /var
分区
通常,OpenShift Container Platform 的磁盘分区应该保留给安装程序。然而,在有些情况下您可能需要在文件系统的一部分中创建独立分区。
OpenShift Container Platform 支持添加单个分区来将存储附加到 /var
分区或 /var
的子目录中。例如:
-
/var/lib/containers
:保存随着系统中添加更多镜像和容器而增长的容器相关内容。 -
/var/lib/etcd
:保存您可能希望独立保留的数据,比如 etcd 存储的性能优化。 /var
:保存您可能希望独立保留的数据,以满足审计等目的。重要对于大于 100GB 的磁盘大小,特别是磁盘大小大于 1TB,请创建一个独立的
/var
分区。
通过单独存储 /var
目录的内容,可以更轻松地根据需要为区域扩展存储,并在以后重新安装 OpenShift Container Platform,并保持该数据的完整性。使用这个方法,您不必再次拉取所有容器,在更新系统时也不必复制大量日志文件。
因为 /var
在进行一个全新的 Red Hat Enterprise Linux CoreOS(RHCOS)安装前必需存在,所以这个流程会在 OpenShift Container Platform 安装过程的 openshift-install
准备阶段插入一个创建的机器配置清单的机器配置来设置独立的 /var
分区。
流程
创建存放 OpenShift Container Platform 安装文件的目录:
$ mkdir $HOME/clusterconfig
运行
openshift-install
,以在manifest
和openshift
子目录中创建一组文件。在系统提示时回答系统问题:$ openshift-install create manifests --dir $HOME/clusterconfig ? SSH Public Key ... $ ls $HOME/clusterconfig/openshift/ 99_kubeadmin-password-secret.yaml 99_openshift-cluster-api_master-machines-0.yaml 99_openshift-cluster-api_master-machines-1.yaml 99_openshift-cluster-api_master-machines-2.yaml ...
创建用于配置额外分区的 Butane 配置。例如,将文件命名为
$HOME/clusterconfig/98-var-partition.bu
,将磁盘设备名称改为worker
系统上存储设备的名称,并根据情况设置存储大小。这个示例将/var
目录放在一个单独的分区中:variant: openshift version: 4.14.0 metadata: labels: machineconfiguration.openshift.io/role: worker name: 98-var-partition storage: disks: - device: /dev/disk/by-id/<device_name> 1 partitions: - label: var start_mib: <partition_start_offset> 2 size_mib: <partition_size> 3 number: 5 filesystems: - device: /dev/disk/by-partlabel/var path: /var format: xfs mount_options: [defaults, prjquota] 4 with_mount_unit: true
注意当创建单独的
/var
分区时,如果不同的实例类型没有相同的设备名称,则无法为 worker 节点使用不同的实例类型。从 Butane 配置创建一个清单,并将它保存到
clusterconfig/openshift
目录中。例如,运行以下命令:$ butane $HOME/clusterconfig/98-var-partition.bu -o $HOME/clusterconfig/openshift/98-var-partition.yaml
再次运行
openshift-install
,从manifest
和openshift
子目录中的一组文件创建 Ignition 配置:$ openshift-install create ignition-configs --dir $HOME/clusterconfig $ ls $HOME/clusterconfig/ auth bootstrap.ign master.ign metadata.json worker.ign
现在,您可以使用 Ignition 配置文件作为 vSphere 安装程序的输入来安装 Red Hat Enterprise Linux CoreOS(RHCOS)系统。
3.5.12. 等待 bootstrap 过程完成
OpenShift Container Platform bootstrap 过程在集群节点首次引导到安装到磁盘的持久 RHCOS 环境后开始。通过 Ignition 配置文件提供的配置信息用于初始化 bootstrap 过程并在机器上安装 OpenShift Container Platform。您必须等待 bootstrap 过程完成。
先决条件
- 已为集群创建 Ignition 配置文件。
- 您已配置了适当的网络、DNS 和负载平衡基础架构。
- 已获得安装程序,并为集群生成 Ignition 配置文件。
- 已在集群机器上安装 RHCOS,并提供 OpenShift Container Platform 安装程序生成的 Ignition 配置文件。
流程
监控 bootstrap 过程:
$ ./openshift-install --dir <installation_directory> wait-for bootstrap-complete \ 1 --log-level=info 2
输出示例
INFO Waiting up to 30m0s for the Kubernetes API at https://api.test.example.com:6443... INFO API v1.27.3 up INFO Waiting up to 30m0s for bootstrapping to complete... INFO It is now safe to remove the bootstrap resources
当 Kubernetes API 服务器提示已在 control plane 机器上引导它时,该命令会成功。
bootstrap 过程完成后,从负载均衡器中删除 bootstrap 机器。
重要此时您必须从负载均衡器中删除 bootstrap 机器。您还可以删除或重新格式化 bootstrap 机器本身。
3.5.13. 使用 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
3.5.14. 批准机器的证书签名请求
当您将机器添加到集群时,会为您添加的每台机器生成两个待处理证书签名请求(CSR)。您必须确认这些 CSR 已获得批准,或根据需要自行批准。必须首先批准客户端请求,然后批准服务器请求。
先决条件
- 您已将机器添加到集群中。
流程
确认集群可以识别这些机器:
$ oc get nodes
输出示例
NAME STATUS ROLES AGE VERSION master-0 Ready master 63m v1.27.3 master-1 Ready master 63m v1.27.3 master-2 Ready master 64m v1.27.3
输出中列出了您创建的所有机器。
注意在有些 CSR 被批准前,前面的输出可能不包括计算节点(也称为 worker 节点)。
检查待处理的 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 请求具有相同参数的新证书,则后续提供证书续订请求由
machine-approver
自动批准。注意对于在未启用机器 API 的平台上运行的集群,如裸机和其他用户置备的基础架构,您必须实施一种方法来自动批准 kubelet 提供证书请求(CSR)。如果没有批准请求,则
oc exec
、ocrsh
和oc logs
命令将无法成功,因为 API 服务器连接到 kubelet 时需要服务证书。与 Kubelet 端点联系的任何操作都需要此证书批准。该方法必须监视新的 CSR,确认 CSR 由 system:node
或system:admin
组中的node-bootstrapper
服务帐户提交,并确认节点的身份。要单独批准,请对每个有效的 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
注意在有些 CSR 被批准前,一些 Operator 可能无法使用。
现在,您的客户端请求已被批准,您必须查看添加到集群中的每台机器的服务器请求:
$ 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.27.3 master-1 Ready master 73m v1.27.3 master-2 Ready master 74m v1.27.3 worker-0 Ready worker 11m v1.27.3 worker-1 Ready worker 11m v1.27.3
注意批准服务器 CSR 后可能需要几分钟时间让机器过渡到
Ready 状态
。
其他信息
- 如需有关 CSR 的更多信息,请参阅 证书签名请求。
3.5.15. 初始 Operator 配置
在 control plane 初始化后,您必须立即配置一些 Operator,以便它们都可用。
先决条件
- 您的 control plane 已初始化。
流程
观察集群组件上线:
$ watch -n5 oc get clusteroperators
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE authentication 4.14.0 True False False 19m baremetal 4.14.0 True False False 37m cloud-credential 4.14.0 True False False 40m cluster-autoscaler 4.14.0 True False False 37m config-operator 4.14.0 True False False 38m console 4.14.0 True False False 26m csi-snapshot-controller 4.14.0 True False False 37m dns 4.14.0 True False False 37m etcd 4.14.0 True False False 36m image-registry 4.14.0 True False False 31m ingress 4.14.0 True False False 30m insights 4.14.0 True False False 31m kube-apiserver 4.14.0 True False False 26m kube-controller-manager 4.14.0 True False False 36m kube-scheduler 4.14.0 True False False 36m kube-storage-version-migrator 4.14.0 True False False 37m machine-api 4.14.0 True False False 29m machine-approver 4.14.0 True False False 37m machine-config 4.14.0 True False False 36m marketplace 4.14.0 True False False 37m monitoring 4.14.0 True False False 29m network 4.14.0 True False False 38m node-tuning 4.14.0 True False False 37m openshift-apiserver 4.14.0 True False False 32m openshift-controller-manager 4.14.0 True False False 30m openshift-samples 4.14.0 True False False 32m operator-lifecycle-manager 4.14.0 True False False 37m operator-lifecycle-manager-catalog 4.14.0 True False False 37m operator-lifecycle-manager-packageserver 4.14.0 True False False 32m service-ca 4.14.0 True False False 38m storage 4.14.0 True False False 37m
- 配置不可用的 Operator。
3.5.15.1. 禁用默认的 OperatorHub 目录源
在 OpenShift Container Platform 安装过程中,默认为 OperatorHub 配置由红帽和社区项目提供的源内容的 operator 目录。在受限网络环境中,必须以集群管理员身份禁用默认目录。
流程
通过在
OperatorHub
对象中添加disableAllDefaultSources: true 来
禁用默认目录的源:$ oc patch OperatorHub cluster --type json \ -p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
或者,您可以使用 Web 控制台管理目录源。在 Administration → Cluster Settings → Configuration → OperatorHub 页面中,点 Sources 选项卡,您可以在其中创建、更新、删除、禁用和启用单独的源。
3.5.15.2. 镜像 registry 存储配置
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须将 registry 配置为使用存储,以便 Registry Operator 可用。
显示配置生产集群所需的持久性卷的说明。如果适用,显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了在升级过程中使用 Recreate
rollout 策略来允许镜像 registry 使用块存储类型的说明。
3.5.15.2.1. 为 VMware vSphere 配置 registry 存储
作为集群管理员,在安装后需要配置 registry 来使用存储。
先决条件
- 集群管理员权限。
- VMware vSphere 上有一个集群。
为集群置备的持久性存储,如 Red Hat OpenShift Data Foundation。
重要当您只有一个副本时,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
3.5.15.2.2. 在非生产集群中为镜像 registry 配置存储
您必须为 Image Registry Operator 配置存储。对于非生产集群,您可以将镜像 registry 设置为空目录。如果您这样做,重启 registry 时会丢失所有镜像。
流程
将镜像 registry 存储设置为空目录:
$ oc patch configs.imageregistry.operator.openshift.io cluster --type merge --patch '{"spec":{"storage":{"emptyDir":{}}}}'
警告仅为非生产集群配置这个选项。
如果在 Image Registry Operator 初始化其组件前运行这个命令,
oc patch
命令会失败并显示以下错误:Error from server (NotFound): configs.imageregistry.operator.openshift.io "cluster" not found
等待几分钟,然后再次运行 命令。
3.5.15.2.3. 为 VMware vSphere 配置块 registry 存储
要允许镜像 registry 在作为集群管理员升级过程中使用块存储类型,如 vSphere Virtual Machine Disk(VMDK),您可以使用 Recreate rollout 策略
。
支持块存储卷,但不建议在生产环境中用于镜像 registry。在块存储上配置 registry 的安装不具有高可用性,因为 registry 无法具有多个副本。
流程
输入以下命令将镜像 registry 存储设置为块存储类型,对 registry 进行补丁,使其使用
Recreate
rollout 策略,并只使用一个
副本运行:$ 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。
3.5.16. 在用户置备的基础架构上完成安装
完成 Operator 配置后,可以在您提供的基础架构上完成集群安装。
先决条件
- 您的 control plane 已初始化。
- 已完成初始 Operator 配置。
流程
使用以下命令确认所有集群组件都在线:
$ watch -n5 oc get clusteroperators
输出示例
NAME VERSION AVAILABLE PROGRESSING DEGRADED SINCE authentication 4.14.0 True False False 19m baremetal 4.14.0 True False False 37m cloud-credential 4.14.0 True False False 40m cluster-autoscaler 4.14.0 True False False 37m config-operator 4.14.0 True False False 38m console 4.14.0 True False False 26m csi-snapshot-controller 4.14.0 True False False 37m dns 4.14.0 True False False 37m etcd 4.14.0 True False False 36m image-registry 4.14.0 True False False 31m ingress 4.14.0 True False False 30m insights 4.14.0 True False False 31m kube-apiserver 4.14.0 True False False 26m kube-controller-manager 4.14.0 True False False 36m kube-scheduler 4.14.0 True False False 36m kube-storage-version-migrator 4.14.0 True False False 37m machine-api 4.14.0 True False False 29m machine-approver 4.14.0 True False False 37m machine-config 4.14.0 True False False 36m marketplace 4.14.0 True False False 37m monitoring 4.14.0 True False False 29m network 4.14.0 True False False 38m node-tuning 4.14.0 True False False 37m openshift-apiserver 4.14.0 True False False 32m openshift-controller-manager 4.14.0 True False False 30m openshift-samples 4.14.0 True False False 32m operator-lifecycle-manager 4.14.0 True False False 37m operator-lifecycle-manager-catalog 4.14.0 True False False 37m operator-lifecycle-manager-packageserver 4.14.0 True False False 32m service-ca 4.14.0 True False False 38m storage 4.14.0 True False False 37m
另外,当所有集群都可用时,以下命令会通知您。它还检索并显示凭证:
$ ./openshift-install --dir <installation_directory> wait-for install-complete 1
- 1
- 对于
<installation_directory>
,请指定安装文件保存到的目录的路径。
输出示例
INFO Waiting up to 30m0s for the cluster to initialize...
Cluster Version Operator 完成从 Kubernetes API 服务器部署 OpenShift Container Platform 集群时,该命令会成功。
重要-
安装程序生成的 Ignition 配置文件包含 24 小时后过期的证书,然后在该时进行续订。如果在更新证书前关闭集群,且集群在 24 小时后重启,集群会自动恢复过期的证书。一个例外是,您必须手动批准待处理的
node-bootstrapper
证书签名请求(CSR)来恢复 kubelet 证书。如需更多信息,请参阅从过期的 control plane 证书 中恢复的文档。 - 建议您在 Ignition 配置文件生成后的 12 小时内使用它们,因为 24 小时的证书会在集群安装后的 16 小时到 22 小时间进行轮转。通过在 12 小时内使用 Ignition 配置文件,您可以避免在安装过程中因为执行了证书更新而导致安装失败的问题。
确认 Kubernetes API 服务器正在与 pod 通信。
要查看所有 pod 的列表,请使用以下命令:
$ oc get pods --all-namespaces
输出示例
NAMESPACE NAME READY STATUS RESTARTS AGE openshift-apiserver-operator openshift-apiserver-operator-85cb746d55-zqhs8 1/1 Running 1 9m openshift-apiserver apiserver-67b9g 1/1 Running 0 3m openshift-apiserver apiserver-ljcmx 1/1 Running 0 1m openshift-apiserver apiserver-z25h4 1/1 Running 0 2m openshift-authentication-operator authentication-operator-69d5d8bf84-vh2n8 1/1 Running 0 5m ...
使用以下命令,查看上一命令的输出中所列 pod 的日志:
$ oc logs <pod_name> -n <namespace> 1
- 1
- 指定 pod 名称和命名空间,如上一命令的输出中所示。
如果 pod 日志显示,Kubernetes API 服务器可以与集群机器通信。
对于使用光纤通道协议(FCP)的安装,还需要额外的步骤才能启用多路径。不要在安装过程中启用多路径。
如需更多信息,请参阅 安装后机器配置任务 文档中的"使用 RHCOS 上使用内核参数启用多路径"。
- 在 Cluster registration 页面注册 您的集群。
您可以按照将计算机器 添加到 vSphere 的内容在集群安装后添加额外的计算机器。
3.5.17. 为 control plane 节点配置 vSphere DRS 反关联性规则
可将 vSphere 分布式资源调度程序 DRS) 关联性规则配置为支持 OpenShift Container Platform Control Plane 节点的高可用性。反关联性规则确保 OpenShift Container Platform Control Plane 节点的 vSphere 虚拟机没有调度到同一 vSphere 主机。
- 以下信息只适用于计算 DRS,不适用于存储 DRS。
-
govc
命令是 VMware 提供的开源命令;它不是红帽提供的。红帽不支持govc
命令。 -
有关下载和安装
govc
的说明,请参阅 VMware 文档网站。
运行以下命令来创建反关联性规则:
示例命令
$ govc cluster.rule.create \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyCluster \ -enable \ -anti-affinity master-0 master-1 master-2
创建规则后,您的 control plane 节点由 vSphere 自动迁移,以便它们不会在同一主机上运行。当 vSphere 协调新规则时,这可能需要一些时间。以下流程中会显示成功的命令完成。
迁移会自动进行,并可能导致 OpenShift API 中断或延迟,直到迁移完成为止。
当 control plane 虚拟机名称发生变化或迁移到新的 vSphere 集群时,需要手动更新 vSphere DRS 反关联性规则。
流程
运行以下命令来删除任何现有的 DRS 反关联性规则:
$ govc cluster.rule.remove \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyCluster
输出示例
[13-10-22 09:33:24] Reconfigure /MyDatacenter/host/MyCluster...OK
运行以下命令,使用更新的名称再次创建规则:
$ govc cluster.rule.create \ -name openshift4-control-plane-group \ -dc MyDatacenter -cluster MyOtherCluster \ -enable \ -anti-affinity master-0 master-1 master-2
3.5.18. OpenShift Container Platform 的 Telemetry 访问
在 OpenShift Container Platform 4.14 中,默认运行的 Telemetry 服务提供有关集群健康状况和成功更新的指标,需要访问互联网。如果您的集群连接到互联网,Telemetry 会自动运行,而且集群会注册到 OpenShift Cluster Manager。
确认 OpenShift Cluster Manager 清单正确后,可以由 Telemetry 自动维护,也可以使用 OpenShift Cluster Manager 手动维护,使用订阅监控来跟踪帐户或多集群级别的 OpenShift Container Platform 订阅。
其他资源
- 有关 Telemetry 服务的更多信息,请参阅关于 远程健康监控
3.5.19. 后续步骤
- 自定义集群。
- 如果您用来安装集群的镜像 registry 具有可信任的 CA,请通过 配置额外的信任存储将其添加到集群中。
- 如果需要,您可以选择 不使用远程健康报告。
- 可选: 查看 vSphere 问题检测器 Operator 中的事件,以确定集群是否有权限或存储配置问题。
- 可选:如果您创建了加密的虚拟机,请创建一个加密的存储类。
第 4 章 使用 Assisted Installer 在 vSphere 上安装集群
您可以使用辅助安装程序在内部硬件或内部虚拟机中安装 OpenShift Container Platform。使用 Assisted Installer 安装 OpenShift Container Platform 支持 x86_64
、AArch
64、ppc64le
和 s390x
CPU 架构。
Assisted Installer 是一个在 Red Hat Hybrid Cloud Console 上提供的用户友好的安装解决方案。Assisted Installer 支持各种部署平台,专注于以下基础架构:
- 裸机
- Nutanix
- vSphere
4.1. 其他资源
第 5 章 使用基于代理的安装程序在 vSphere 上安装集群
基于代理的安装方法提供了以任何方式引导内部服务器的灵活性。它将辅助安装服务的使用与离线运行的功能相结合,包括在 air-gapped 环境中。
基于代理的安装是 OpenShift Container Platform 安装程序的子命令。它生成可引导 ISO 镜像,其中包含使用可用发行镜像部署 OpenShift Container Platform 集群所需的所有信息。
5.1. 其他资源
第 6 章 在 vSphere 上安装三节点集群
在 OpenShift Container Platform 版本 4.14 中,您可以在 VMware vSphere 上安装三节点集群。三节点集群包含三个 control plane 机器,它们也可以充当计算机器。这种类型的集群提供了一个较小的、效率更高的集群,供集群管理员和开发人员用于测试、开发和生产。
您可以使用安装程序置备或用户置备的基础架构安装三节点集群。
6.1. 配置三节点集群
在部署集群前,您可以通过将 install-config.yaml
文件中的 worker 节点数量设置为 0
来配置三节点集群。将 worker 节点数量设置为 0
可确保 control plane 机器可以调度。这允许调度应用程序工作负载从 control plane 节点运行。
因为应用程序工作负载从 control plane 节点运行,所以需要额外的订阅,因为 control plane 节点被视为计算节点。
先决条件
-
您有一个现有的
install-config.yaml
文件。
流程
将
install-config.yaml
文件中的计算副本数量设置为0
,如以下compute
小节中所示:三节点集群的
install-config.yaml
文件示例apiVersion: v1 baseDomain: example.com compute: - name: worker platform: {} replicas: 0 # ...
如果您使用用户置备的基础架构部署集群:
- 配置应用程序入口负载均衡器,将 HTTP 和 HTTPS 流量路由到 control plane 节点。在三节点集群中,Ingress Controller pod 在 control plane 节点上运行。如需更多信息,请参阅"用户置备的基础架构负载平衡要求"。
-
创建 Kubernetes 清单文件后,请确保在
cluster-scheduler-02-config.yml
文件中将spec.mastersSchedulable
参数设置为true
。您可以在<installation_directory>/manifests
中找到此文件。如需更多信息,请参阅"使用用户置备的基础架构在 vSphere 上安装集群"中的"创建 Kubernetes 清单和 Ignition 配置文件"。 - 不要创建额外的 worker 节点。
三节点集群的 cluster-scheduler-02-config.yml
文件示例
apiVersion: config.openshift.io/v1 kind: Scheduler metadata: creationTimestamp: null name: cluster spec: mastersSchedulable: true policy: name: "" status: {}
6.2. 后续步骤
第 7 章 在使用安装程序置备的基础架构的 vSphere 上卸载集群
您可以使用安装程序置备的基础架构删除您在 VMware vSphere 实例中部署的集群。
运行 openshift-install destroy cluster
命令时,卸载 OpenShift Container Platform 时,vSphere 卷不会被自动删除。集群管理员必须手动找到 vSphere 卷并删除它们。
7.1. 删除使用安装程序置备的基础架构的集群
您可以从云中删除使用安装程序置备的基础架构的集群。
卸载后,检查云供应商是否有未正确删除的资源,特别是在用户置备基础架构(UPI)集群中。可能存在安装程序未创建或安装程序无法访问的资源。
先决条件
- 有用于部署集群的安装程序副本。
- 有创建集群时安装程序生成的文件。
流程
在用来安装集群的计算机中包含安装程序的目录中,运行以下命令:
$ ./openshift-install destroy cluster \ --dir <installation_directory> --log-level info 1 2
注意您必须为集群指定包含集群定义文件的目录。安装程序需要此目录中的
metadata.json
文件来删除集群。-
可选:删除
<installation_directory>
目录和 OpenShift Container Platform 安装程序。
第 8 章 使用 vSphere 问题检测器 Operator
8.1. 关于 vSphere 问题检测器 Operator
vSphere 问题检测器 Operator 会检查在 vSphere 上部署的集群,以获取与存储相关的常见安装和错误配置问题。
Operator 在 openshift-cluster-storage-operator
命名空间中运行,并在 Cluster Storage Operator 检测到集群部署到 vSphere 时由 Cluster Storage Operator 启动。vSphere 问题检测器 Operator 与 vSphere vCenter 服务器通信,以确定集群中的虚拟机、默认数据存储以及 vSphere vCenter Server 配置的其他信息。Operator 使用 Cloud Credential Operator 中的凭证连接到 vSphere。
Operator 根据以下调度运行检查:
- 检查每小时运行一次。
- 如果检查失败,Operator 会以 1 分钟、2 分钟、4 分钟、8 分钟等间隔再次运行检查。Operator 间隔最多为 8 小时。
- 当所有检查都通过时,调度会返回到一小时的间隔。
Operator 在失败后会增加检查的频率,以便 Operator 可以在修复失败条件后快速报告成功。您可以手动运行 Operator 来获取即时故障排除信息。
8.2. 运行 vSphere 问题检测器 Operator 检查
您可以覆盖运行 vSphere 问题检测器 Operator 检查的调度,并立即运行检查。
vSphere 问题检测器 Operator 每小时自动运行检查。但是,当 Operator 启动时,它会立即运行检查。当 Cluster Storage Operator 启动并确定集群是否在 vSphere 上运行时,Operator 由 Cluster Storage Operator 启动。要立即运行检查,您可以将 vSphere 问题检测器 Operator 扩展至 0
,并返回到 1
,以便它重启 vSphere 问题检测器 Operator。
先决条件
-
使用具有
cluster-admin
角色的用户访问集群。
流程
将 Operator 扩展至
0
:$ oc scale deployment/vsphere-problem-detector-operator --replicas=0 \ -n openshift-cluster-storage-operator
验证
运行以下命令验证 pod 是否已重启:
$ oc -n openshift-cluster-storage-operator get pod -l name=vsphere-problem-detector-operator -w
输出示例
NAME READY STATUS RESTARTS AGE vsphere-problem-detector-operator-77486bd645-9ntpb 1/1 Running 0 11s
AGE
字段必须表示 pod 已重启。
8.3. 从 vSphere 问题检测器 Operator 中查看事件
在 vSphere 问题检测器 Operator 运行并执行配置检查后,它会创建可从命令行或 OpenShift Container Platform Web 控制台查看的事件。
流程
要使用命令行查看事件,请运行以下命令:
$ oc get event -n openshift-cluster-storage-operator \ --sort-by={.metadata.creationTimestamp}
输出示例
16m Normal Started pod/vsphere-problem-detector-operator-xxxxx Started container vsphere-problem-detector 16m Normal Created pod/vsphere-problem-detector-operator-xxxxx Created container vsphere-problem-detector 16m Normal LeaderElection configmap/vsphere-problem-detector-lock vsphere-problem-detector-operator-xxxxx became leader
-
要使用 OpenShift Container Platform Web 控制台查看事件,请导航到 Home → Events,然后从 Project 菜单中选择
openshift-cluster-storage-operator
。
8.4. 从 vSphere 问题检测器 Operator 查看日志
在 vSphere 问题检测器 Operator 运行并执行配置检查后,它会创建日志记录,这些记录可以从命令行或 OpenShift Container Platform Web 控制台查看。
流程
要使用命令行查看日志,请运行以下命令:
$ oc logs deployment/vsphere-problem-detector-operator \ -n openshift-cluster-storage-operator
输出示例
I0108 08:32:28.445696 1 operator.go:209] ClusterInfo passed I0108 08:32:28.451029 1 datastore.go:57] CheckStorageClasses checked 1 storage classes, 0 problems found I0108 08:32:28.451047 1 operator.go:209] CheckStorageClasses passed I0108 08:32:28.452160 1 operator.go:209] CheckDefaultDatastore passed I0108 08:32:28.480648 1 operator.go:271] CheckNodeDiskUUID:<host_name> passed I0108 08:32:28.480685 1 operator.go:271] CheckNodeProviderID:<host_name> passed
要使用 OpenShift Container Platform Web 控制台查看 Operator 日志,请执行以下步骤:
- 导航到 Workloads → Pods。
-
从 Projects 菜单中选择
openshift-cluster-storage-operator
。 -
点
vsphere-problem-detector-operator
pod 的链接。 - 点击 Pod 详情 页面上的 Logs 选项卡查看日志。
8.5. 由 vSphere 问题检测器 Operator 运行的配置检查
下表标识了配置检查是否运行 vSphere 问题检测程序 Operator。有些检查会验证集群的配置。其他检查验证集群中每个节点的配置。
名称 | 描述 |
---|---|
| 验证 vSphere 配置中的默认数据存储名称是否足够短,可用于动态置备。 如果这个检查失败,您可以预期如下情况:
如果这个检查失败,请重新配置 vSphere,其默认数据存储的名称较短。 |
|
验证列出默认数据存储中卷的权限。创建卷时需要此权限。Operator 通过列出 如果这个检查失败,请查看 OpenShift Container Platform 安装过程中指定的 vCenter 帐户所需的权限。 |
| 验证以下内容:
|
| 验证列出最新任务和数据存储的权限。 |
| 从 vSphere vCenter 收集集群版本和 UUID。 |
名称 | 描述 |
---|---|
|
验证所有 vSphere 虚拟机是否都配置了 如果这个检查失败,请参阅 如何在 vSphere Red Hat Knowledgebase 解决方案中检查虚拟机的 'disk.EnableUUID' 参数。 |
|
验证所有节点是否都配置了来自 vSphere vCenter 的 $ oc get nodes -o custom-columns=NAME:.metadata.name,PROVIDER_ID:.spec.providerID,UUID:.status.nodeInfo.systemUUID 如果这个检查失败,请参阅 vSphere 产品文档来获取集群中每个节点的供应商 ID 的信息。 |
| 报告运行节点的 ESXi 主机的版本。 |
| 报告节点的虚拟机硬件版本。 |
8.6. 关于存储类配置检查
使用 vSphere 存储的持久性卷的名称与数据存储名称和集群 ID 相关。
创建持久性卷时,systemd
为持久性卷创建一个挂载单元。systemd
进程有 255 个字符限制,用于持久性卷的 VDMK 文件的完全限定路径长度。
完全限定路径基于 systemd
和 vSphere 的命名约定。命名惯例使用以下模式:
/var/lib/kubelet/plugins/kubernetes.io/vsphere-volume/mounts/[<datastore>] 00000000-0000-0000-0000-000000000000/<cluster_id>-dynamic-pvc-00000000-0000-0000-0000-000000000000.vmdk
- 命名惯例需要 255 个字符限制的 205 个字符。
- 数据存储名称和集群 ID 由部署决定。
-
数据存储名称和集群 ID 替换为上述模式。然后,路径通过
systemd-escape
命令处理,以转义特殊字符。例如,连字符在转义后使用四个字符。转义的值为\x2d
。 -
在使用
systemd-escape
处理后,确保systemd
可以访问 VDMK 文件的完全限定路径后,路径的长度必须小于 255 个字符。
8.7. vSphere 问题检测器 Operator 的指标
vSphere 问题检测器 Operator 会公开以下指标,供 OpenShift Container Platform 监控堆栈使用。
名称 | 描述 |
---|---|
| 检查 vSphere 问题检测程序 Operator 是否执行的集群级别的累积数量。这一计数包括成功和失败。 |
|
检查 vSphere 问题检测程序 Operator 是否执行失败的集群级别数量。例如, |
| 具有特定版本的 ESXi 主机数量。请注意,如果主机运行多个节点,则该主机仅计算一次。 |
| 检查 vSphere 问题检测程序 Operator 是否执行的节点级别的累积数量。这一计数包括成功和失败。 |
|
是否执行 vSphere 问题检测程序 Operator 的失败节点级别检查数量。例如, |
| 具有特定硬件版本的 vSphere 节点数。 |
| 有关 vSphere vCenter 服务器的信息。 |
8.8. 其他资源
第 9 章 vSphere 的安装配置参数
在 vSphere 上部署 OpenShift Container Platform 集群前,您可以提供参数来自定义集群和托管它的平台。在创建 install-config.yaml
文件时,您可以通过命令行为所需参数提供值。然后,您可以修改 install-config.yaml
文件以进一步自定义集群。
9.1. vSphere 可用的安装配置参数
下表指定可设置为安装过程的一部分所需的、可选和特定于 vSphere 的安装配置参数。
安装后,您无法在 install-config.yaml
文件中修改这些参数。
9.1.1. 所需的配置参数
下表描述了所需的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
apiVersion: |
| 字符串 |
baseDomain: |
云供应商的基域。基域用于创建到 OpenShift Container Platform 集群组件的路由。集群的完整 DNS 名称是 |
完全限定域名或子域名,如 |
metadata: |
Kubernetes 资源 | 对象 |
metadata: name: |
集群的名称。集群的 DNS 记录是 |
小写字母和连字符 ( |
platform: |
要执行安装的具体平台配置: | 对象 |
pullSecret: | 从 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" } } } |
9.1.2. 网络配置参数
您可以根据现有网络基础架构的要求自定义安装配置。例如,您可以扩展集群网络的 IP 地址块,或者提供不同于默认值的不同 IP 地址块。
- 如果使用 Red Hat OpenShift Networking OVN-Kubernetes 网络插件,则支持 IPv4 和 IPv6 地址系列。
- 如果您使用 Red Hat OpenShift Networking OpenShift SDN 网络插件,则只支持 IPv4 地址系列。
在 VMware vSphere 上,双栈网络可以指定 IPv4 或 IPv6 作为主要地址系列。
如果将集群配置为使用两个 IP 地址系列,请查看以下要求:
- 两个 IP 系列都必须将相同的网络接口用于默认网关。
- 两个 IP 系列都必须具有默认网关。
- 您必须为所有网络配置参数指定 IPv4 和 IPv6 地址。例如,以下配置 IPv4 地址列在 IPv6 地址的前面。
networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 - cidr: fd00:10:128::/56 hostPrefix: 64 serviceNetwork: - 172.30.0.0/16 - fd00:172:16::/112
Red Hat OpenShift Data Foundation 灾难恢复解决方案不支持 Globalnet。对于区域灾难恢复场景,请确保为每个集群中的集群和服务网络使用非重叠的专用 IP 地址。
参数 | 描述 | 值 |
---|---|---|
networking: | 集群网络的配置。 | 对象 注意
您无法在安装后修改 |
networking: networkType: | 要安装的 Red Hat OpenShift Networking 网络插件。 |
|
networking: clusterNetwork: | pod 的 IP 地址块。
默认值为 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: clusterNetwork: - cidr: 10.128.0.0/14 hostPrefix: 23 |
networking: clusterNetwork: cidr: |
使用 IPv4 网络。 |
无类别域间路由(CIDR)表示法中的 IP 地址块。IPv4 块的前缀长度介于 |
networking: clusterNetwork: hostPrefix: |
分配给每个节点的子网前缀长度。例如,如果 | 子网前缀。
默认值为 |
networking: serviceNetwork: |
服务的 IP 地址块。默认值为 OpenShift SDN 和 OVN-Kubernetes 网络插件只支持服务网络的一个 IP 地址块。 | CIDR 格式具有 IP 地址块的数组。例如: networking: serviceNetwork: - 172.30.0.0/16 |
networking: machineNetwork: | 机器的 IP 地址块。 如果您指定了多个 IP 地址块,块不得重叠。 | 对象数组。例如: networking: machineNetwork: - cidr: 10.0.0.0/16 |
networking: machineNetwork: cidr: |
使用 | CIDR 表示法中的 IP 网络块。
例如: 注意
将 |
9.1.3. 可选的配置参数
下表描述了可选的安装配置参数:
参数 | 描述 | 值 |
---|---|---|
additionalTrustBundle: | 添加到节点可信证书存储中的 PEM 编码 X.509 证书捆绑包。配置了代理时,也可以使用此信任捆绑包。 | 字符串 |
capabilities: | 控制可选核心组件的安装。您可以通过禁用可选组件来减少 OpenShift Container Platform 集群的空间。如需更多信息,请参阅安装中的"集群功能"页面。 | 字符串数组 |
capabilities: baselineCapabilitySet: |
选择要启用的一组初始可选功能。有效值为 | 字符串 |
capabilities: additionalEnabledCapabilities: |
将可选功能集合扩展到您在 | 字符串数组 |
cpuPartitioningMode: | 启用工作负载分区,它会隔离 OpenShift Container Platform 服务、集群管理工作负载和基础架构 pod,以便在保留的一组 CPU 上运行。工作负载分区只能在安装过程中启用,且在安装后无法禁用。虽然此字段启用工作负载分区,但它不会将工作负载配置为使用特定的 CPU。如需更多信息,请参阅 Scalability and Performance 部分中的 Workload partitioning 页面。 |
|
compute: | 组成计算节点的机器的配置。 |
|
compute: architecture: |
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
compute: name: |
使用 |
|
compute: platform: |
使用 |
|
compute: replicas: | 要置备的计算机器数量,也称为 worker 机器。 |
大于或等于 |
featureSet: | 为功能集启用集群。功能集是 OpenShift Container Platform 功能的集合,默认情况下不启用。有关在安装过程中启用功能集的更多信息,请参阅"使用功能门启用功能"。 |
字符串.要启用的功能集的名称,如 |
controlPlane: | 组成 control plane 的机器的配置。 |
|
controlPlane: architecture: |
决定池中机器的指令集合架构。目前,不支持具有不同架构的集群。所有池都必须指定相同的架构。有效值为 | 字符串 |
controlPlane: name: |
使用 |
|
controlPlane: platform: |
使用 |
|
controlPlane: replicas: | 要置备的 control plane 机器数量。 |
部署单节点 OpenShift 时支持的值为 |
credentialsMode: | Cloud Credential Operator(CCO)模式。如果没有指定模式,CCO 会动态尝试决定提供的凭证的功能,在支持多个模式的平台上首选 mint 模式。 |
|
fips: |
启用或禁用 FIPS 模式。默认值为 重要 要为集群启用 FIPS 模式,您必须从配置为以 FIPS 模式操作的 Red Hat Enterprise Linux (RHEL) 计算机运行安装程序。有关在 RHEL 中配置 FIPS 模式的更多信息,请参阅在 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。 注意 如果使用 Azure File 存储,则无法启用 FIPS 模式。 |
|
imageContentSources: | release-image 内容的源和存储库。 |
对象数组。包括一个 |
imageContentSources: source: |
使用 | 字符串 |
imageContentSources: mirrors: | 指定可能还包含同一镜像的一个或多个仓库。 | 字符串数组 |
publish: | 如何发布或公开集群的面向用户的端点,如 Kubernetes API、OpenShift 路由。 |
在非云平台上不支持将此字段设置为 重要
如果将字段的值设为 |
sshKey: | 用于验证对集群机器的访问的 SSH 密钥。 注意
对于您要在其上执行安装调试或灾难恢复的生产环境 OpenShift Container Platform 集群,请指定 |
例如, |
- 不是所有 CCO 模式都支持所有云供应商。有关 CCO 模式的更多信息,请参阅身份验证和授权内容中的"管理云供应商凭证"条目。
9.1.4. 其他 VMware vSphere 配置参数
下表描述了其他 VMware vSphere 配置参数:
参数 | 描述 | 值 |
---|---|---|
platform: vsphere: | 描述托管集群的云平台中的帐户。您可以使用参数来自定义平台。如果您为机器池中的 compute 和 control plane 机器提供额外的配置设置,则不需要该参数。您只能为 OpenShift Container Platform 集群指定一个 vCenter 服务器。 | vSphere 配置对象的字典 |
platform: vsphere: apiVIPs: | 为 control plane API 访问配置的虚拟 IP (VIP) 地址。 注意 这个参数只适用于安装程序置备的基础架构,而无需配置外部负载均衡器。您不能在用户置备的基础架构中指定此参数。 | 多个 IP 地址 |
platform: vsphere: diskType: | 可选:磁盘置备方法。如果没有设置,则默认值为 vSphere 默认存储策略。 |
有效值为 |
platform: vsphere: failureDomains: |
建立地区和区域之间的关系。您可以使用 vCenter 对象(如 | 故障域配置对象的数组。 |
platform: vsphere: failureDomains: name: | 故障域的名称。 | 字符串 |
platform: vsphere: failureDomains: region: |
如果为集群定义多个故障域,则必须将标签附加到每个 vCenter 数据中心。要定义区域,请使用 | 字符串 |
platform: vsphere: failureDomains: server: |
指定 VMware vCenter 服务器的完全限定主机名或 IP 地址,以便客户端可以访问故障域资源。您必须将 | 字符串 |
platform: vsphere: failureDomains: zone: |
如果为集群定义多个故障域,则必须为每个 vCenter 集群附加标签。要定义一个区,请使用 | 字符串 |
platform: vsphere: failureDomains: topology: computeCluster: | vSphere 计算集群的路径。 | 字符串 |
platform: vsphere: failureDomains: topology: datacenter: |
列出并定义 OpenShift Container Platform 虚拟机 (VM) 操作的数据中心。数据中心列表必须与 | 字符串 |
platform: vsphere: failureDomains: topology: datastore: |
指定为故障域存储虚拟机文件的 vSphere 数据存储的路径。您必须将 | 字符串 |
platform: vsphere: failureDomains: topology: folder: |
可选:用户创建虚拟机的现有文件夹的绝对路径,例如 | 字符串 |
platform: vsphere: failureDomains: topology: networks: | 列出 vCenter 实例中包含您配置的虚拟 IP 地址和 DNS 记录的任何网络。 | 字符串 |
platform: vsphere: failureDomains: topology: resourcePool: |
可选:安装程序创建虚拟机的现有资源池的绝对路径,例如 | 字符串 |
platform: vsphere: failureDomains: topology template: | 指定预先存在的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像模板或虚拟机的绝对路径。安装程序可以使用镜像模板或虚拟机在 vSphere 主机上快速安装 RHCOS。考虑使用此参数作为在 vSphere 主机上上传 RHCOS 镜像的替代选择。此参数仅适用于安装程序置备的基础架构。 | 字符串 |
platform: vsphere: ingressVIPs: | 为集群 Ingress 配置的虚拟 IP (VIP) 地址。 注意 这个参数只适用于安装程序置备的基础架构,而无需配置外部负载均衡器。您不能在用户置备的基础架构中指定此参数。 | 多个 IP 地址 |
platform: vsphere: vcenters: | 配置连接详情,以便服务可以与 vCenter 服务器通信。目前,只支持单个 vCenter 服务器。 | vCenter 配置对象的数组。 |
platform: vsphere: vcenters: datacenters: |
列出并定义 OpenShift Container Platform 虚拟机 (VM) 操作的数据中心。数据中心列表必须与 | 字符串 |
platform: vsphere: vcenters: password: | 与 vSphere 用户关联的密码。 | 字符串 |
platform: vsphere: vcenters: port: | 用于与 vCenter 服务器通信的端口号。 | 整数 |
platform: vsphere: vcenters: server: | vCenter 服务器的完全限定主机名(FQHN)或 IP 地址。 | 字符串 |
platform: vsphere: vcenters: user: | 与 vSphere 用户关联的用户名。 | 字符串 |
9.1.5. 弃用的 VMware vSphere 配置参数
在 OpenShift Container Platform 4.13 中,以下 vSphere 配置参数已弃用。您可以继续使用这些参数,但安装程序不会在 install-config.yaml
文件中自动指定这些参数。
下表列出了每个已弃用的 vSphere 配置参数:
参数 | 描述 | 值 |
---|---|---|
platform: vsphere: apiVIP: | 为 control plane API 访问配置的虚拟 IP(VIP)地址。 注意
在 OpenShift Container Platform 4.12 及更新的版本中, |
IP 地址,如 |
platform: vsphere: cluster: | 安装 OpenShift Container Platform 集群的 vCenter 集群。 | 字符串 |
platform: vsphere: datacenter: | 定义 OpenShift Container Platform 虚拟机 (VM) 操作的数据中心。 | 字符串 |
platform: vsphere: defaultDatastore: | 用于调配卷的默认数据存储名称。 | 字符串 |
platform: vsphere: folder: | 可选:安装程序创建虚拟机的现有文件夹的绝对路径。如果没有提供这个值,安装程序会创建一个文件夹,它的名称为 datacenter 虚拟机文件夹中的基础架构 ID。 |
字符串,如 |
platform: vsphere: ingressVIP: | 为集群 Ingress 配置的虚拟 IP (VIP) 地址。 注意
在 OpenShift Container Platform 4.12 及更新的版本中, |
IP 地址,如 |
platform: vsphere: network: | 包含您配置的虚拟 IP 地址和 DNS 记录的 vCenter 实例中的网络。 | 字符串 |
platform: vsphere: password: | vCenter 用户名的密码。 | 字符串 |
platform: vsphere: resourcePool: |
可选:安装程序创建虚拟机的现有资源池的绝对路径。如果没有指定值,安装程序会在 |
字符串,例如 |
platform: vsphere: username: | 用于连接 vCenter 实例的用户名。此用户必须至少具有 vSphere 中 静态或动态持久性卷置备 所需的角色和权限。 | 字符串 |
platform: vsphere: vCenter: | vCenter 服务器的完全限定主机名或 IP 地址。 | 字符串 |
9.1.6. 可选的 VMware vSphere 机器池配置参数
下表描述了可选的 VMware vSphere 机器池配置参数:
参数 | 描述 | 值 |
---|---|---|
platform: vsphere: clusterOSImage: | 安装程序从中下载 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像的位置。在为此参数设置路径值前,请确保 OpenShift Container Platform 发行版本中的默认 RHCOS 引导镜像与 RHCOS 镜像模板或虚拟机版本匹配;否则,集群安装可能会失败。 |
HTTP 或 HTTPS URL,可选使用 SHA-256 校验和。例如: |
platform: vsphere: osDisk: diskSizeGB: | 以 GB 为单位的磁盘大小。 | 整数 |
platform: vsphere: cpus: |
用于分配虚拟机的虚拟处理器内核总数。 | 整数 |
platform: vsphere: coresPerSocket: |
虚拟机中每个插槽的内核数。虚拟机上的虚拟套接字数量为 platform | 整数 |
platform: vsphere: memoryMB: | 以 MB 为单位的虚拟机内存大小。 | 整数 |
第 10 章 vSphere 上集群的多个区域和区域配置
作为管理员,您可以为在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群指定多个区域和区域。此配置降低了硬件故障或网络中断的风险,从而导致集群失败。
故障域配置列出了创建拓扑的参数。以下列表指出其中一些参数:
-
computeCluster
-
datacenter
-
datastore
-
networks
-
resourcePool
为 OpenShift Container Platform 集群定义了多个区域和区域后,您可以创建或将节点迁移到另一个故障域。
如果要将预先存在的 OpenShift Container Platform 集群计算节点迁移到故障域,您必须为计算节点定义一个新的计算机器集。此新机器集可以根据故障域的拓扑扩展计算节点,并缩减预先存在的计算节点。
云供应商将 topology.kubernetes.io/zone
和 topology.kubernetes.io/region
标签添加到机器集资源置备的任何计算节点。
如需更多信息,请参阅创建计算机器集。
10.1. 在 vSphere 上为集群指定多个区域和区域
您可以配置 infrastructure.config.openshift.io
配置资源,为在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群指定多个区域和区域。
云控制器管理器和 vSphere Container Storage Interface (CSI) Operator 驱动程序的拓扑感知功能需要有关托管 OpenShift Container Platform 集群的 vSphere 拓扑的信息。此拓扑信息存在于 infrastructure.config.openshift.io
配置资源中。
在为集群指定区域和区域前,您必须确保所有数据中心和计算集群都包含标签,以便云供应商可以向节点添加标签。例如,如果 datacenter-1
代表 region-a
,compute-cluster-1
代表 zone-1
,则云供应商会将值为 region-a
的 openshift-region
目录标签添加到 datacenter-1
。另外,云供应商将值为 zone-1
的 openshift-zone
目录标签添加到 compute-cluster-1
。
您可以将具有 vMotion 功能的 control plane 节点迁移到故障域。将这些节点添加到故障域后,云供应商会为这些节点添加 topology.kubernetes.io/zone
和 topology.kubernetes.io/region
标签。
先决条件
-
您在 vCenter 服务器上创建了
openshift-region
和openshift-zone
标签类别。 - 您可以确保每个数据中心和计算集群都包含代表相关区域或区域的名称的标签,或两者。
- 可选:如果您为安装程序定义了 API 和 Ingress 静态 IP 地址,您必须确保所有区域和区共享一个通用的第 2 层网络。此配置可确保 API 和 Ingress 虚拟 IP (VIP) 地址可以与集群交互。
如果您在创建节点或迁移节点前没有向所有数据中心和计算机器提供标签,则云供应商无法将 topology.kubernetes.io/zone
和 topology.kubernetes.io/region
标签添加到节点。这意味着服务无法将流量路由到节点。
流程
运行以下命令,编辑集群的
infrastructure.config.openshift.io
自定义资源定义(CRD),以指定资源的failureDomains
部分中的多个区域和区域:$ oc edit infrastructures.config.openshift.io cluster
名为
cluster
的实例的infrastructure.config.openshift.io
CRD 示例,其配置中定义了多个区域和区域spec: cloudConfig: key: config name: cloud-provider-config platformSpec: type: vSphere vsphere: vcenters: - datacenters: - <region_a_datacenter> - <region_b_datacenter> port: 443 server: <your_vcenter_server> failureDomains: - name: <failure_domain_1> region: <region_a> zone: <zone_a> server: <your_vcenter_server> topology: datacenter: <region_a_dc> computeCluster: "</region_a_dc/host/zone_a_cluster>" resourcePool: "</region_a_dc/host/zone_a_cluster/Resources/resource_pool>" datastore: "</region_a_dc/datastore/datastore_a>" networks: - port-group - name: <failure_domain_2> region: <region_a> zone: <zone_b> server: <your_vcenter_server> topology: computeCluster: </region_a_dc/host/zone_b_cluster> datacenter: <region_a_dc> datastore: </region_a_dc/datastore/datastore_a> networks: - port-group - name: <failure_domain_3> region: <region_b> zone: <zone_a> server: <your_vcenter_server> topology: computeCluster: </region_b_dc/host/zone_a_cluster> datacenter: <region_b_dc> datastore: </region_b_dc/datastore/datastore_b> networks: - port-group nodeNetworking: external: {} internal: {}
重要创建故障域并在 VMware vSphere 集群的 CRD 中定义后,不得修改或删除故障域。对此配置执行任何操作可能会影响 control plane 机器的可用性和容错。
- 保存资源文件以应用更改。
其他资源
10.2. 为集群启用多个第 2 层网络
您可以将集群配置为使用多个第 2 层网络配置,以便节点间的数据传输可以跨越多个网络。
先决条件
- 您在机器间配置了网络连接,以便集群组件可以相互通信。
流程
如果使用安装程序置备的基础架构安装集群,您必须确保所有 control plane 节点共享一个通用的第 2 层网络。另外,确保为 Ingress pod 调度配置的计算节点共享一个通用的第 2 层网络。
- 如果需要计算节点跨越多个第 2 层网络,您可以创建可托管 Ingress pod 的基础架构节点。
- 如果您需要在额外第 2 层网络间置备工作负载,您可以在 vSphere 上创建计算机器集,然后将这些工作负载移到目标第 2 层网络。
如果在您提供的基础架构上安装集群(定义为用户置备的基础架构),请完成以下步骤以满足您的需要:
- 配置 API 负载均衡器和网络,以便负载均衡器可以访问 control plane 节点上的 API 和 Machine Config Server。
- 配置 Ingress 负载均衡器和网络,以便负载均衡器可以访问计算或基础架构节点上的 Ingress pod。
10.3. 集群范围的基础架构 CRD 的参数
您必须在集群范围的基础架构、infrastructure. config.openshift.io
、自定义资源定义(CRD) 中为特定参数设置值,以定义在 VMware vSphere 实例上运行的 OpenShift Container Platform 集群的多个区域和区域。
下表列出了为 OpenShift Container Platform 集群定义多个区域和区域的必要参数:
参数 | 描述 |
---|---|
| OpenShift Container Platform 集群的 vCenter 服务器。您只能为集群指定一个 vCenter。 |
| 与 OpenShift Container Platform 集群关联的 vCenter 数据中心。 |
| vCenter 服务器的 TCP 端口。 |
| vCenter 服务器的完全限定域名 (FQDN)。 |
| 故障域列表。 |
| 故障域的名称。 |
|
分配给故障域拓扑的 |
|
分配给故障域的拓扑的 |
| 与故障域关联的 vCenter reources。 |
| 与故障域关联的数据中心。 |
| 与故障域关联的计算机器的完整路径。 |
| 与故障域关联的资源池的完整路径。 |
| 与故障域关联的数据存储的完整路径。 |
| 与故障域关联的端口组列表。只能定义一个 portgroup。 |
第 11 章 在 vSphere 集群上启用加密
您可以在 vSphere 上安装 OpenShift Container Platform 4.14 后对虚拟机进行加密,方法是一次排空和关闭节点。在每个虚拟机关闭时,您可以在 vCenter web 界面中启用加密。
11.1. 加密虚拟机
您可以使用以下过程对虚拟机进行加密。您可以排空虚拟机,关闭并使用 vCenter 接口加密它们。最后,您可以创建一个存储类以使用加密存储。
先决条件
您已在 vSphere 中配置了标准密钥供应商。如需更多信息,请参阅在 vCenter 服务器中添加 KMS。
重要不支持 vCenter 中的原生密钥供应商。如需更多信息,请参阅 vSphere 原生密钥提供程序概述。
- 您已在托管集群的所有 ESXi 主机上启用了主机加密模式。如需更多信息,请参阅启用主机加密模式。
- 您有一个启用了所有加密权限的 vSphere 帐户。如需更多信息,请参阅 Cryptographic Operations Privileges。
流程
- 排空和封锁其中一个节点。有关节点管理的详细信息,请参阅"使用节点"。
- 在 vCenter 界面中关闭与该节点关联的虚拟机。
- 在 vCenter 界面中右键单击虚拟机,然后选择 VM Policies → Edit VM Storage Policies。
- 选择加密的存储策略并选择 OK。
- 在 vCenter 界面中启动加密的虚拟机。
- 对您要加密的所有节点重复步骤 1-5。
- 配置使用加密存储策略的存储类。有关配置加密存储类的更多信息,请参阅"VMware vSphere CSI Driver Operator"。
11.2. 其他资源
第 12 章 安装后配置 vSphere 连接设置
在启用了平台集成功能的 vSphere 上安装 OpenShift Container Platform 集群后,您可能需要根据安装方法手动更新 vSphere 连接设置。
对于使用 Assisted Installer 的安装,您必须更新连接设置。这是因为 Assisted Installer 在安装过程中将默认连接设置作为占位符添加到 vSphere 连接配置向导中。
对于安装程序置备的基础架构安装,您应该在安装过程中输入有效的连接设置。您可以随时使用 vSphere 连接配置向导来验证或修改连接设置,但这不是完成安装的强制设置。
12.1. 配置 vSphere 连接设置
根据需要修改以下 vSphere 配置设置:
- vCenter 地址
- vCenter 集群
- vCenter 用户名
- vCenter 密码
- vCenter 地址
- vSphere 数据中心
- vSphere 数据存储
- 虚拟机文件夹
先决条件
- Assisted Installer 成功完成安装集群。
-
集群连接到
https://console.redhat.com
。
流程
- 在 Administrator 视角中,进入到 Home → Overview。
- 在 Status 下,点 vSphere connection 打开 vSphere 连接配置向导。
-
在 vCenter 字段中,输入 vSphere vCenter 服务器的网络地址。这可以是域名,也可以是 IP 地址。它会出现在 vSphere Web 客户端 URL 中,例如
https://[your_vCenter_address]/ui
。 在 vCenter cluster 字段中,输入安装 OpenShift Container Platform 的 vSphere vCenter 集群名称。
重要如果安装了 OpenShift Container Platform 4.13 或更高版本,则此步骤是必需的。
- 在 Username 字段中,输入 vSphere vCenter 用户名。
在 Password 字段中输入您的 vSphere vCenter 密码。
警告系统将用户名和密码存储在集群的
kube-system
命名空间中的vsphere-creds
secret 中。不正确的 vCenter 用户名或密码使集群节点不可调度。-
在 Datacenter 字段中,输入 vSphere 数据中心的名称,其中包含用于托管集群的虚拟机;例如,
SDDC-Datacenter
。 在 Default data store 字段中,输入存储持久数据卷的 vSphere 数据存储的路径和名称;例如:
/SDDC-Datacenter/datastore/datastorename
。警告在保存配置后,更新 vSphere 数据中心或默认数据存储会分离任何活跃的 vSphere
PersistentVolume
。-
在 Virtual Machine Folder 字段中,输入包含集群虚拟机的数据中心文件夹;例如,
/SDDC-Datacenter/vm/ci-ln-hjg4vg2-c61657-t2gzr
。要使 OpenShift Container Platform 安装成功,组成集群的所有虚拟机都必须位于单个数据中心文件夹中。 -
点 Save Configuration。这会更新
openshift-config
命名空间中的cloud-provider-config
ConfigMap 资源,并启动配置过程。 - 重新打开 vSphere 连接配置向导,再展开 Monitored operators 面板。检查 Operator 的状态是否为 Progressing 或 Healthy。
12.2. 验证配置
连接配置过程更新 Operator 状态和 control plane 节点。完成大约需要一小时才能完成。在配置过程中,节点将重新引导。以前绑定的 PersistentVolumeClaims
对象可能会断开连接。
先决条件
- 您已在 vSphere 连接配置向导中保存了配置设置。
流程
检查配置过程是否已成功完成:
- 在 OpenShift Container Platform Administrator 视角中,进入到 Home → Overview。
- 在 Status 下点 Operators。等待所有操作器状态从 Progressing 变为 All succeeded。Failed 状态表示配置失败。
- 在 Status 下,点 Control Plane。等待所有 Control Pane 组件的响应率返回到 100%。失败的 control plane 组件表示配置失败。
失败表示至少一个连接设置不正确。更改 vSphere 连接配置向导中的设置,然后再次保存配置。
通过执行以下步骤来检查您是否可以绑定
PersistentVolumeClaims
对象:使用以下 YAML 创建
StorageClass
对象:kind: StorageClass apiVersion: storage.k8s.io/v1 metadata: name: vsphere-sc provisioner: kubernetes.io/vsphere-volume parameters: datastore: YOURVCENTERDATASTORE diskformat: thin reclaimPolicy: Delete volumeBindingMode: Immediate
使用以下 YAML 创建
PersistentVolumeClaims
对象:kind: PersistentVolumeClaim apiVersion: v1 metadata: name: test-pvc namespace: openshift-config annotations: volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/vsphere-volume finalizers: - kubernetes.io/pvc-protection spec: accessModes: - ReadWriteOnce resources: requests: storage: 10Gi storageClassName: vsphere-sc volumeMode: Filesystem
如果您无法创建
PersistentVolumeClaims
对象,您可以在 OpenShift Container Platform Web 控制台的 Administrator 视角中进入 Storage → PersistentVolumeClaims 来进行故障排除。
有关创建存储对象的说明,请参阅动态置备。
Legal Notice
Copyright © 2024 Red Hat, Inc.
OpenShift documentation is licensed under the Apache License 2.0 (https://www.apache.org/licenses/LICENSE-2.0).
Modified versions must remove all Red Hat trademarks.
Portions adapted from https://github.com/kubernetes-incubator/service-catalog/ with modifications by Red Hat.
Red Hat, Red Hat Enterprise Linux, the Red Hat logo, the Shadowman logo, JBoss, OpenShift, Fedora, the Infinity logo, and RHCE are trademarks of Red Hat, Inc., registered in the United States and other countries.
Linux® is the registered trademark of Linus Torvalds in the United States and other countries.
Java® is a registered trademark of Oracle and/or its affiliates.
XFS® is a trademark of Silicon Graphics International Corp. or its subsidiaries in the United States and/or other countries.
MySQL® is a registered trademark of MySQL AB in the United States, the European Union and other countries.
Node.js® is an official trademark of Joyent. Red Hat Software Collections is not formally related to or endorsed by the official Joyent Node.js open source or commercial project.
The OpenStack® Word Mark and OpenStack logo are either registered trademarks/service marks or trademarks/service marks of the OpenStack Foundation, in the United States and other countries and are used with the OpenStack Foundation’s permission. We are not affiliated with, endorsed or sponsored by the OpenStack Foundation, or the OpenStack community.
All other trademarks are the property of their respective owners.