需求
所有服务使用k8s部署,但是,mysql和redis这些中间件仍然使用物理机部署,导致配置文件中出现 很多IP地址加端口,这种配置一旦躲起来,有点繁琐;
解决方案
使用k8s的service代理外部方式,把ip地址和端口隐藏在service中统一配置,这样,配置文件中只需要引用service名字即可。
配置说明
apiVersion: v1
kind: Service
metadata:
managedFields:
- apiVersion: v1
manager: tke-apiserver
operation: Update
time: “2021-12-06T10:36:55Z”
name: mysql
namespace: default
selfLink: /api/v1/namespaces/default/services/mysql
spec:
clusterIP: None
ports: - name: mysql
port: 3306
protocol: TCP
targetPort: 3306
sessionAffinity: None
type: ClusterIP
status:
loadBalancer: {}
apiVersion: v1
kind: Endpoints
metadata:
name: mysql
namespace: default
subsets:
- addresses:
- ip: 10.5.5.5
ports: - name: mysql
port: 3306
protocol: TCP
- ip: 10.5.5.5
由于是外部服务,所以service对应的endpoints没有具体的服务,只是指定具体的ip和端口;
注意:endpoints名称和service名称需要保持一致;
生成service之后,在配置文件中可以直接引用: