一、原理解析
在k8s集群中我們通過創建service去訪問對應pod內的服務,而在創建service的時候會同時創建一個與service同名的endpoints對象,endpoints與pod實際建立映射
service是通過訪問同名的endpoints來訪問pod的。所以我們也可以通過這種方法去訪問外部服務,以避免在代碼中暴露外部服務的實際訪問地址。
二、創建Endpoints
[root@localhost ~]# cat >> mysql-endpoints.yaml <<EOF apiVersion: v1 kind: Endpoints metadata: name: mysql-master-svc namespace: default subsets: - addresses: - ip: 127.0.0.1 ports: - port: 3306 protocol: TCP
[root@localhost ~]# kubectl apply -f mysql-endpoints.yaml
注:addresses處的ip和port請根據實際的數據庫地址和端口進行修改
三、創建service
[root@localhost ~]# cat >> mysql-service.yaml <<EOF apiVersion: v1 kind: Service metadata: labels: app: mysql-master-svc name: mysql-master-svc namespace: default spec: ports: - port: 3306 protocol: TCP targetPort: 3306 sessionAffinity: None type: ClusterIP
[root@localhost ~]# kubectl apply -f mysql-service.yaml