如何从Kubernetes集群内部访问主机的本地主机 [英] How to access host's localhost from inside kubernetes cluster

查看:7
本文介绍了如何从Kubernetes集群内部访问主机的本地主机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在此应用程序中,NodeJS Pod在Kubernetes内部运行,MongoDB本身作为本地主机位于host外部。

这确实不是很好的设计,但它只适用于开发环境。在生产中,将有一个单独的MongoDB服务器,因此可以选择在端点中拥有一个非环回IP,因此在生产中不会成为问题。

我已经考虑了以下开发环境选项

  1. 使用本地主机连接字符串连接到MongoDB,但它将引用Pod自己的本地主机,而不是主机的本地主机

  2. 使用无头服务,在端点提供本地主机IP和端口。但是,终结点不允许环回

建议是否有办法从集群内部(Pod/NodeJS应用程序)访问主机本地主机上的MongoDB数据库。

推荐答案

127.0.0.1localhost(lo0)接口IP地址。主机、节点和Pod具有自己的本地主机接口,并且它们彼此不连接。

您的mongodb正在主机上运行,无法从群集Pod内部或从VM内部使用localhost(或其IP范围)进行访问。

在您的案例中,请在集群内为其创建headless service和终结点:

您的mongodb-service.yaml文件应如下所示:

apiVersion: v1
kind: Service
metadata:
   name: mongodb-service
spec:
   clusterIP: None
   ports:
   - protocol: TCP
     port: <multipass-port-you-are-using>
     targetPort: <multipass-port-you-are-using>
   selector:  
     name:  example
   type: ClusterIP
---
apiVersion: v1
kind: Endpoints
metadata:
  name: mongodb-service
subsets:
  - addresses:
    - ip: 10.62.176.1
    ports:
      - port: <multipass-port-you-are-using>

我已经添加了您在评论区提到的IP。

创建服务和终结点后,您可以使用此群集的任何Pod内的mongodb-service名称和端口<multipass-port-you-are-using>作为目标点。

看一下:mysql-localhostmongodb-localhost

这篇关于如何从Kubernetes集群内部访问主机的本地主机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆