节点访问 ( NodePort )是指在每个节点的IP上开放一个静态端口,通过静态端口对外暴露服务。节点访问 ( NodePort )会路由到ClusterIP服务,这个ClusterIP服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个NodePort服务。
- “节点访问 ( NodePort )”默认为VPC内网访问,如果需要使用弹性IP通过公网访问该服务,请提前在集群的节点上绑定弹性IP。
- 创建service后,如果服务亲和从集群级别切换为节点级别,连接跟踪表将不会被清理,建议用户创建service后不要修改服务亲和属性,如需修改请重新创建servcie。
- 同一个节点内的容器不支持访问externalTrafficPolicy为local的service。
您可以在创建工作负载时通过控制台设置Service访问方式,本节以nginx为例进行说明。
步骤 1 参考创建无状态负载(Deployment)、创建有状态负载(StatefulSet)或创建守护进程集(DaemonSet),在“工作负载访问设置”步骤,单击“添加服务”。
- 访问类型:选择“节点访问 ( NodePort )”。
说明:如果需要使用弹性IP通过公网访问该服务,请提前在集群的节点上绑定弹性IP。
- Service名称:自定义服务名称,可与工作负载名称保持一致。
- 服务亲和:
− 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。
− 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。
- 端口配置:
− 协议:请根据业务的协议类型选择。
− 容器端口:容器镜像中工作负载实际监听的端口,取值范围为1-65535。
− 访问端口:容器端口映射到节点私有IP上的端口,建议选择“自动生成”。
自动生成:系统会自动分配端口号。
指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。
步骤 2 完成配置后,单击“确定”。
步骤 3 单击“下一步:高级设置”进入高级设置页面,直接单击“创建”。
步骤 4 单击“查看工作负载详情”,在访问方式页签下获取访问地址,例如“192.168.0.160:30358”。
您可以在工作负载创建完成后对Service进行配置,此配置对工作负载状态无影响,且实时生效。具体操作如下:
步骤 1 登录CCE控制台,在左侧导航栏中选择“工作负载 > 无状态负载 Deployment”,在工作负载列表页单击要设置Service的工作负载名称。
说明:如果当前Service被关联到Ingress,则更新Service的端口信息后Ingress将不可用,需要删除重建。
步骤 2 在“Service”页签,单击“添加Service”。
步骤 3 在“添加Service”页面,访问类型选择“节点访问 ( NodePort )”。
说明:如果需要使用弹性IP通过公网访问该服务,请提前在集群的节点上绑定弹性IP。
步骤 4 设置节点访问参数:
Service名称:自定义服务名称,可与工作负载名称保持一致。
集群名称:工作负载所在集群的名称,此处不可修改。
命名空间:工作负载所在命名空间,此处不可修改。
关联工作负载:要添加Service的工作负载,此处不可修改。
- 服务亲和:
− 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。
− 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。
- 端口配置:
− 协议:请根据业务的协议类型选择。
− 容器端口:容器镜像中工作负载程序实际监听的端口,需用户确定。nginx程序实际监听的端口为80。
− 访问端口:容器端口映射到节点私有IP上的端口,建议选择“自动生成”。
自动生成:系统会自动分配端口号。
指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。
步骤 5 单击“创建”。工作负载已添加“节点访问 ( NodePort )”的服务。
步骤 1 在管理控制台首页,单击“计算 > 弹性云主机”。
步骤 2 在弹性云主机页面,找到同一VPC内任意一台云服务器,并确认连接到访问地址中IP与端口的安全组是开放的。
步骤 3 单击“远程登录”,弹出登录页面,输入用户密码登录。
步骤 4 使用curl命令访问工作负载验证工作负载是否可以正常访问。
说明:
- 节点访问(NodePort)会在集群内节点上分配一个虚拟IP,即可以在集群内部通过虚拟IP的验证方式验证。其中,虚拟IP访问端口默认与容器端口一致。
- 如果需要使用弹性IP通过公网访问该服务,请提前在集群的节点上绑定弹性IP。
curl 192.168.0.160:30358
其中“192.168.0.160:30358”为步骤4中获取到的访问地址,即节点虚拟IP+访问端口。
回显如下表示访问成功。
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
您可以在添加完Service后,更新此Service的端口配置,操作步骤如下:
步骤 1 登录CCE控制台,在左侧导航栏中选择“资源管理 > 网络管理”,在Service页签下,选择对应的集群和命名空间,单击需要更新端口配置的Service后的“更新”。
步骤 2 在更新Service页面,访问类型选择“节点访问 ( NodePort )”。
步骤 3 更新节点访问参数:
- Service名称:您创建的Service名称,此处不可修改。
- 集群名称:工作负载所在集群的名称,此处不可修改。
- 命名空间:工作负载所在命名空间,此处不可修改。
- 关联工作负载:要添加Service的工作负载,此处不可修改。
- 服务亲和:
− 集群级别:集群下所有节点的IP+访问端口均可以访问到此服务关联的负载,服务访问会因路由跳转导致一定性能损失,且无法获取到客户端源IP。
− 节点级别:只有通过负载所在节点的IP+访问端口才可以访问此服务关联的负载,服务访问没有因路由跳转导致的性能损失,且可以获取到客户端源IP。
- 端口配置:
− 协议:请根据业务的协议类型选择。
− 容器端口:容器镜像中工作负载程序实际监听的端口,需用户确定。nginx程序实际监听的端口为80。
− 访问端口:容器端口映射到节点私有IP上的端口,建议选择“自动生成”。
自动生成:系统会自动分配端口号。
指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。
步骤 4 单击“更新”。工作负载已更新Service。