用 ExternalName 创建通过域名提供的服务

1
2
3
4
5
6
7
apiVersion: v1
kind: Service
metadata:
  name: mysql-ali
spec:
  type: ExternalName
  externalName: rm-bp1xxxxxxxxxxxxxx.mysql.rds.aliyuncs.com

externalName 也可以填写 IP,但是不推荐。

转发 IP:port 形式,可以使用下面方法

手动创建 EndPoint 来绑定服务

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 服务例子
apiVersion: v1
kind: Service
metadata:
  name: registry-gcr
spec:
  type: ClusterIP
  ports:
    - port: 5000
      targetPort: 5000
      
---

# 手动创建 ep,如果已存在服务,需要修改指向外部服务,可以直接编辑 ep 配置,将 subsets 部分修改
apiVersion: v1
kind: Endpoints
metadata:
  name: registry-gcr
subsets:
- addresses:
  - ip: 10.200.0.101		# 集群外部 IP
  ports:
  - port: 5000
  

可以通过 kubectl get ep 确认前后地址是否符合预期。

Ref.

https://kubernetes.io/zh/docs/concepts/services-networking/service/#externalname

https://blog.opskumu.com/kubernetes-ext-service.html