文档简介:
VPC内网访问
VPC内网访问是指应用可以让同一VPC内其他应用访问,通过“集群节点的IP”或者“私网弹性负载均衡ELB”的服务地址访问。
主要场景:同一VPC内其他应用需要访问kubernetes集群内部的应用。
VPC内网访问有两种形式:
通过集群节点IP访问:如下图。
通过私网弹性负载均衡ELB访问:如下图。弹性负载均衡模式相比集群节点IP方式的访问,提供了高可靠的保障。
添加方式
您可以在创建应用时设置访问方式,也可以应用创建完成后添加访问方式。
方式一:创建应用时配置。
方式二:应用创建完成后设置。
通过界面创建
本节以nginx应用为例进行说明。
步骤1:创建无状态应用或创建有状态应用,在“应用访问设置”步骤,单击“添加服务”。
服务名称:自定义服务名称,可与应用名称保持一致。
访问方式:VPC内网访问。
节点IP:表示通过“集群节点IP”来访问应用。
VPC内网负载均衡:表示通过“弹性负载均衡”来访问应用。
协议:请根据业务的协议类型选择。
容器端口:容器镜像中应用程序实际监听的端口,需用户确定。nginx程序实际监听的端口为80。
访问端口:
−集群节点IP访问:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。
自动生成:系统会自动分配端口号。
指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。
−通过弹性负载均衡器的私网IP访问集群节点:指定一个端口,将容器端口映射到负载均衡器的端口,使用私网负载均衡IP访问应用,端口范围为1-65535。使用弹性负载均衡器的私有IP访问应用时,使用该端口。
步骤2:单击“下一步”进入“高级设置”页面,直接单击“创建”。
步骤3:单击查看应用详情,在访问方式页签中获取访问地址,例如“192.168.0.160:30358”。
步骤4:在管理控制台首页,单击“计算 > 弹性云主机”。
步骤5:在弹性云主机页面,找到同一VPC内任意一台云服务器,并确认连接到访问地址中IP与端口的安全组是开放的。
确认安全组开放
步骤6:单击“远程登录”,弹出登录页面,输入用户密码登录。
步骤7:使用curl命令访问应用验证应用是否可以正常访问。
节点私有IP类型的访问方式在集群内也会分配一个集群虚拟IP,即可以在集群内部通过集群虚拟IP的验证方式验证。其中,集群虚拟IP访问端口默认与容器端口一致,例如此示例的访问端口为80端口。
curl 192.168.0.160:30358
其中“192.168.0.160:30358”为步骤3中获取到的访问地址。
回显如下表示访问成功。
<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="/">nginx.org</a>.<br/>
Commercial support is available at
<a href="/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>
应用创建完成后设置
步骤1:登录CCE控制台,选择左侧导航栏的“资源管理 > 网络管理”,在Service页签下,单击“添加Service”。选择类型为“VPC内网访问”。
步骤2:设置集群内访问参数。
服务名称:自定义服务名称,可与应用名称保持一致。
集群名称:服务所在集群。
命名空间:服务所在命名空间。
关联应用:选择需要添加Service的应用。
访问类型:
− 节点IP:表示通过“集群节点IP”来访问集群内的节点。
− VPC内网负载均衡:表示选择通过“弹性负载均衡”来访问集群内的节点。
端口配置:
− 协议:请根据业务的协议类型选择。
− 容器端口:容器镜像中应用程序实际监听的端口,需用户确定。nginx程序实际监听的端口为80。
− 访问端口:
集群节点IP访问:容器端口映射到节点私有IP上的端口,用私有IP访问应用时使用,端口范围为30000-32767,建议选择“自动生成”。
□ 自动生成:系统会自动分配端口号。
□ 指定端口:指定固定的节点端口,默认取值范围为30000-32767。若指定端口时,请确保同个集群内的端口唯一性。
通过私网弹性负载均衡ELB访问:容器端口映射到负载均衡实例上的端口,用私网负载均衡IP访问应用时使用,端口范围为1-65535。
步骤3:单击“创建”。应用已添加“VPC内网访问”的服务。验证操作与步骤4-步骤7相同。
kubectl命令行创建
本节以nginx应用为例,说明kubectl命令实现VPC内访问的方法。
前提条件
配置kubectl命令,使弹性云主机连接集群。
操作步骤
步骤1:登录已配置好kubectl命令的弹性云主机。
步骤2:创建并编辑nginx-deployment.yaml以及nginx-nodeport-svc.yaml文件。
其中,nginx-deployment.yaml和nginx-nodeport-svc.yaml为自定义名称,您可以随意命名。
vi nginx-deployment.yaml
apiVersion: extensions/v1beta1
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 #集群虚拟IP的访问端口
protocol: TCP
targetPort: 80 #对应界面上的容器端口
selector:
app: nginx
type: NodePort #对应界面上的访问类型,NodePort表示“节点私有IP”
步骤3:创建应用。
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
步骤4:创建服务。
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
步骤5:采用curl命令访问应用验证应用是否可以正常访问。
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="/">nginx.org</a>.<br/>
Commercial support is available at
<a href="/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>