我發現幾個頁面都有類似的問題,大多數答案告訴我們將我們的 IP 列入白名單。但是我允許從0.0.0.0/0地圖集中的任何地方訪問,并安裝了最新版本的mongoose(6.2.6 ; 它應該支持協議 (mongodb srv)。
當我使用npm start或什至從 dockerized 容器本地運行時,連接作業得很好。但是,當我部署到 k8s 集群時,我收到一條錯誤訊息:
querySrv ENOTFOUND _mongodb._tcp.mongodb-cluster0.zvnxj.mongodb.net
部署和服務檔案如下:
deployment.yml
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ns-my-workflow-api
name: my-workflow-api
spec:
replicas: 2
selector:
matchLabels:
app: my-workflow-api
template:
metadata:
labels:
app: my-workflow-api
spec:
containers:
- name: my-workflow-api
image: "myname/my-workflow-api:1.0.0"
ports:
- containerPort: 3000
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: "256m"
有以下service.yaml內容:
apiVersion: v1
kind: Service
metadata:
namespace: ns-my-workflow-api
name: my-workflow-api
spec:
selector:
app: my-workflow-api
type: LoadBalancer
ports:
- name: http
port: 8000
targetPort: 3000
protocol: TCP
有以下namespace.yaml內容:
apiVersion: v1
kind: Namespace
metadata:
name: ns-my-workflow-api
我也嘗試deployment.yaml了dns規則:
apiVersion: apps/v1
kind: Deployment
metadata:
namespace: ns-my-workflow-api
name: my-workflow-api
spec:
replicas: 2
selector:
matchLabels:
app: my-workflow-api
template:
metadata:
labels:
app: my-workflow-api
spec:
dnsPolicy: Default # <------ this rule
containers:
- name: my-workflow-api
image: "myname/my-workflow-api:1.0.0"
ports:
- containerPort: 3000
imagePullPolicy: IfNotPresent
resources:
limits:
cpu: "256m"
一旦我將連接 url 更改為使用2.0.14 or earlier,我就能夠連接。連接字串以mongodb://....
雖然我已經設法使用舊式連接字串使連接與解決方法一起作業,而且這似乎是某種 dns 決議問題,但如何使較新的協議能夠從集群內部連接到 atlas?提前致謝
uj5u.com熱心網友回復:
我能夠使用它來解決它minikube:
minikube start --driver=docker
似乎底層 oracle 的 virtualbox 驅動程式存在一些 dns 決議問題(可能還有一些配置和設定問題)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/446646.html
