在 Kubernetes 集群中,内部服务可通过 Service-name 进行访问。那么,对于集群外的服务,Pod 应该如何通过 Service 进行访问呢?一起来看看吧!
- 此处举例以 Pod 访问集群外部的 Mysql 数据库
1、创建 Service
# 创建 Service 时不指定 Selector
# vi external-mysql-service.yaml
apiVersion: v1
kind: Service
metadata:name: external-mysqlnamespace: mysql
spec:ports:- port: 3306 # 服务公开的端口targetPort: 3306 # 同上protocol: TCPname: httptype: ClusterIP
# 应用
kubectl apply -f external-mysql-service.yaml
2、创建 Endpoint
# 手动创建与 Service 同名的 Endpoint
# vi external-mysql-ep.yaml
apiVersion: v1
kind: Endpoints
metadata:name: external-mysqlnamespace: mysql
subsets:- addresses:- ip: 172.16.12.214 # 外部服务的 IP 地址ports:- port: 3306 # 与 Service 的 port 一致name: http # 与 Service 的 port name 一致
# 应用
kubectl apply -f external-mysql-ep.yam
3、测试配置成功
# pod 中使用原始地址可登录数据库
mysql -h x.x.x.x -u root -p
# pod 中使用 service-name 测试正常登录数据库
mysql -h external-mysql -u root -p