This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.18.4. 使用负载均衡器配置集群入口流量
OpenShift Container Platform 提供了从集群外部与集群中运行的服务进行通信的方法。此方法使用了负载均衡器。
18.4.1. 使用负载均衡器使流量进入集群 复制链接链接已复制到粘贴板!
如果不需要具体的外部 IP 地址,您可以配置负载均衡器服务,以便从外部访问 OpenShift Container Platform 集群。
负载均衡器服务分配唯一 IP。负载均衡器有单一边缘路由器 IP,它可以是虚拟 IP (VIP),但仍然是一台用于初始负载均衡的计算机。
如果配置了池,则会在基础架构一级进行,而不是由集群管理员完成。
这部分中的流程需要由集群管理员执行先决条件。
18.4.2. 先决条件 复制链接链接已复制到粘贴板!
在开始以下流程前,管理员必须:
- 设置集群联网环境的外部端口,使请求能够到达集群。
确定至少有一个用户具有集群管理员角色。要将此角色添加到用户,请运行以下命令:
oc adm policy add-cluster-role-to-user cluster-admin username
$ oc adm policy add-cluster-role-to-user cluster-admin username
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 有一个 OpenShift Container Platform 集群,其至少有一个 master 和至少一个节点,并且集群外有一个对集群具有网络访问权限的系统。此流程假设外部系统与集群位于同一个子网。不同子网上外部系统所需要的额外联网不在本主题的讨论范围内。
18.4.3. 创建项目和服务 复制链接链接已复制到粘贴板!
如果您要公开的项目和服务尚不存在,请首先创建项目,再创建服务。
如果项目和服务都已存在,跳到公开服务以创建路由这一步。
先决条件
-
按照
oc
CLI 并以一个集群管理员身份登陆。
流程
运行
oc new-project
命令为您的服务创建一个新项目:oc new-project myproject
$ oc new-project myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc new-app
命令来创建服务:oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
$ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证该服务是否已创建,请运行以下命令:
oc get svc -n myproject
$ oc get svc -n myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,新服务没有外部 IP 地址。
18.4.4. 通过创建路由公开服务 复制链接链接已复制到粘贴板!
您可以使用 oc expose
命令,将服务公开为路由。
流程
公开服务:
- 登录 OpenShift Container Platform。
登录您想公开的服务所在的项目:
oc project myproject
$ oc project myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行
oc expose service
命令以公开路由:oc expose service nodejs-ex
$ oc expose service nodejs-ex
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
route.route.openshift.io/nodejs-ex exposed
route.route.openshift.io/nodejs-ex exposed
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要验证该服务是否已公开,您可以使用 cURL 等工具来确保该服务可从集群外部访问。
使用
oc get route
命令查找路由的主机名:oc get route
$ oc get route
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nodejs-ex nodejs-ex-myproject.example.com nodejs-ex 8080-tcp None
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD nodejs-ex nodejs-ex-myproject.example.com nodejs-ex 8080-tcp None
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用 cURL 检查主机是否响应 GET 请求:
curl --head nodejs-ex-myproject.example.com
$ curl --head nodejs-ex-myproject.example.com
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
HTTP/1.1 200 OK ...
HTTP/1.1 200 OK ...
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
18.4.5. 创建负载均衡器服务 复制链接链接已复制到粘贴板!
使用以下流程来创建负载均衡器服务。
先决条件
- 确保您要公开的项目和服务已经存在。
流程
创建负载均衡器服务:
- 登录 OpenShift Container Platform。
加载您要公开的服务所在的项目。
oc project project1
$ oc project project1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在 control plane 节点上打开文本文件并粘贴以下文本,根据需要编辑该文件:
负载均衡器配置文件示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 注意要将通过负载均衡器的流量限制为特定的 IP 地址,建议使用
service.beta.kubernetes.io/load-balancer-source-ranges
注解,而不是设置loadBalancerSourceRanges
字段。通过注释,您可以更轻松地迁移到 OpenShift API,后者将在未来的发行版中实施。- 保存并退出文件。
运行以下命令来创建服务:
oc create -f <file-name>
$ oc create -f <file-name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc create -f mysql-lb.yaml
$ oc create -f mysql-lb.yaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 执行以下命令以查看新服务:
oc get svc
$ oc get svc
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE egress-2 LoadBalancer 172.30.22.226 ad42f5d8b303045-487804948.example.com 3306:30357/TCP 15m
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE egress-2 LoadBalancer 172.30.22.226 ad42f5d8b303045-487804948.example.com 3306:30357/TCP 15m
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果启用了云供应商,该服务会自动分配到一个外部 IP 地址。
在 master 上,使用 cURL 等工具来确保您可以通过公共 IP 地址访问该服务:
curl <public-ip>:<port>
$ curl <public-ip>:<port>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
curl 172.29.121.74:3306
$ curl 172.29.121.74:3306
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 此部分中的示例使用 MySQL 服务,这需要客户端应用程序。如果您得到一串字符并看到
Got packets out of order
消息,则您已连接到该服务:如果您有 MySQL 客户端,请使用标准 CLI 命令登录:
mysql -h 172.30.131.89 -u admin -p
$ mysql -h 172.30.131.89 -u admin -p
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. MySQL [(none)]>
Enter password: Welcome to the MariaDB monitor. Commands end with ; or \g. MySQL [(none)]>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow