us-east-1
在 OpenShift Container Platform 4.17 中,您可以通过创建安装发行版内容的内部镜像,在受限网络中的 VMware vSphere 基础架构上安装集群。
对多个 vCenter 的支持仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能可让您提前访问即将推出的产品功能,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参见 技术预览功能支持范围。 |
您已完成 使用安装程序配置的基础架构准备安装集群 中的任务。
您已查看 VMware 平台许可证。Red Hat 对您的 VMware 许可证没有任何限制,但某些 VMware 基础架构组件需要许可证。
您已查看有关 OpenShift Container Platform 安装和更新 流程的详细信息。
您已阅读有关 选择集群安装方法并为用户准备集群 的文档。
您已 在镜像主机上创建注册表 并获取 OpenShift Container Platform 版本的 imageContentSources
数据。
由于安装介质位于镜像主机上,您可以使用该计算机完成所有安装步骤。 |
您已为集群配置 持久性存储。要部署私有镜像注册表,您的存储必须提供 ReadWriteMany 访问模式。
OpenShift Container Platform 安装程序需要访问 vCenter 和 ESXi 主机上的 443 端口。您已验证 443 端口可访问。
如果您使用防火墙,请确认已与管理员确认端口 443 可访问。控制平面节点必须能够通过端口 443 访问 vCenter 和 ESXi 主机,安装才能成功。
如果您使用防火墙并计划使用遥测服务,则您已配置防火墙以允许您的集群需要访问的站点。
如果您正在配置代理,请务必也检查此站点列表。 |
在 OpenShift Container Platform 4.17 中,您可以执行无需主动连接到互联网即可获取软件组件的安装。受限网络安装可以使用安装程序预配的基础架构或用户预配的基础架构完成,具体取决于您要安装集群的云平台。
如果您选择在云平台上执行受限网络安装,您仍然需要访问其云 API。某些云功能(例如 Amazon Web Service 的 Route 53 DNS 和 IAM 服务)需要互联网访问。根据您的网络,在裸机硬件、Nutanix 或 VMware vSphere 上安装可能需要较少的互联网访问。
要完成受限网络安装,您必须创建一个镜像 OpenShift 镜像注册表内容并包含安装介质的注册表。您可以在可以访问互联网和封闭网络的镜像主机上创建此注册表,或者使用满足您限制的其他方法。
在 OpenShift Container Platform 4.17 中,您需要访问互联网才能获取安装集群所需的镜像。
您必须具有互联网访问权限才能:
访问OpenShift 集群管理器以下载安装程序并执行订阅管理。如果集群具有互联网访问权限并且您没有禁用遥测,则该服务会自动授权您的集群。
访问Quay.io以获取安装集群所需的软件包。
获取执行集群更新所需的软件包。
下载 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像,以便在受限网络 VMware vSphere 环境中安装 OpenShift Container Platform。
获取 OpenShift Container Platform 安装程序。对于受限网络安装,该程序位于您的镜像注册表主机上。
登录 Red Hat 客户门户的产品下载页面。
在版本下,选择适用于 RHEL 8 的最新版本的 OpenShift Container Platform 4.17。
RHCOS 镜像可能不会随着每次 OpenShift Container Platform 版本的发布而更改。您必须下载版本号小于或等于您安装的 OpenShift Container Platform 版本的镜像。如果可用,请使用与您的 OpenShift Container Platform 版本匹配的镜像版本。 |
下载Red Hat Enterprise Linux CoreOS (RHCOS) - vSphere 镜像。
将您下载的镜像上传到从堡垒服务器可以访问的位置。
该镜像现在可用于受限安装。记下镜像名称或位置,以便在 OpenShift Container Platform 部署中使用。
您可以将 OpenShift Container Platform 集群部署到多个 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 位置。
区域:指定 vCenter 数据中心。您可以使用 openshift-region
标签类别中的标签来定义区域。
区域:指定 vCenter 群集。您可以使用 openshift-zone
标签类别中的标签来定义区域。
如果您计划在 |
您必须为每个 vCenter 数据中心创建一个 vCenter 标签,该标签代表一个区域。此外,您必须为在数据中心中运行的每个集群创建一个 vCenter 标签,该标签代表一个区域。创建标签后,您必须将每个标签附加到它们各自的数据中心和集群。
下表概述了在单个 VMware vCenter 中运行多个 vSphere 数据中心的配置中区域、区域和标签之间关系的示例。
数据中心(区域) | 集群(区域) | 标签 |
---|---|---|
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 |
您可以自定义在 VMware vSphere 上安装的 OpenShift Container Platform 集群。
您拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。对于受限网络安装,这些文件位于镜像主机上。
您拥有在镜像注册表创建期间生成的 imageContentSources
值。
您已获得镜像注册表证书的内容。
您已检索到 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像并将其上传到可访问的位置。
创建 install-config.yaml
文件。
切换到包含安装程序的目录并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> (1)
1 | 对于 <installation_directory> ,请指定用于存储安装程序创建文件的目录名称。 |
指定目录时:
验证该目录是否具有 execute
权限。此权限是安装目录下运行 Terraform 二进制文件的必要条件。
使用空目录。某些安装资源(例如 bootstrap X.509 证书)的有效期很短,因此您不能重复使用安装目录。如果您想重用其他集群安装中的单个文件,可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从早期 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。
在提示符下,提供云的配置详细信息。
可选:选择一个 SSH 密钥来访问您的集群机器。
对于要在其上执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的 |
选择 **vsphere** 作为目标平台。
指定您的 vCenter 实例的名称。
指定具有创建集群所需权限的 vCenter 帐户的用户名和密码。
安装程序将连接到您的 vCenter 实例。
选择要连接到的 vCenter 实例中的数据中心。
创建安装配置文件后,您可以修改该文件以创建多 vSphere 数据中心环境。这意味着您可以将 OpenShift Container Platform 集群部署到多个 vSphere 数据中心。有关创建此环境的更多信息,请参阅名为“VMware vSphere 区域和区域启用”的部分。 |
选择要使用的默认 vCenter 数据存储。
您可以指定数据存储集群中任何现有数据存储的路径。默认情况下,使用 Storage vMotion 的 Storage Distributed Resource Scheduler (SDRS) 会自动为数据存储集群启用。Red Hat 不支持 Storage vMotion,因此您必须禁用 Storage DRS 以避免 OpenShift Container Platform 集群的数据丢失问题。 您不能指定多个数据存储路径。如果您必须在多个数据存储中指定虚拟机,请使用 |
选择要在其中安装 OpenShift Container Platform 集群的 vCenter 集群。安装程序使用 vSphere 集群的根资源池作为默认资源池。
选择 vCenter 实例中包含您已配置的虚拟 IP 地址和 DNS 记录的网络。
输入您为控制平面 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
值以包含注册表的身份验证信息。
pullSecret: '{"auths":{"<mirror_host_name>:5000": {"auth": "<credentials>","email": "[email protected]"}}}'
对于 <mirror_host_name>
,请指定您在镜像注册表证书中指定的注册表域名;对于 <credentials>
,请指定镜像注册表的 base64 编码用户名和密码。
添加 additionalTrustBundle
参数和值。
additionalTrustBundle: |
-----BEGIN CERTIFICATE-----
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
-----END CERTIFICATE-----
该值必须是您用于镜像注册表的证书文件的内容。证书文件可以是现有的受信任证书颁发机构,也可以是您为镜像注册表生成的自签名证书。
添加镜像内容资源,类似于以下 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
对于这些值,请使用您在镜像注册表创建期间记录的 imageContentSources
。
可选:将发布策略设置为 Internal
publish: Internal
通过设置此选项,您可以创建一个内部 Ingress Controller 和一个私有负载均衡器。
对 install-config.yaml
文件进行任何其他所需的修改。
有关参数的更多信息,请参阅“安装配置参数”。
备份 install-config.yaml
文件,以便您可以使用它来安装多个集群。
|
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: (2)
architecture: amd64
name: <parent_node>
platform: {}
replicas: 3
metadata:
creationTimestamp: null
name: test (3)
platform:
vsphere: (4)
apiVIPs:
- 10.0.0.1
failureDomains: (5)
- name: <failure_domain_name>
region: <default_region_name>
server: <fully_qualified_domain_name>
topology:
computeCluster: "/<data_center>/host/<cluster>"
datacenter: <data_center>
datastore: "/<data_center>/datastore/<datastore>" (6)
networks:
- <VM_Network_name>
resourcePool: "/<data_center>/host/<cluster>/Resources/<resourcePool>" (7)
folder: "/<data_center_name>/vm/<folder_name>/<subfolder_name>"
tagIDs: (8)
- <tag_id> (9)
zone: <default_zone_name>
ingressVIPs:
- 10.0.0.2
vcenters:
- datacenters:
- <data_center>
password: <password>
port: 443
server: <fully_qualified_domain_name>
user: [email protected]
diskType: thin (10)
clusterOSImage: http://mirror.example.com/images/rhcos-47.83.202103221318-0-vmware.x86_64.ova (11)
fips: false
pullSecret: '{"auths":{"<local_registry>": {"auth": "<credentials>","email": "[email protected]"}}}' (12)
sshKey: 'ssh-ed25519 AAAA...'
additionalTrustBundle: | (13)
-----BEGIN CERTIFICATE-----
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
-----END CERTIFICATE-----
imageContentSources: (14)
- 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 | controlPlane 部分是一个单一映射,但 compute 部分是一系列映射。为了满足不同数据结构的要求,compute 部分的第一行必须以连字符 - 开头,而 controlPlane 部分的第一行则不能。只使用一个控制平面池。 |
||
3 | 您在 DNS 记录中指定的集群名称。 | ||
4 | 可选:为计算和控制平面机器的机器池参数提供其他配置。 | ||
5 | 建立区域和区域之间的关系。您可以使用 vCenter 对象(例如 datastore 对象)定义故障域。故障域定义 OpenShift Container Platform 集群节点的 vCenter 位置。 |
||
6 | 包含虚拟机文件、模板和 ISO 镜像的 vSphere 数据存储的路径。
|
||
7 | 可选:提供现有的资源池用于创建机器。如果您未指定值,安装程序将使用 vSphere 集群的根资源池。 | ||
8 | 可选:OpenShift Container Platform 创建的每个虚拟机 (VM) 都会分配一个集群特有的唯一标签。此标签使安装程序能够识别并删除集群停用时相关的虚拟机。您可以列出最多十个附加标签 ID,以附加到安装程序提供的虚拟机。 | ||
9 | 安装程序要关联的标签 ID。例如,urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL 。有关确定标签 ID 的更多信息,请参阅vSphere 标签和属性文档。 |
||
10 | vSphere 磁盘配置方法。 | ||
11 | 从堡垒服务器可访问的 Red Hat Enterprise Linux CoreOS (RHCOS) 镜像的位置。 | ||
12 | 对于<local_registry> ,请指定您的镜像注册表用于提供内容的注册表域名,以及可选的端口,例如 registry.example.com 或 registry.example.com:5000 。对于<credentials> ,请指定您的镜像注册表的 Base64 编码用户名和密码。 |
||
13 | 提供您用于镜像注册表的证书文件的内容。 | ||
14 | 提供镜像存储库命令输出中的 imageContentSources 部分。 |
在 OpenShift Container Platform 4.12 及更高版本中, |
生产环境可能会拒绝直接访问互联网,而是提供 HTTP 或 HTTPS 代理。您可以通过在 install-config.yaml
文件中配置代理设置来配置新的 OpenShift Container Platform 集群以使用代理。
您拥有现有的 install-config.yaml
文件。
您已查看集群需要访问的站点,并确定其中任何站点是否需要绕过代理。默认情况下,所有集群出口流量都会被代理,包括对托管云提供商 API 的调用。如有必要,您可以将站点添加到 Proxy
对象的 spec.noProxy
字段以绕过代理。
对于在 Amazon Web Services (AWS)、Google Cloud Platform (GCP)、Microsoft Azure 和 Red Hat OpenStack Platform (RHOSP) 上的安装, |
编辑您的 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 证书。然后,集群网络操作员会创建一个 trusted-ca-bundle 配置映射,将这些内容与 Red Hat Enterprise Linux CoreOS (RHCOS) 信任捆绑包合并,并且此配置映射在 Proxy 对象的 trustedCA 字段中引用。除非代理的身份证书由 RHCOS 信任捆绑包中的授权机构签名,否则需要 additionalTrustBundle 字段。 |
5 | 可选:确定 Proxy 对象的配置以在 trustedCA 字段中引用 user-ca-bundle 配置映射的策略。允许的值为 Proxyonly 和 Always 。使用 Proxyonly 仅在配置 http/https 代理时引用 user-ca-bundle 配置映射。使用 Always 始终引用 user-ca-bundle 配置映射。默认值为 Proxyonly 。 |
安装程序不支持代理 |
如果安装程序超时,请重新启动,然后使用安装程序的
|
保存文件并在安装 OpenShift Container Platform 时引用它。
安装程序创建一个名为 cluster
的集群范围代理,该代理使用提供的 install-config.yaml
文件中的代理设置。如果未提供代理设置,则仍会创建 cluster
Proxy
对象,但它将具有 nil spec
。
仅支持名为 |
您可以修改默认安装配置文件,以便您可以将 OpenShift Container Platform 集群部署到多个 vSphere 数据中心。
OpenShift Container Platform 上一个版本的默认 install-config.yaml
文件配置已弃用。您可以继续使用已弃用的默认配置,但 openshift-installer
将提示您一条警告消息,指示在配置文件中使用了已弃用的字段。
此示例使用 |
您拥有现有的 install-config.yaml
安装配置文件。
您必须为 OpenShift Container Platform 集群指定至少一个故障域,以便您可以为 VMware vCenter 服务器配置数据中心对象。如果您需要在不同的数据中心、集群、数据存储和其他组件中配置虚拟机节点,请考虑指定多个故障域。要启用区域和区域,您必须为 OpenShift Container Platform 集群定义多个故障域。 |
输入以下 govc
命令行工具命令以创建 openshift-region
和 openshift-zone
vCenter 标签类别:
如果您为 |
$ govc tags.category.create -d "OpenShift region" openshift-region
$ govc tags.category.create -d "OpenShift zone" openshift-zone
要为要在其中部署集群的每个区域 vSphere 数据中心创建区域标签,请在终端中输入以下命令:
$ 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> /<data_center_1>
通过输入以下命令,将区域标签附加到每个 vCenter 数据中心对象
$ govc tags.attach -c <zone_tag_category> <zone_tag_1> /<data_center_1>/host/vcs-mdcnc-workload-1
更改到包含安装程序的目录,并根据您选择的安装要求初始化集群部署。
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:
- <data_center_1_name>
- <data_center_2_name>
failureDomains:
- name: <machine_pool_zone_1>
region: <region_tag_1>
zone: <zone_tag_1>
server: <fully_qualified_domain_name>
topology:
datacenter: <data_center_1>
computeCluster: "/<data_center_1>/host/<cluster1>"
networks:
- <VM_Network1_name>
datastore: "/<data_center_1>/datastore/<datastore1>"
resourcePool: "/<data_center_1>/host/<cluster1>/Resources/<resourcePool1>"
folder: "/<data_center_1>/vm/<folder1>"
- name: <machine_pool_zone_2>
region: <region_tag_2>
zone: <zone_tag_2>
server: <fully_qualified_domain_name>
topology:
datacenter: <data_center_2>
computeCluster: "/<data_center_2>/host/<cluster2>"
networks:
- <VM_Network2_name>
datastore: "/<data_center_2>/datastore/<datastore2>"
resourcePool: "/<data_center_2>/host/<cluster2>/Resources/<resourcePool2>"
folder: "/<data_center_2>/vm/<folder2>"
---
您可以将 OpenShift Container Platform 集群配置为使用用户管理的负载均衡器来代替默认的负载均衡器。
配置用户管理的负载均衡器取决于您的供应商的负载均衡器。 本节中的信息和示例仅供指导之用。有关供应商负载均衡器的更多具体信息,请咨询供应商文档。 |
Red Hat 支持以下用户管理负载均衡器的服务
入口控制器
OpenShift API
OpenShift MachineConfig API
您可以选择是否要为用户管理的负载均衡器配置一项或所有这些服务。仅配置入口控制器服务是一种常见的配置选项。要更好地理解每项服务,请查看以下图表
支持以下用户管理负载均衡器的配置选项
使用节点选择器将入口控制器映射到特定的一组节点。必须为此集合中的每个节点分配静态 IP 地址,或者将每个节点配置为从动态主机配置协议 (DHCP) 接收相同的 IP 地址。基础架构节点通常会收到这种类型的配置。
将目标设置为子网上的所有 IP 地址。此配置可以减少维护开销,因为您可以在这些网络中创建和销毁节点而无需重新配置负载均衡器目标。如果您使用机器集在较小的网络(例如 /27
或 /28
)上部署入口 Pod,则可以简化负载均衡器目标。
您可以通过检查机器配置池的资源来列出网络中存在的所有 IP 地址。 |
在为 OpenShift Container Platform 集群配置用户管理的负载均衡器之前,请考虑以下信息
对于前端 IP 地址,您可以对前端 IP 地址、入口控制器的负载均衡器和 API 负载均衡器使用相同的 IP 地址。请检查供应商文档以了解此功能。
对于后端 IP 地址,请确保 OpenShift Container Platform 控制平面节点的 IP 地址在用户管理的负载均衡器的生命周期内不会更改。您可以通过完成以下一项操作来实现此目的
为每个控制平面节点分配静态 IP 地址。
配置每个节点每次节点请求 DHCP 租约时都从 DHCP 接收相同的 IP 地址。根据供应商的不同,DHCP 租约可能以 IP 预留或静态 DHCP 分配的形式存在。
手动在用户管理的负载均衡器中为入口控制器后端服务定义运行入口控制器的每个节点。例如,如果入口控制器移动到未定义的节点,则可能会发生连接中断。
您可以将 OpenShift Container Platform 集群配置为使用用户管理的负载均衡器来代替默认的负载均衡器。
在配置用户管理的负载均衡器之前,请确保您已阅读“用户管理的负载均衡器的服务”部分。 |
阅读以下适用于要为用户管理的负载均衡器配置的服务的先决条件。
在集群上运行的 MetalLB 充当用户管理的负载均衡器。 |
您已定义前端 IP 地址。
负载均衡器的前端 IP 地址上公开了 TCP 端口 6443 和 22623。请检查以下项目
端口 6443 提供对 OpenShift API 服务的访问。
端口 22623 可以向节点提供启动配置。
所有系统用户都可以从位于 OpenShift Container Platform 集群外部的位置访问前端 IP 地址和端口 6443。
只有 OpenShift Container Platform 节点才能访问前端 IP 地址和端口 22623。
负载均衡器后端可以在端口 6443 和 22623 上与 OpenShift Container Platform 控制平面节点通信。
您已定义前端 IP 地址。
负载均衡器的前端 IP 地址上公开了 TCP 端口 443 和 80。
所有系统用户都可以从位于 OpenShift Container Platform 集群外部的位置访问前端 IP 地址、端口 80 和端口 443。
OpenShift Container Platform 集群中运行的所有节点都可以访问前端 IP 地址、端口 80 和端口 443。
负载均衡器后端可以与在端口 80、443 和 1936 上运行入口控制器的 OpenShift Container Platform 节点通信。
您可以通过设置运行状况检查 URL 来配置大多数负载均衡器,这些 URL 用于确定服务可用还是不可用。OpenShift Container Platform 为 OpenShift API、机器配置 API 和入口控制器后端服务提供这些运行状况检查。
以下示例显示了前面列出的后端服务的运行状况检查规范
Path: HTTPS:6443/readyz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10
Path: HTTPS:22623/healthz
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 10
Interval: 10
Path: HTTP:1936/healthz/ready
Healthy threshold: 2
Unhealthy threshold: 2
Timeout: 5
Interval: 10
配置 HAProxy 入口控制器,以便您可以通过负载均衡器在端口 6443、22623、443 和 80 上访问集群。根据您的需求,您可以在 HAProxy 配置中指定单个子网的 IP 地址或多个子网的 IP 地址。
# ...
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
# ...
# ...
listen api-server-6443
bind *:6443
mode tcp
server master-00 192.168.83.89:6443 check inter 1s
server master-01 192.168.84.90:6443 check inter 1s
server master-02 192.168.85.99:6443 check inter 1s
server bootstrap 192.168.80.89:6443 check inter 1s
listen machine-config-server-22623
bind *:22623
mode tcp
server master-00 192.168.83.89:22623 check inter 1s
server master-01 192.168.84.90:22623 check inter 1s
server master-02 192.168.85.99:22623 check inter 1s
server bootstrap 192.168.80.89:22623 check inter 1s
listen ingress-router-80
bind *:80
mode tcp
balance source
server worker-00 192.168.83.100:80 check inter 1s
server worker-01 192.168.83.101:80 check inter 1s
listen ingress-router-443
bind *:443
mode tcp
balance source
server worker-00 192.168.83.100:443 check inter 1s
server worker-01 192.168.83.101:443 check inter 1s
listen ironic-api-6385
bind *:6385
mode tcp
balance source
server master-00 192.168.83.89:6385 check inter 1s
server master-01 192.168.84.90:6385 check inter 1s
server master-02 192.168.85.99:6385 check inter 1s
server bootstrap 192.168.80.89:6385 check inter 1s
listen inspector-api-5050
bind *:5050
mode tcp
balance source
server master-00 192.168.83.89:5050 check inter 1s
server master-01 192.168.84.90:5050 check inter 1s
server master-02 192.168.85.99:5050 check inter 1s
server bootstrap 192.168.80.89:5050 check inter 1s
# ...
使用 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 是否可访问机器配置服务器资源
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
如果配置正确,该命令的输出将显示以下响应
HTTP/1.1 200 OK
Content-Length: 0
通过运行以下命令并观察输出,验证控制器是否可以在端口 80 上访问入口控制器资源
$ 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 上访问入口控制器资源
$ 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 服务器记录。
<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 记录都传播后再验证每个记录。 |
为了让 OpenShift Container Platform 集群使用用户管理的负载均衡器,您必须在集群的 install-config.yaml
文件中指定以下配置
# ...
platform:
vsphere:
loadBalancer:
type: UserManaged (1)
apiVIPs:
- <api_ip> (2)
ingressVIPs:
- <ingress_ip> (3)
# ...
1 | 将type 参数设置为UserManaged ,以指定集群的用户管理型负载均衡器。此参数默认为OpenShiftManagedDefault ,表示默认的内部负载均衡器。对于在openshift-kni-infra 命名空间中定义的服务,用户管理型负载均衡器可以将coredns 服务部署到集群中的 Pod,但会忽略keepalived 和haproxy 服务。 |
2 | 当您指定用户管理型负载均衡器时,此参数为必填参数。请指定用户管理型负载均衡器的公共 IP 地址,以便 Kubernetes API 可以与用户管理型负载均衡器通信。 |
3 | 当您指定用户管理型负载均衡器时,此参数为必填参数。请指定用户管理型负载均衡器的公共 IP 地址,以便用户管理型负载均衡器可以管理集群的入口流量。 |
使用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
您可以在兼容的云平台上安装 OpenShift Container Platform。
您只能在初始安装期间运行安装程序的 |
您拥有 OpenShift Container Platform 安装程序和集群的 pull 密钥。
您已验证主机上的云提供商帐户是否具有部署集群的正确权限。权限错误的帐户会导致安装过程失败,并显示一条错误消息,其中显示缺少的权限。
可选:在创建集群之前,配置外部负载均衡器以代替默认负载均衡器。
您无需为安装程序指定 API 和入口静态地址。如果您选择此配置,则必须采取其他措施来定义接受来自每个引用的 vSphere 子网的 IP 地址的网络目标。请参阅“配置用户管理型负载均衡器”部分。 |
切换到包含安装程序的目录并初始化集群部署。
$ ./openshift-install create cluster --dir <installation_directory> \ (1)
--log-level=info (2)
1 | 对于<installation_directory> ,请指定自定义./install-config.yaml 文件的路径。 |
2 | 要查看不同的安装详细信息,请指定warn 、debug 或error ,而不是info 。 |
集群部署成功完成后
终端将显示访问集群的说明,包括指向 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
|
您可以通过导出集群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
在 OpenShift Container Platform 安装期间,默认情况下会为 OperatorHub 配置从 Red Hat 和社区项目提供的源内容的 Operator 目录。在受限网络环境中,您必须以集群管理员身份禁用默认目录。
通过将disableAllDefaultSources: true
添加到OperatorHub
对象来禁用默认目录的源。
$ oc patch OperatorHub cluster --type json \
-p '[{"op": "add", "path": "/spec/disableAllDefaultSources", "value": true}]'
或者,您可以使用 Web 控制台来管理目录源。在**管理**→**集群设置**→**配置**→**OperatorHub**页面中,单击**源**选项卡,您可以在其中创建、更新、删除、禁用和启用各个源。 |
安装集群后,您必须为 Registry Operator 创建存储。
在不提供可共享对象存储的平台上,OpenShift Image Registry Operator 会将自身引导为Removed
。这允许openshift-installer
在这些平台类型上完成安装。
安装后,您必须编辑 Image Registry Operator 配置以将managementState
从Removed
切换到Managed
。完成后,您必须配置存储。
对于不提供默认存储的平台,Image Registry Operator 最初不可用。安装后,您必须配置注册表以使用存储,以便可以使用 Registry Operator。
显示了配置持久卷的说明,这是生产集群所需的。在适用情况下,将显示有关将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了其他说明,用于在升级期间使用Recreate
滚动策略允许镜像注册表使用块存储类型。
作为集群管理员,安装后,您必须配置注册表以使用存储。
集群管理员权限。
VMware vSphere 上的集群。
为您的集群配置的持久性存储,例如 Red Hat OpenShift Data Foundation。
当您只有一个副本时,OpenShift Container Platform 支持镜像注册表存储的 |
必须具有“100Gi”容量。
测试表明,使用RHEL上的NFS服务器作为核心服务的存储后端存在问题。这包括OpenShift容器注册表和Quay、用于监控存储的Prometheus以及用于日志存储的Elasticsearch。因此,不建议使用RHEL NFS作为核心服务使用的PV的后端。 市场上的其他NFS实现可能不存在这些问题。请联系各个NFS实现厂商,了解更多关于针对这些OpenShift容器平台核心组件可能完成的测试信息。 |
要配置注册表以使用存储,请更改configs.imageregistry/cluster
资源中的spec.storage.pvc
。
使用共享存储时,请检查安全设置以防止外部访问。 |
验证您没有注册表 Pod。
$ oc get pod -n openshift-image-registry -l docker-registry=default
No resourses found in openshift-image-registry namespace
如果您的输出中存在注册表 Pod,则无需继续此过程。 |
检查注册表配置。
$ 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
在OpenShift容器平台4.17中,默认运行的遥测服务用于提供有关集群健康状况和更新成功情况的指标,需要访问互联网。如果您的集群连接到互联网,则遥测服务会自动运行,并且您的集群会注册到OpenShift集群管理器。
确认您的OpenShift集群管理器清单正确无误后(无论是通过遥测自动维护还是手动使用OpenShift集群管理器维护),使用订阅监控来跟踪您在帐户或多集群级别上的OpenShift容器平台订阅。
有关遥测服务的更多信息,请参见关于远程健康监控
如有必要,您可以选择退出远程健康报告。
如有必要,请参见注册您的断开连接的集群。