我在kubernetes中使用部署+服务托管NodeJS应用程序,并在同一个kubernetes集群中提供了自己的部署+服务的mongo。
我的问题是我如何将mongo ip作为:DB_URL=mongo:27017/test
通过mongo的kubernetes env到nodeJS app ENV获取我的nodeJS env文件?
我认为mongo的服务IP不是常数,可能会改变。
答案 0 :(得分:1)
您可以这样访问服务主机/端口:
this.url = 'mongodb://'
+ process.env.MYAPP_TRANSACTIONS_MONGO_SERVICE_HOST + ':'
+ process.env.MYAPP_TRANSACTIONS_MONGO_SERVICE_PORT;
在文档here
中阅读更多内容您可以使用以下命令打印给定服务的env变量:
kubectl exec myapp-deployment-3599435869-fn70t -- printenv | grep SERVICE
答案 1 :(得分:0)
您不能将您的连接建立在POD IP上。您应该坚持使用服务(最好使用服务名称)或考虑StatefulSet,以便能够始终以mongo-1或类似的方式访问您的mongo 1st pod
答案 2 :(得分:0)
一种方法是将自己的群集IP地址指定为服务创建请求的一部分。为此,请设置spec.clusterIP
字段。用户选择的IP地址必须是有效的IP地址,并且在由API服务器的标志指定的service-cluster-ip-range
CIDR范围内
另一个方法是在整个群集中启用DNS,然后所有Pod应该能够自动对服务进行名称解析。
例如,如果您在Kubernetes命名空间"my-service"
中有一个名为"my-ns"
的服务,则会创建"my-service.my-ns"
的DNS记录。存在于"my-ns"
命名空间中的窗格应该能够通过简单地对"my-service"
进行名称查找来找到它。存在于其他命名空间中的窗格必须将名称限定为"my-service.my-ns"
。这些名称查找的结果是群集IP。
https://kubernetes.io/docs/concepts/services-networking/service/#discovering-services