kubernetes中使用Service反向代理外部服务

当我们的某个服务在外部集群的时候,但是又想k8s集群内的应用连接它,这是可以创建一个service,用service代理外部服务,然后集群内就能连接该service,从而间接的访问外部服务。

创建一个service代理外部的服务

创建一个没有标签选择器的service,这样的service就不会关联到任何pod,从而也不会自动创建endpoint。这时我们手动创建一个与service同名的endpoint,使用endpoint来定义外部服务的地址端口,service会自动关联该endpoint。

service是如何与endpoint关联的?需要特别注意一下几点:

  1. endpoint的名称必须要与service的名称相同,这样两者才能关联;
  2. service定义spec.ports的ports的时候,包含port端口、name端口名称、protocol协议;
  3. endpoint中定义外部服务的IP和端口,endpoint的名称一定要与service的名称一样,协议也要一样,端口的name也要与service的端口的name一样,端口协议也要与service的端口协议一样,不然endpoint不能与service进行关联。

下面是演示示例:
1、在一台服务器上部署httpd服务,并将端口改为18080,保障服务正常运行,可以使用浏览器访问测试页面;
2、创建service和endpoint的配置文件,如下:

apiVersion: v1
kind: Service
metadata:
  name: outside-svc # Service的名称,跟Endpoints名称保持一致
spec:
  type: NodePort # Service的类型,需要对外提供服务的话,使用NodePort,如不需要外部访问,只限于内部访问,则使用ClusterIP
  ports:
  - name: out-agent-port # 端口名称,跟Endpoints的端口名称保持一致
    port: 8080 #集群內部访问端口
    nodePort: 32000 # 对外提供服务的端口,仅NodePort模式下生效
    protocol: TCP # 协议类型
  sessionAffinity: None
---
apiVersion: v1
kind: Endpoints 
metadata:
  name: outside-svc # Endpoints的名称,跟Service名称保持一致
subsets:
- addresses:
  - ip: 11.0.1.7 # 需要被代理出去的服务器的IP,即我们上面部署了httpd服务的IP
  ports:
  - port: 18080 # httpd服务的端口
    protocol: TCP # 协议类型,需要跟Service的保持一致
    name: out-agent-port # 端口名称,跟Service的端口名称保持一致

3、应用该yaml文件,并查看状态:

[root@master1 ~]# kubectl get ep,svc
NAME                    ENDPOINTS                                   AGE
endpoints/outside-svc   11.0.1.7:18080                              31m

NAME                  TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)          AGE
service/outside-svc   NodePort    10.99.100.57   <none>        8080:32000/TCP   31m

4、通过浏览器测试访问k8s节点的任意IP+32000端口
在这里插入图片描述
能正常访问测试页面,即表示反向代理配置完成了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dustin.Hoffman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值