kubernetes集群使用service反向代理到外部服务

需求

在k8s中各服务之间通过内部域名【服务名.namespace】的形式进行调用非常方便, 但是容器集群内的服务如何调用部署在集群外的中间件,比如外部的数据库服务,redis服务等。k8s的Service 可以通过独立配置Endpoints的方法,直接代理外部服务并支持代理多个端口。

实现方式

1.单独创建Endpoints(多个端口)

kind: Endpoints
apiVersion: v1
metadata:
  name: mysql-proxy
  namespace: mysql
subsets:
  - addresses:
      - ip: 192.168.1.2  # 外部服务的IP列表
      - ip: 192.168.1.3
    ports:
      - name: fuwu1         # 外部服务的端口列表,与Service中映射的端口名相对应
        port: 3306       
  - addresses:
      - ip: 192.168.2.5  # 外部服务的IP列表
      - ip: 192.168.2.6
    ports:
      - name: rw2         # 外部服务的端口列表,与Service中映射的端口名相对应
        port: 3306       

2.创建service,名称和Endpoints的名称保持一致

apiVersion: v1
kind: Service
metadata:
  name: mysql-proxy # 资源名称,必须与Endpoints中metadata.name相同
  namespace: mysql    # 资源命名空间,必须与Endpoints中metadata.namespace相同
spec:
  type: NodePort     # 如果为ClusterIP模式,配置为:type: ClusterIP
  ports:
    - port: 6446      # 集群内部使用的端口
      nodePort: 30306 # 如果NodePort模式才需要配置
      name: fuwu1        # 必须与Endpoints中定义的端口名相同
    - port: 6448      # 集群内部使用的端口
      nodePort: 30308 # 如果NodePort模式才需要配置
      name: fuwu2        # 必须与Endpoints中定义的端口名相同

重要提示:Endpoints 相当于配置 Service 的 targetPort,端口的名称必须相同。

三.针对单个端口反向代理到外部服务

---
apiVersion: v1
kind: Endpoints
metadata:
  name: oralce-db
  namespace: default
subsets:
- addresses:
  - ip: 10.10.20.3
  ports:
  - name: oracle
    port: 1521
    protocol: TCP

---
apiVersion: v1
kind: Service
metadata:
  name: oracle-db
  namespace: default
spec:
  ports:
  - name: oracle
    port: 1548
    protocol: TCP
    targetPort: 1521

四.反代外部域名: ExternalName

这种配置方式不支持IP作为终点,仅支持 dns名称。

apiVersion: v1
Kind: Service
metadata: 
  lables: 
    key: value
  name: svc-externalName
  Namespace: default
spec: 
#如果port端口为80,可不需要定义
  ports: 
  - name: http
    port: 80
    protocol: tcp
    targePort: 80
  sessionAffinity: None
  type: ExternalName
  externalName: www.baidu.com

通过访问service反向代理到www.baidu.com网站上。

  • 3
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

忍冬行者

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

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

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

打赏作者

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

抵扣说明:

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

余额充值