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.13.6. 使用 NodePort 配置集群入口流量
				OpenShift Container Platform 提供了从集群外部与集群中运行的服务进行通信的方法。此方法使用了 NodePort。
			
13.6.1. 使用 NodePort 使流量进入集群
					使用 NodePort 类型的 Service 资源,在集群中所有节点的特定端口上公开服务。端口在 Service 资源的 .spec.ports[*].nodePort 字段中指定。
				
使用节点端口需要额外的端口资源。
					NodePort 在节点 IP 地址的静态端口上公开服务。默认情况下,NodePort 在 30000 到 32767 的范围内,这意味着,NodePort 不可能与服务的预期端口匹配。例如:端口 8080 可能会在节点的端口 31020 中公开。
				
管理员必须确保外部 IP 地址路由到节点。
					NodePort 和外部 IP 地址互相独立,可以同时使用它们。
				
这部分中的流程需要由集群管理员执行先决条件。
13.6.2. 先决条件
在开始以下流程前,管理员必须:
- 设置集群联网环境的外部端口,使请求能够到达集群。
- 确定至少有一个用户具有集群管理员角色。要将此角色添加到用户,请运行以下命令: - 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 和至少一个节点,并且集群外有一个对集群具有网络访问权限的系统。此流程假设外部系统与集群位于同一个子网。不同子网上外部系统所需要的额外联网不在本主题的讨论范围内。
13.6.3. 创建项目和服务
如果您要公开的项目和服务尚不存在,请首先创建项目,再创建服务。
如果项目和服务都已存在,跳到公开服务以创建路由这一步。
先决条件
- 
							按照 ocCLI 并以一个集群管理员身份登陆。
流程
- 为您的服务创建一个新项目: - 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- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE mysql-80-rhel7 ClusterIP 172.30.63.31 <none> 3306/TCP 4m55s - 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 地址。 
13.6.4. 通过创建路由公开服务
					您可以使用 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- Copy to Clipboard Copied! - Toggle word wrap Toggle overflow - 输出示例 - 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 - 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