简介

集群内的应用有时候需要调用外部的服务,我们知道集群内部服务调用都是通过 Service 互相访问,那么针对外部的服务是否也可以保持统一使用 Service 呢?答案是肯定的,通过 Service 访问外部服务,除了方式统一以外,还能带来其他好处。如配置统一,不同环境(空间)相同应用访问外部不同环境的数据库,可以通过 Service 映射保持两边配置统一,达到不同空间应用通过相同 Service Name 访问不同的外部数据库。

配置文件

mysql-180.yaml

apiVersion: v1
kind: Service
metadata:
  name: mysql
spec:
  type: LoadBalancer
  ports: 
  - port: 40010
    targetPort: 40010
    
---

apiVersion: v1
kind: Endpoints
metadata:
 name: mysql
subsets:
 - addresses:
   - ip: 45.77.30.73
   ports:
   - port: 40010

解释

映射外部服务需要知道外部服务的地址和端口并为其创建endpoint资源,然后service不需要显示绑定label,只需要指定代理的端口就行。上述是讲45.77.30.73:40010的mysql服务映射到本集群的随机端口。