需求

所有服务使用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

由于是外部服务,所以service对应的endpoints没有具体的服务,只是指定具体的ip和端口;
注意:endpoints名称和service名称需要保持一致;

生成service之后,在配置文件中可以直接引用:
在这里插入图片描述

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐