Rancher:外部服务连接K8S-MongoDB服务

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)是两个常用的概念,指的是负载均衡器在网络协议栈的不同层级上进行负载均衡的方式。
Rancher:外部服务连接K8S-MongoDB服务_第1张图片

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

三、部署容器化MongoDB

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

四、Load Banlancer of Service

创建LB-Service,类型是Load Balancer类型的ServiceRancher:外部服务连接K8S-MongoDB服务_第4张图片
Rancher:外部服务连接K8S-MongoDB服务_第5张图片
Rancher:外部服务连接K8S-MongoDB服务_第6张图片
关于Selectors的key、value应该从哪里取?可以前往mongodb服务的yaml配置中获取:
Rancher:外部服务连接K8S-MongoDB服务_第7张图片
从labels、selector配置项的子级中可以找到key、value:
Rancher:外部服务连接K8S-MongoDB服务_第8张图片

五、mongoDB验证连接

连接地址由两部分组成:{集群IP}:{port}
Rancher:外部服务连接K8S-MongoDB服务_第9张图片使用MongoDB Compass客户端连接:
Rancher:外部服务连接K8S-MongoDB服务_第10张图片

调试结果:连接成功Rancher:外部服务连接K8S-MongoDB服务_第11张图片

六、总结

在配置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实现。

你可能感兴趣的:(kubernetes,mongodb,容器)