$ oc adm policy add-cluster-role-to-user cluster-admin username
OpenShift Container Platform 提供了与集群外部与集群中运行的服务进行通信的方法。此方法使用负载均衡器。
如果不需要特定的外部 IP 地址,您可以配置负载均衡器服务以允许外部访问 OpenShift Container Platform 集群。
负载均衡器服务分配唯一的 IP。负载均衡器具有单个边缘路由器 IP,它可以是虚拟 IP (VIP),但在初始负载均衡时仍然是单个机器。
如果配置了池,则是在基础架构级别完成的,而不是由集群管理员完成的。 |
本节中的步骤需要由集群管理员执行的先决条件。 |
在开始以下步骤之前,管理员必须
将外部端口设置为集群网络环境,以便请求可以到达集群。
确保至少有一个具有集群管理员角色的用户。要将此角色添加到用户,请运行以下命令
$ oc adm policy add-cluster-role-to-user cluster-admin username
拥有至少一个主节点和至少一个节点的 OpenShift Container Platform 集群,以及具有对集群的网络访问权限的集群外部系统。此过程假设外部系统与集群位于同一子网中。对于不同子网上的外部系统所需的额外网络配置超出了本主题的范围。
如果要公开的项目和服务不存在,请创建项目,然后创建服务。
如果项目和服务已存在,请跳到关于公开服务以创建路由的步骤。
安装 OpenShift CLI (oc
) 并以集群管理员身份登录。
通过运行 oc new-project
命令创建一个新的项目
$ oc new-project <project_name>
使用 oc new-app
命令创建您的服务
$ oc new-app nodejs:12~https://github.com/sclorg/nodejs-ex.git
要验证服务是否已创建,请运行以下命令
$ oc get svc -n <project_name>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
nodejs-ex ClusterIP 172.30.197.157 <none> 8080/TCP 70s
默认情况下,新服务没有外部 IP 地址。 |
您可以使用 oc expose
命令将服务公开为路由。
您已登录到 OpenShift Container Platform。
登录到您要公开的服务所在的项目
$ oc project <project_name>
运行 oc expose service
命令以公开路由
$ oc expose service nodejs-ex
route.route.openshift.io/nodejs-ex exposed
要验证服务是否已公开,您可以使用诸如 curl
之类的工具来检查从集群外部是否可以访问该服务。
要查找路由的主机名,请输入以下命令
$ oc get route
NAME HOST/PORT PATH SERVICES PORT TERMINATION WILDCARD
nodejs-ex nodejs-ex-myproject.example.com nodejs-ex 8080-tcp None
要检查主机是否响应 GET 请求,请输入以下命令
curl
命令$ curl --head nodejs-ex-myproject.example.com
HTTP/1.1 200 OK
...
使用以下步骤创建负载均衡器服务。
确保您要公开的项目和服务存在。
您的云提供商支持负载均衡器。
要创建负载均衡器服务
登录到 OpenShift Container Platform。
加载您要公开的服务所在的项目。
$ oc project project1
在控制平面节点上打开一个文本文件,粘贴以下文本,并根据需要编辑文件
apiVersion: v1 kind: Service metadata: name: egress-2 (1) spec: ports: - name: db port: 3306 (2) loadBalancerIP: loadBalancerSourceRanges: (3) - 10.0.0.0/8 - 192.168.0.0/16 type: LoadBalancer (4) selector: name: mysql (5)
1 | 输入负载均衡器服务的描述性名称。 |
2 | 输入要公开的服务正在监听的相同端口。 |
3 | 输入要限制通过负载均衡器流量的特定IP地址列表。如果云提供商不支持此功能,则忽略此字段。 |
4 | 输入Loadbalancer 作为类型。 |
5 | 输入服务的名称。 |
要将通过负载均衡器的流量限制为特定IP地址,建议使用 Ingress Controller 字段 |
保存并退出文件。
运行以下命令创建服务
$ oc create -f <file-name>
例如
$ oc create -f mysql-lb.yaml
执行以下命令查看新服务
$ oc get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
egress-2 LoadBalancer 172.30.22.226 ad42f5d8b303045-487804948.example.com 3306:30357/TCP 15m
如果启用了云提供商,则服务会自动分配一个外部IP地址。
在主节点上,使用 cURL 等工具,确保您可以使用公网 IP 地址访问该服务
$ curl <public-ip>:<port>
例如
$ curl 172.29.121.74:3306
本节中的示例使用 MySQL 服务,这需要一个客户端应用程序。如果您收到包含Got packets out of order
消息的字符字符串,则表示您已连接到服务。
如果您有 MySQL 客户端,请使用标准 CLI 命令登录
$ mysql -h 172.30.131.89 -u admin -p
Enter password:
Welcome to the MariaDB monitor. Commands end with ; or \g.
MySQL [(none)]>