有时候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