集群内部访问外部数据库或者中间件一般采用endpoints与service关联方式映射。
#en配置
[root@k8s-master-01 k8s]# more mysql-endpoints.yaml
apiVersion: v1
kind: Endpoints
metadata:
name: mysql-dev
namespace: default
subsets:
- addresses:
- ip: 192.168.71.129 #外部数据库地址
ports:
- port: 3306
#service配置
[root@k8s-master-01 k8s]# more mysql-service.yaml
apiVersion: v1
kind: Service
metadata:
name: mysql-dev
namespace: default
spec:
clusterIP: 10.96.2.128 #固定clusterIP
ports:
- port: 3306
targetPort: 3306
protocol: TCP
#创建testpod测试,需要在同一ns
[root@k8s-master-01 k8s]# kubectl run test-pod1 -it --image=busybox:1.28 --image-pull-policy=IfNotPresent
#通过svc的clusterIP访问数据库,以下提示说明数据库授权后可以正常连接。
/ # telnet 10.96.2.128 3306
GHost '192.168.71.134' is not allowed to connect to this MySQL serverConnection closed by foreign host