在 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