us-east-1
在 OpenShift Container Platform 4.17 版本中,您可以使用安装程序预配的基础架构在 VMware vSphere 实例上安装集群。要自定义安装,请在安装集群之前修改install-config.yaml
文件中的参数。
对多个 vCenter 的支持仅为技术预览功能。技术预览功能不受 Red Hat 生产服务级别协议 (SLA) 的支持,并且可能功能不完整。Red Hat 不建议在生产环境中使用它们。这些功能提供对即将推出的产品功能的早期访问,使客户能够在开发过程中测试功能并提供反馈。 有关 Red Hat 技术预览功能的支持范围的更多信息,请参阅技术预览功能支持范围。 |
您已完成使用安装程序预配的基础架构准备安装集群中的任务。
您已查看了 VMware 平台许可证。Red Hat 不会对您的 VMware 许可证施加任何限制,但某些 VMware 基础架构组件需要许可证。
您已查看有关OpenShift Container Platform 安装和更新流程的详细信息。
您已阅读有关选择集群安装方法并为用户准备集群的文档。
您已为集群预配了持久性存储。要部署私有镜像注册表,您的存储必须提供ReadWriteMany
访问模式。
OpenShift Container Platform 安装程序需要访问 vCenter 和 ESXi 主机上的 443 端口。您已验证 443 端口是可访问的。
如果您使用防火墙,请与管理员确认 443 端口是可访问的。为了成功安装,控制平面节点必须能够通过 443 端口访问 vCenter 和 ESXi 主机。
如果您使用防火墙,则已配置它以允许您的集群需要访问的站点。
如果您正在配置代理,请务必也查看此站点列表。 |
在 OpenShift Container Platform 4.17 中,您需要访问互联网才能安装集群。
您必须具有互联网访问权限才能:
访问OpenShift 集群管理器以下载安装程序并执行订阅管理。如果集群具有互联网访问权限并且您没有禁用遥测,则该服务会自动授权您的集群。
访问Quay.io以获取安装集群所需的软件包。
获取执行集群更新所需的软件包。
如果您的集群无法直接访问互联网,则可以在您预配的某些类型的基础架构上执行受限网络安装。在此过程中,您将下载所需的内容并使用它来填充包含安装包的镜像注册表。对于某些安装类型,您安装集群的环境将不需要互联网访问。在更新集群之前,请更新镜像注册表的内容。 |
您可以将 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 安装程序和集群的拉取密钥。
创建install-config.yaml
文件。
更改为包含安装程序的目录并运行以下命令:
$ ./openshift-install create install-config --dir <installation_directory> (1)
1 | 对于<installation_directory> ,请指定用于存储安装程序创建的文件的目录名。 |
指定目录时:
验证目录是否具有execute
权限。此权限是安装目录下运行 Terraform 二进制文件所必需的。
使用空目录。某些安装资源(例如引导 X.509 证书)的到期时间间隔很短,因此您不能重用安装目录。如果您想重用来自另一个集群安装的单个文件,可以将它们复制到您的目录中。但是,安装资源的文件名可能会在不同版本之间发生变化。从较早的 OpenShift Container Platform 版本复制安装文件时,请谨慎操作。
在提示符下,提供云的配置详细信息。
可选:选择用于访问集群机器的 SSH 密钥。
对于要执行安装调试或灾难恢复的生产 OpenShift Container Platform 集群,请指定您的 |
选择**vsphere**作为目标平台。
指定您的 vCenter 实例的名称。
指定具有创建集群所需权限的 vCenter 帐户的用户名和密码。
安装程序将连接到您的 vCenter 实例。
选择要连接到的 vCenter 实例中的数据中心。
创建安装配置文件后,您可以修改该文件以创建多 vSphere 数据中心环境。这意味着您可以将 OpenShift Container Platform 集群部署到多个 vSphere 数据中心。有关创建此环境的更多信息,请参见名为“VMware vSphere 区域和区域启用”的部分。 |
选择要使用的默认 vCenter 数据存储。
您可以指定数据存储集群中任何现有数据存储的路径。默认情况下,使用 Storage vMotion 的存储分布式资源调度程序 (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
文件。您可以在“安装配置参数”部分找到有关可用参数的更多信息。
如果您正在安装三节点集群,请确保将 |
备份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)
fips: false
pullSecret: '{"auths": ...}'
sshKey: 'ssh-ed25519 AAAA...'
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 创建的每个虚拟机都会分配一个特定于集群的唯一标签。分配的标签使安装程序能够在取消集群的佣金时识别和删除关联的虚拟机。您可以列出最多十个要附加到安装程序配置的虚拟机的附加标签 ID。 | ||
9 | 要由安装程序关联的标签的 ID。例如,urn:vmomi:InventoryServiceTag:208e713c-cae3-4b7f-918e-4051ca7d1f97:GLOBAL 。有关确定标签 ID 的更多信息,请参见vSphere 标签和属性文档。 |
||
10 | vSphere 磁盘配置方法。 |
在 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 上与运行 Ingress Controller 的 OpenShift Container Platform 节点通信。
您可以通过设置健康检查 URL 来配置大多数负载均衡器,这些 URL 用于确定服务是可用还是不可用。OpenShift Container Platform 为 OpenShift API、机器配置 API 和 Ingress Controller 后端服务提供这些健康检查。
以下示例显示了前面列出的后端服务的健康检查规范
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 Ingress Controller,以便您可以通过负载均衡器在端口 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 上访问 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 服务器记录。
<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。
您只能在初始安装期间运行安装程序的 `create cluster` 命令一次。 |
您拥有 OpenShift Container Platform 安装程序和集群的拉取密钥。
您已验证主机上的云提供商帐户是否具有部署集群的正确权限。权限不正确的帐户会导致安装过程失败,并显示一条错误消息,其中显示缺少的权限。
可选:在创建集群之前,配置外部负载均衡器以代替默认负载均衡器。
您不需要为安装程序指定 API 和 Ingress 静态地址。如果您选择此配置,则必须采取其他措施来定义接受来自每个引用的 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
安装集群后,必须为注册表 Operator 创建存储。
在不提供可共享对象存储的平台上,OpenShift 镜像注册表 Operator 会将自身引导为 Removed
。这允许 openshift-installer
在这些平台类型上完成安装。
安装后,必须编辑镜像注册表 Operator 配置以将 managementState
从 Removed
切换到 Managed
。完成后,必须配置存储。
对于不提供默认存储的平台,镜像注册表 Operator 最初不可用。安装后,必须配置注册表以使用存储,以便使注册表 Operator 可用。
显示了配置持久卷的说明,生产集群需要持久卷。在适用的情况下,将显示将空目录配置为存储位置的说明,这仅适用于非生产集群。
提供了其他说明,用于在升级期间使用 Recreate
展开策略允许镜像注册表使用块存储类型。
作为集群管理员,安装后必须配置注册表以使用存储。
集群管理员权限。
VMware vSphere 上的集群。
为您的集群配置的持久性存储,例如 Red Hat OpenShift Data Foundation。
当您只有一个副本时,OpenShift Container Platform 支持镜像注册表存储的 |
必须具有“100Gi”容量。
测试表明,使用 RHEL 上的 NFS 服务器作为核心服务的存储后端存在问题。这包括 OpenShift Container Registry 和 Quay、用于监控存储的 Prometheus 以及用于日志存储的 Elasticsearch。因此,不建议使用 RHEL NFS 来支持核心服务使用的 PV。 市场上的其他 NFS 实现可能没有这些问题。请联系各个 NFS 实现供应商,以获取有关可能针对这些 OpenShift Container Platform 核心组件完成的任何测试的更多信息。 |
要配置注册表以使用存储,请更改 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
要允许镜像注册表在升级期间使用块存储类型(例如 vSphere 虚拟机磁盘 (VMDK))作为集群管理员,可以使用 Recreate
展开策略。
块存储卷受支持,但不建议在生产集群中与镜像注册表一起使用。注册表在块存储上配置的安装不是高可用的,因为注册表不能拥有多个副本。 |
输入以下命令以将镜像注册表存储设置为块存储类型,修补注册表以便它使用 Recreate
展开策略,并仅运行 1
个副本
$ oc patch config.imageregistry.operator.openshift.io/cluster --type=merge -p '{"spec":{"rolloutStrategy":"Recreate","replicas":1}}'
为块存储设备配置 PV,并为该卷创建 PVC。请求的块卷使用 ReadWriteOnce (RWO) 访问模式。
创建一个包含以下内容的 pvc.yaml
文件以定义 VMware vSphere PersistentVolumeClaim
对象
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: image-registry-storage (1)
namespace: openshift-image-registry (2)
spec:
accessModes:
- ReadWriteOnce (3)
resources:
requests:
storage: 100Gi (4)
1 | 表示 PersistentVolumeClaim 对象的唯一名称。 |
2 | PersistentVolumeClaim 对象的命名空间,即 openshift-image-registry 。 |
3 | 持久卷声明的访问模式。使用 ReadWriteOnce ,可以由单个节点以读写权限装载卷。 |
4 | 持久卷声明的大小。 |
输入以下命令以从文件创建 PersistentVolumeClaim
对象
$ oc create -f pvc.yaml -n openshift-image-registry
输入以下命令以编辑注册表配置,使其引用正确的 PVC
$ oc edit config.imageregistry.operator.openshift.io -o yaml
storage:
pvc:
claim: (1)
1 | 通过创建自定义 PVC,您可以将 claim 字段保留为空白,以默认自动创建 image-registry-storage PVC。 |
有关配置注册表存储以使其引用正确的 PVC 的说明,请参阅 为 vSphere 配置注册表。
在 OpenShift Container Platform 4.17 中,默认运行的遥测服务用于提供集群健康状况和更新成功情况的指标,需要访问互联网。如果您的集群连接到互联网,则遥测服务会自动运行,并且您的集群会注册到OpenShift 集群管理器。
确认您的OpenShift 集群管理器清单正确无误后(无论是由遥测服务自动维护还是手动使用 OpenShift 集群管理器维护),请使用订阅监控来跟踪您在帐户或多集群级别上的 OpenShift Container Platform 订阅。
有关遥测服务的更多信息,请参阅关于远程健康监控
如有必要,您可以选择退出远程健康报告。
可选:查看 vSphere 问题检测器操作员的事件以确定集群是否具有权限或存储配置问题。