节点访问 ( NodePort )是指在每个节点的IP上开放一个静态端口,通过静态端口对外暴露服务。节点访问 ( NodePort )会路由到ClusterIP服务,这个ClusterIP服务会自动创建。通过请求 <NodeIP>:<NodePort>,可以从集群的外部访问一个NodePort服务。
您可以在创建工作负载时通过控制台设置Service访问方式,本节以nginx为例进行说明。
如果需要使用弹性IP通过公网访问该服务,请提前在集群的节点上绑定弹性IP。
您可以在工作负载创建完成后对Service进行配置,此配置对工作负载状态无影响,且实时生效。具体操作如下:
如果当前Service被关联到Ingress,则更新Service的端口信息后Ingress将不可用,需要删除重建。
如果需要使用弹性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的端口配置,操作步骤如下:
您可以通过kubectl命令行设置Service访问方式。本节以nginx为例,说明kubectl命令实现节点访问的方法。
前提条件
请参见通过kubectl或web-terminal插件操作CCE集群配置kubectl命令,使弹性云服务器连接集群。
操作步骤
其中,nginx-deployment.yaml和nginx-nodeport-svc.yaml为自定义名称,您可以随意命名。
vi nginx-deployment.yaml
apiVersion: apps/v1 kind: Deployment metadata: name: nginx spec: replicas: 1 selector: matchLabels: app: nginx strategy: type: RollingUpdate template: metadata: labels: app: nginx spec: containers: - image: nginx imagePullPolicy: Always name: nginx imagePullSecrets: - name: default-secret
vi nginx-nodeport-svc.yaml
apiVersion: v1 kind: Service metadata: labels: app: nginx name: nginx-nodeport spec: ports: - name: service nodePort: 30000 port: 80 protocol: TCP targetPort: 80 selector: app: nginx type: NodePort
参数 |
是否必填 |
参数类型 |
描述 |
---|---|---|---|
nodePort |
否 |
Integer |
对应界面上的访问端口,取值范围为30000 ~ 32767,不填写表示自动生成。 |
port |
是 |
Integer |
集群虚拟IP的访问端口,取值范围为1 ~ 65535。 |
protocol |
否 |
String |
该端口的IP协议,支持“TCP”和“UDP”。 默认值:TCP |
targetPort |
是 |
String |
对应界面上的容器端口,取值范围为1 ~ 65535。 |
type |
是 |
String |
对应界面上的访问类型,NodePort表示“节点私有IP”。 |
参数 |
是否必填 |
参数类型 |
描述 |
---|---|---|---|
kubernetes.io/elb.session-affinity-mode |
否 |
String |
负载均衡监听是基于IP地址的会话保持,即来自同一IP地址的访问请求转发到同一台后端服务器上。
|
kubernetes.io/elb.session-affinity-option |
否 |
表3 Object |
七层负载均衡会话保持配置选项。 |
kubernetes.io/elb.lb-algorithm |
否 |
String |
默认值:“ROUND_ROBIN”,为后端云服务器组的负载均衡算法。 取值范围:
当该字段的取值为SOURCE_IP时,后端云服务器组绑定的后端云服务器的weight字段无效。 |
kubernetes.io/elb.health-check-flag |
否 |
String |
默认开启,为是否开启ELB健康检查功能。
|
kubernetes.io/elb.health-check-option |
否 |
表4 Object |
ELB健康检查配置选项。 |
参数 |
是否必填 |
参数类型 |
描述 |
---|---|---|---|
persistence_timeout |
否 |
String |
当elb.session-affinity-mode是“HTTP_COOKIE”时生效,设置会话保持的超时时间(秒)。 默认值为:1440,取值范围:1-1440。 |
app_cookie_name |
是 |
String |
当elb.session-affinity-mode是“APP_COOKIE”时生效,设置会话保持的超时时间(秒)。 取值范围:1-10000字符。 |
参数 |
是否必填 |
参数类型 |
描述 |
---|---|---|---|
delay |
是 |
String |
开始健康检查的初始等待时间(秒),可选 默认值:5,取值范围:1-50 |
timeout |
是 |
String |
健康检查的超时时间(秒),可选 默认值:10,取值范围1-50 |
max_retries |
是 |
String |
健康检查的最大重试次数,可选 默认值:3,取值范围1-10 |
protocol |
是 |
String |
健康检查的协议,可选 默认值:取关联服务的协议 取值范围:“TCP”或者“HTTP” |
path |
是 |
String |
健康检查的URL,协议是“HTTP”时配置,可选 默认值:“/” 取值范围:1-10000字符 |
kubectl create -f nginx-deployment.yaml
回显如下,表示工作负载已开始创建。
deployment "nginx" created
kubectl get po
回显如下,工作负载状态为Running,表示工作负载已处于运行状态。
NAME READY STATUS RESTARTS AGE etcd-0 0/1 ImagePullBackOff 0 48m icagent-m9dkt 0/0 Running 0 3d nginx-2601814895-qhxqv 1/1 Running 0 9s
kubectl create -f nginx-nodeport-svc.yaml
回显如下,表示服务开始创建。
service "nginx-nodeport" created
kubectl get svc
回显如下,表示服务已创建完成。
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE etcd-svc ClusterIP None <none> 3120/TCP 49m kubernetes ClusterIP 10.247.0.1 <none> 443/TCP 3d nginx-nodeport NodePort 10.247.4.225 <none> 80:30000/TCP 7s
curl 192.168.2.240:30000
其中192.168.2.240为集群中任意一个节点的IP地址,30000为节点开放的端口号。
回显如下,表示可正常访问。
<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>
大家好,我是我是Java进阶者,今天给大家分享Java字符串的基本操作知识。 一、字...
前言 Java线程实现方式主要有四种: 继承Thread类 实现Runnable接口 实现Callabl...
在2020年9月9日举办的AWS合作伙伴峰会2020上,亚马逊云服务(AWS)宣布将携手APN...
今年春节黄金周期间,全国零售和餐饮企业销售额首次突破万亿元,根据电商大数据...
伴随电子邮件服务业的高速发展,企业用户对邮件服务器的需求也不断的提高。有着...
1、面试场景与面试技巧 金三银四招聘季,一位粉丝朋友最近在蚂蚁金服第二轮面试...
体验篇 本文介绍的是unity中接入游戏多媒体引擎. 首先,什么是游戏多媒体引擎呢? ...
?1 背景 SRE运维团队致力于通过自动化来提高运维的工作生产效率 推动向智能化运...
申请 域名 需要实名认证吗?原则上来说,申请域名是需要实名的。因为早在2003年3...
经济:DeH服务支持BYOL模式,租户可以携带Microsoft Windows Server、Microsoft ...