Rancher:外部服务请求K8S-MongoDB服务

一、前置条件二、「Layer 4 」与「Layer 7」Load Balancing的区别三、部署容器化MongoDB四、Load Banlancer of Service五、mongoDB验证连接六、总结

#参考链接

[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中的Service 、Pod 、ingress 等概念有一定的了解

二、「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 关于Selectors的key、value应该从哪里取?可以前往mongodb服务的yaml配置中获取: 从labels、selector配置项的子级中可以找到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实现。

推荐链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: