#参考链接
[1] How access MongoDB in Kubernetes from outside the cluster
[2] cannot connect to mongo-express behind ingress k8s
[3] Defining a Service

一、前置条件

1、K8S集群支持7层负载均衡
2、Rancher容器管理平台
3、对K8S中的ServicePodingress 等概念有一定的了解

二、「Layer 4 」与「Layer 7」Load Balancing的区别

在负载均衡(Load Balancing)中,4层(Layer 4)和7层(Layer 7)是两个常用的概念,指的是负载均衡器在网络协议栈的不同层级上进行负载均衡的方式。
在这里插入图片描述

负载方式描述
Layer 4 Load Balancing4层负载均衡是在传输层(Transport Layer)进行负载均衡的一种方式。传输层负载均衡器通常根据源IP地址、目标IP地址、端口号等传输层的信息来进行负载均衡决策。这种负载均衡方式不关心传输层以上的应用层协议和数据内容,只根据传输层的信息进行转发和分发请求。
Layer 7 Load Balancing7负载均衡是在应用层(Application Layer)进行负载均衡的一种方式。应用层负载均衡器可以深入解析请求的应用层协议,如HTTP、HTTPS等,并根据请求的内容、URL、HTTP头部等更详细的信息来进行负载均衡决策。这种负载均衡方式可以实现更精细的请求转发和应用层的处理,比如基于URL路径的转发、基于请求内容的负载均衡等。

三、部署容器化MongoDB

方式一、mongodb.yaml配置信息涉及公司信息,此处不提供。可以参考Docker Hub的官网获取基本镜像进行部署:https://hub.docker.com/_/mongo/tags
在这里插入图片描述
方式二、 在本地构建拉取mongodb镜像,然后推送到阿里云ACR容器服务中心,在Rancher中配置aliyun鉴权配置后,可以直接拉取到aliyun的镜像进行部署在这里插入图片描述

四、Load Banlancer of Service

创建LB-Service,类型是Load Balancer类型的Service在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
关于Selectorskey、value应该从哪里取?可以前往mongodb服务的yaml配置中获取:
在这里插入图片描述
labelsselector配置项的子级中可以找到key、value
在这里插入图片描述

五、mongoDB验证连接

连接地址由两部分组成:{集群IP}:{port}
在这里插入图片描述使用MongoDB Compass客户端连接:
在这里插入图片描述

调试结果:连接成功在这里插入图片描述

六、总结

在配置mongoDB映射到公网的时候,起初是使用Ingress Controller的方式去实现的,通过Ingress的负载方式是专门用于HTTP协议的服务,例如:Springboot应用、Django应用,而mongoDB服务它用的是mongo协议(详见:https://stackoverflow.com/questions/57623894/how-access-mongodb-in-kubernetes-from-outside-the-cluster),所以使用MongoDB Compass客户端无法连接mongoDB服务。
最后是在Stackover Flow上看到了解释,转而调整方向使用Service实现。

Logo

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

更多推荐