如何从Kubernetes集群内部访问主机的本地主机 [英] How to access host's localhost from inside kubernetes cluster
本文介绍了如何从Kubernetes集群内部访问主机的本地主机的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
在此应用程序中,NodeJS Pod在Kubernetes内部运行,MongoDB本身作为本地主机位于host外部。
这确实不是很好的设计,但它只适用于开发环境。在生产中,将有一个单独的MongoDB服务器,因此可以选择在端点中拥有一个非环回IP,因此在生产中不会成为问题。
我已经考虑了以下开发环境选项
使用本地主机连接字符串连接到MongoDB,但它将引用Pod自己的本地主机,而不是主机的本地主机
使用无头服务,在端点提供本地主机IP和端口。但是,终结点不允许环回
建议是否有办法从集群内部(Pod/NodeJS应用程序)访问主机本地主机上的MongoDB数据库。
推荐答案
127.0.0.1
是localhost
(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-localhost,mongodb-localhost。
这篇关于如何从Kubernetes集群内部访问主机的本地主机的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文