33.5. 配置外部负载均衡器
您可以在 Red Hat OpenStack Platform(RHOSP)上配置 OpenShift Container Platform 集群,使其使用外部负载均衡器来代替默认负载均衡器。
您还可以将 OpenShift Container Platform 集群配置为使用支持多个子网的外部负载均衡器。如果使用多个子网,您可以明确列出负载均衡器目标使用的任何网络中的所有 IP 地址。此配置可减少维护开销,因为您可以在这些网络中创建和销毁节点,而无需重新配置负载均衡器目标。
如果您使用较小的网络上的机器集来部署入口 pod,如 /27 或 /28,您可以简化负载均衡器目标。
您不需要为安装程序指定 API 和 Ingress 静态地址。如果选择此配置,则必须采取额外的操作来定义接受每个引用的 vSphere 子网的 IP 地址的网络目标。
先决条件
- 在负载均衡器中,所有位于集群外的系统用户都必须可访问端口 6443、443 和 80 的 TCP。
- 在所有计算节点之间负载平衡应用端口 443 和 80。
- 在每个 control plane 节点之间负载平衡 API 端口 6443。
- 在负载均衡器中,用于为节点提供 ignition 启动配置的端口 22623 不会在集群外公开。
您的负载均衡器可以访问集群中每个节点上所需的端口。您可以通过完成以下操作来确保此级别的访问权限:
- API 负载均衡器可以访问 control plane 节点上的端口 22623 和 6443。
- 入口负载均衡器可以访问入口 pod 所在的节点上的端口 443 和 80。
流程
在端口 6443、443 和 80 中启用从负载均衡器访问集群的功能。
例如,请注意此 HAProxy 配置:
HAProxy 配置示例
... listen my-cluster-api-6443 bind 0.0.0.0:6443 mode tcp balance roundrobin server my-cluster-master-2 192.0.2.2:6443 check server my-cluster-master-0 192.0.2.3:6443 check server my-cluster-master-1 192.0.2.1:6443 check listen my-cluster-apps-443 bind 0.0.0.0:443 mode tcp balance roundrobin server my-cluster-worker-0 192.0.2.6:443 check server my-cluster-worker-1 192.0.2.5:443 check server my-cluster-worker-2 192.0.2.4:443 check listen my-cluster-apps-80 bind 0.0.0.0:80 mode tcp balance roundrobin server my-cluster-worker-0 192.0.2.7:80 check server my-cluster-worker-1 192.0.2.9:80 check server my-cluster-worker-2 192.0.2.8:80 check在集群 API 的 DNS 服务器中添加记录,并在负载均衡器上应用记录。例如:
<load_balancer_ip_address> api.<cluster_name>.<base_domain> <load_balancer_ip_address> apps.<cluster_name>.<base_domain>
在命令行中,使用
curl验证外部负载均衡器和 DNS 配置是否正常运行。验证集群 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" }验证集群应用程序是否可以访问:
注意您还可以在 Web 浏览器中打开 OpenShift Container Platform 控制台来验证应用程序的可访问性。
$ curl http://console-openshift-console.apps.<cluster_name>.<base_domain> -I -L --insecure
如果配置正确,您会收到 HTTP 响应:
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