第 3 章 裸机配置
在裸机主机上部署 OpenShift Container Platform 时,在置备前或置备后,有时您需要对主机进行更改。这包括检查主机的硬件、固件和固件详情。它还可以包含格式化磁盘或更改可修改的固件设置。
3.1. 用户管理的负载均衡器的服务 复制链接链接已复制到粘贴板!
您可以将 OpenShift Container Platform 集群配置为使用用户管理的负载均衡器来代替默认负载均衡器。
配置用户管理的负载均衡器取决于您的厂商的负载均衡器。
本节中的信息和示例仅用于指导目的。有关供应商负载均衡器的更多信息,请参阅供应商文档。
红帽支持用户管理的负载均衡器的以下服务:
- Ingress Controller
- OpenShift API
- OpenShift MachineConfig API
您可以选择是否要为用户管理的负载均衡器配置一个或多个所有服务。仅配置 Ingress Controller 服务是一个通用的配置选项。要更好地了解每个服务,请查看以下图表:
图 3.1. 显示 OpenShift Container Platform 环境中运行的 Ingress Controller 的网络工作流示例
图 3.2. 显示 OpenShift Container Platform 环境中运行的 OpenShift API 的网络工作流示例
图 3.3. 显示 OpenShift Container Platform 环境中运行的 OpenShift MachineConfig API 的网络工作流示例
用户管理的负载均衡器支持以下配置选项:
- 使用节点选择器将 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 移到未定义节点,则可能会出现连接中断。
3.1.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
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
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
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 地址。
带有列出子网的 HAProxy 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 带有多个列出子网的 HAProxy 配置示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
curl
CLI 命令验证用户管理的负载均衡器及其资源是否正常运行:运行以下命令并查看响应,验证集群机器配置 API 是否可以被 Kubernetes API 服务器资源访问:
curl https://<loadbalancer_ip_address>:6443/version --insecure
$ curl https://<loadbalancer_ip_address>:6443/version --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,您会收到 JSON 对象的响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并观察输出,验证集群机器配置 API 是否可以被 Machine 配置服务器资源访问:
curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
$ curl -v https://<loadbalancer_ip_address>:22623/healthz --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
HTTP/1.1 200 OK Content-Length: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并观察输出,验证控制器是否可以被端口 80 上的 Ingress Controller 资源访问:
curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
$ curl -I -L -H "Host: console-openshift-console.apps.<cluster_name>.<base_domain>" http://<load_balancer_front_end_IP_address>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
HTTP/1.1 302 Found content-length: 0 location: https://console-openshift-console.apps.ocp4.private.opequon.net/ cache-control: no-cache
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并观察输出,验证控制器是否可以被端口 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>
$ 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>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,命令的输出会显示以下响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
配置集群的 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 api.<cluster_name>.<base_domain> A record pointing to Load Balancer Front End
Copy to Clipboard Copied! Toggle word wrap Toggle overflow <load_balancer_ip_address> A apps.<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
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要DNS 传播可能需要一些时间才能获得每个 DNS 记录。在验证每个记录前,请确保每个 DNS 记录传播。
要使 OpenShift Container Platform 集群使用用户管理的负载均衡器,您必须在集群的
install-config.yaml
文件中指定以下配置:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 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
$ curl https://api.<cluster_name>.<base_domain>:6443/version --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,您会收到 JSON 对象的响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并查看输出,验证您可以访问集群机器配置:
curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
$ curl -v https://api.<cluster_name>.<base_domain>:22623/healthz --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,命令的输出会显示以下响应:
HTTP/1.1 200 OK Content-Length: 0
HTTP/1.1 200 OK Content-Length: 0
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并查看输出,验证您可以在端口上访问每个集群应用程序:
curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,命令的输出会显示以下响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令并查看输出,验证您可以在端口 443 上访问每个集群应用程序:
curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
$ curl https://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果配置正确,命令的输出会显示以下响应:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow