您好,我无法从kubernetes集群作为kubernetes集群外部的服务连接到mongo atlas数据库。
这是我遵循的步骤。
在我的nodejs代码中,使用dbUri ='mongodb:// username:password'+ process.env.MONGO_URL +'/数据库名称'
kind: Service
apiVersion: v1
metadata:
name: mongo-cluster-ip-service
spec:
type: ClusterIP
ports:
- port: 27017
targetPort: 27017
kind: Endpoints
apiVersion: v1
metadata:
name: mongo-cluster-ip-service
subsets:
- addresses:
- ip: 35.187.27.116
ports:
- port: 27017
- addresses:
- ip: 35.241.213.79
ports:
- port: 27017
- addresses:
- ip: 104.155.120.154
ports:
- port: 27017
apiVersion: apps/v1
kind: Deployment
metadata:
name: user-reg-auth-deployment
spec:
replicas: 3
selector:
matchLabels:
app: user-reg-auth
template:
metadata:
labels:
app: user-reg-auth
spec:
imagePullSecrets:
- name: ofinowregcred # this is a manually applied secret to the cluster using kubectl create secret
containers:
- name: user-reg-auth
image: ofinow/user-reg-auth
ports:
- containerPort: 8080
# resources:
# requests:
# memory: "64Mi"
# cpu: "250m"
# limits:
# memory: "128Mi"
# cpu: "500m"
env:
- name: MONGO_URL
value: mongo-cluster-ip-service
现在问题是mongo-cluster-ip-service无法解决,所以我无法连接。我恳请帮忙
我遵循了Google最佳做法指南 https://cloud.google.com/blog/products/gcp/kubernetes-best-practices-mapping-external-services
答案 0 :(得分:0)
尝试其中任何一种;
解决方案A
将Kubernetes集群的端点添加到MongoDB网络访问IP白名单。
在您的k8s pod(或部署)清单的pod规范下,添加一个 dnsPolicy 字段,其值设置为 Default 。因此,您的Pods(基本上是您的容器)将通过主节点的名称解析配置连接到mongo。
解决方案B
将k8s集群中的所有节点端点添加到MongoDB网络访问IP白名单。
在您的k8s pod(或部署)清单的pod规范下,添加一个 dnsPolicy 字段,其值设置为 ClusterFirstWithHostNet 。由于Pod与您的主机网络一起运行,因此它们可以访问监听localhost的服务。