k8S通过代理将集群外的中间件引入集群内访问 —— 筑梦之路

背景说明

有部分中间件是跑在Kubernetes集群之外,我们希望通过service的方式来访问集群外的中间件,比如访问我们k8s集群外的elasticsearch集群。

ES节点本身又处在一个负载均衡IP:192.168.100.100 之后,但是代理的端口号是9202,非es默认的9200。

工作原理

k8s通过endpoint指向一个负载均衡IP和port,再创建一个相同name的service就可以把流量导向到es集群了。

Endpoints 是手动定义的后端服务的地址和端口。我们这里会把Endpoints 指向192.168.100.100,并且监听在端口 9202。这个 IP 和端口是外部负载均衡器的地址,它负责将流量转发到实际的后端服务(例如 Pod 的 9200 端口)。

Service 是 Kubernetes 中用于暴露服务的抽象资源。Service 的 port 是 9200,它在 k8s 集群内暴露了一个虚拟端口 9200。targetPort 是 9202,这表示流量会通过 Service 的 9200 端口进入,然后被转发到 Endpoints 中定义的 9202 端口

yaml文件

bash 复制代码
apiVersion: v1
kind: Endpoints
metadata:
  name: es-svc
  namespace: es
subsets:
- addresses:
  - ip: 192.168.100.100
  ports:
  - port: 9202
    protocol: TCP
---
apiVersion: v1
kind: Service
  name: es-svc
  namespace: es
spec:
  ports:
  - port: 9200
    protocol: TCP
    targetPort: 9202
  sessionAffinity: None
  type: ClusterIP

流量路径

  • 应用(例如集群内的其他 Pod)通过 es-svc.es.svc.cluster.local:9200 (或者 es-svc.es:9200)访问服务。

  • Service 接收到流量后,将流量转发到 Endpoints 中定义的 192.168.100.100:9202。

  • 负载均衡器接收到流量后,再将流量转发到实际的后端服务(例如 Pod 的 9200 端口)。

Service 的 port 和 targetPort

  • port: 9200:这是集群内暴露的端口,客户端通过这个端口访问服务。

  • targetPort: 9202:这是流量被转发到的端口,对应于 Endpoints 中定义的负载均衡器的端口。

Endpoints 的 port

  • port: 9202:这是负载均衡器的端口,它负责将流量转发到实际的后端服务。

  • type: ClusterIP:这是一个普通的 ClusterIP 类型的 Service,它会分配一个虚拟 IP 地址,客户端可以通过这个虚拟 IP 和端口 9200 访问服务。

  • sessionAffinity: None:这表示不启用会话亲和性,流量会被随机分配到后端服务。我们可以根据需求保留或删除这个字段。
相关推荐
高山莫衣3 小时前
Docker Desktop导致存储空间不足时的解决方案
docker·容器·eureka
鹏大师运维3 小时前
在银河麒麟V10 SP1上手动安装与配置高版本Docker的完整指南
linux·运维·docker·容器·麒麟·统信uos·中科方德
Ahlson3 小时前
【fnNAS】docker的nginx配置html
nginx·docker·容器·fnnas
LuckyLay3 小时前
Compose 常用命令详解——AI教你学Docker
docker·容器·eureka
moppol3 小时前
容器化 vs 虚拟机:什么时候该用 Docker?什么时候必须用 VM?
运维·docker·容器
没有名字的小羊4 小时前
7.可视化的docker界面——portainer
docker·容器·eureka
斯普信专业组5 小时前
K8s环境下基于Nginx WebDAV与TLS/SSL的文件上传下载部署指南
nginx·kubernetes·ssl
木头左5 小时前
Windows环境下Docker容器化的安装与设置指南
windows·docker·容器
&如歌的行板&6 小时前
如何在postman中动态请求k8s中的pod ip(基于nacos)
云原生·容器·kubernetes
泡泡_02247 小时前
云原生系统DOCKER中容器系统搭建
docker·云原生·容器