一、原理解析
在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