有时候K8s里的Pod需要访问外部资源,比如访问外部的MySQL服务,就可以定义一个对外资源的Ednpoint,然后再定义一个Service,就可以让K8s里面的其它Pod访问了。

下面针对Mysql进行示例说明:

1、定义Yaml

$ vim testep.yaml

apiVersion: v1
kind: Endpoints
metadata:
  name: external-mysql
subsets:
  - addresses:
    - ip: 192.168.1.34
    ports:
      - port: 3306

---
apiVersion: v1
kind: Service  ##注意,该service里并不需要定义selector,只要Service name和Endpoint name保持一致即可
metadata:
  name: external-mysql
spec:
  ports:
    - port: 3306

2、应用YAML文件

$ k apply -f testep.yaml

3、参考Centos8安装Mysql8 在192.168.1.34主机上安装mysql8

4、测试

$ k get ep,svc

NAME                       ENDPOINTS                                               AGE
endpoints/external-mysql   192.168.1.34:3306                                       65s

NAME                     TYPE        CLUSTER-IP     EXTERNAL-IP   PORT(S)    AGE
service/external-mysql   ClusterIP   10.0.154.239   <none>        3306/TCP   65s