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.10.5. 使用 NodePort 配置集群入口流量
OpenShift Container Platform 提供了从集群外部与集群中运行的服务进行通信的方法。此方法使用了 NodePort
。
10.5.1. 使用 NodePort 使流量进入集群 复制链接链接已复制到粘贴板!
使用 NodePort
类型的 Service
资源,在集群中所有节点的特定端口上公开服务。端口在 Service
资源的 .spec.ports[*].nodePort
字段中指定。
使用 NodePort
需要额外的端口资源。
NodePort
在节点 IP 地址的静态端口上公开服务。默认情况下,NodePort
在 30000
到 32767
的范围内,这意味着,NodePort
不可能与服务的预期端口匹配。例如:端口 8080
可能会在节点的端口 31020
中公开。
管理员必须确保外部 IP 地址路由到节点。
NodePort
和外部 IP 地址互相独立,可以同时使用它们。
这部分中的流程需要由集群管理员执行先决条件。
先决条件
在开始以下流程前,管理员必须:
- 设置集群联网环境的外部端口,使请求能够到达集群。
确定至少有一个用户具有集群管理员角色。要将此角色添加到用户,请运行以下命令:
oc adm policy add-cluster-role-to-user cluster-admin <user_name>
$ oc adm policy add-cluster-role-to-user cluster-admin <user_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 有一个 OpenShift Container Platform 集群,其至少有一个 master 和至少一个节点,并且集群外有一个对集群具有网络访问权限的系统。此流程假设外部系统与集群位于同一个子网。不同子网上外部系统所需要的额外联网不在本主题的讨论范围内。
10.5.2. 创建项目和服务 复制链接链接已复制到粘贴板!
如果您要公开的项目和服务尚不存在,请首先创建项目,再创建服务。
如果项目和服务都已存在,跳到公开服务以创建路由这一步。
先决条件
-
按照
oc
CLI 并以一个集群管理员身份登陆。
流程
为您的服务创建一个新项目:
oc new-project <project_name>
$ oc new-project <project_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc new-project myproject
$ oc new-project myproject
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc new-app
命令来创建服务。例如:oc new-app \ -e MYSQL_USER=admin \ -e MYSQL_PASSWORD=redhat \ -e MYSQL_DATABASE=mysqldb \ registry.redhat.io/rhscl/mysql-80-rhel7
$ oc new-app \ -e MYSQL_USER=admin \ -e MYSQL_PASSWORD=redhat \ -e MYSQL_DATABASE=mysqldb \ registry.redhat.io/rhscl/mysql-80-rhel7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,以查看新服务是否已创建:
oc get svc -n myproject
$ oc get svc -n myproject NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql-80-rhel7 ClusterIP 172.30.63.31 <none> 3306/TCP 4m55s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 默认情况下,新服务没有外部 IP 地址。
10.5.3. 通过创建路由公开服务 复制链接链接已复制到粘贴板!
您可以使用 oc expose
命令,将服务公开为路由。
流程
公开服务:
- 登录 OpenShift Container Platform。
登录您想公开的服务所在的项目。
oc project project1
$ oc project project1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 要为应用程序公开节点端口,请输入以下命令。OpenShift Container Platform 会自动在
30000-32767
范围内选择可用端口。oc expose dc mysql-80-rhel7 --type=NodePort --name=mysql-ingress
$ oc expose dc mysql-80-rhel7 --type=NodePort --name=mysql-ingress
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要使用公开的节点端口确认该服务可用,请输入以下命令:
oc get svc -n myproject
$ oc get svc -n myproject NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql-80-rhel7 ClusterIP 172.30.217.127 <none> 3306/TCP 9m44s mysql-ingress NodePort 172.30.107.72 <none> 3306:31345/TCP 39s
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 可选: 要删除由
oc new-app
命令自动创建的服务,请输入以下命令:oc delete svc mysql-80-rhel7
$ oc delete svc mysql-80-rhel7
Copy to Clipboard Copied! Toggle word wrap Toggle overflow