我已经设置了Percona MongoDB出口商,当我试图为我的MongDB实例刮取度量标准时,我得到了一个错误:
An error has occurred while connecting to MongoDB:
cannot connect to MongoDB: server selection error: server selection timeout, current topology: { Type: Unknown, Servers: [{ Addr: mongodb-headless-service.labs.svc.cluster.local:27017, Type: Unknown, Last error: connection() error occured during connection handshake: dial tcp: lookup mongodb-headless-service.svc.cluster.local on 159.XX.XX.XX:XX: no such host }, ] }MongoDB和Percona导出程序都部署在Kubernetes上的相同的名称空间中,我创建了一个用户(在管理级别)来提取度量:
db.createUser({ user: "promt", pwd: "abc123", roles: [ { role: "clusterMonitor", db: "admin" },{ role: "read", db: "local" } ], mechanisms:["SCRAM-SHA-1"]})要验证出口商是否能够从我正在使用的MongoDB实例中获取任何度量标准,请执行以下操作:
kubectl -n labs port-forward service/mongodb-exporter 9216我可以进入http://localhost:9216的出口商
在Percona MongoDB出口商部署中,我将MongoDB指定如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-exporter
namespace: labs
spec:
replicas: 1
selector:
matchLabels:
app: mongodb-exporter
template:
metadata:
labels:
app: mongodb-exporter
spec:
containers:
- name: mongodb-exporter
image: percona/mongodb_exporter:0.30
imagePullPolicy: "IfNotPresent"
args:
- "--mongodb.direct-connect=false"
- "--mongodb.uri=mongodb://promt:abc123@mongo-headless-service.svc.cluster.local/admin"
ports:
- name: metrics
containerPort: 9216
resources:
requests:
memory: 128Mi
cpu: 250m我尝试了许多选项,但它们都导致了相同的错误
--mongodb.uri=mongodb://promt:abc123@mongo-single-clusterip.labs.svc.cluster.local/admin
对于所有这些选项,我还尝试了添加ssl选项和命名空间的变体,但这在所有情况下都失败了,因为相同的错误都是。
我的MongoDB实例是一个独立的部署,定义如下:
apiVersion: apps/v1
kind: Deployment
metadata:
name: mongodb-deployment
namespace: labs
labels:
app: mongodb
spec:
replicas: 1
selector:
matchLabels:
app: mongodb
template:
metadata:
labels:
app: mongodb
spec:
containers:
- name: mongodb
image: docker.io/bitnami/mongodb:4.4.6-debian-10-r0
imagePullPolicy: "IfNotPresent"
securityContext:
runAsNonRoot: true
runAsUser: 1001
ports:
- containerPort: 27017
env:
- name: MONGO_INITDB_ROOT_USERNAME
valueFrom:
secretKeyRef:
name: mongodb-secret-amended
key: mongo-root-username
- name: MONGO_INITDB_ROOT_PASSWORD
valueFrom:
secretKeyRef:
name: mongodb-secret-amended
key: mongo-root-password
volumeMounts:
- mountPath: /data/db
name: mongodb-vol
volumes:
- name: mongodb-vol
persistentVolumeClaim:
claimName: mongodb-claim
---
apiVersion: v1
kind: Service
metadata:
name: mongodb-service
namespace: labs
spec:
type: NodePort
selector:
app: mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017
---
apiVersion: v1
kind: Service
metadata:
name: mongodb-headless-service
namespace: labs
spec:
selector:
app: mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017
---
apiVersion: v1
kind: Service
metadata:
name: mongo-single-clusterip
namespace: labs
spec:
type: ClusterIP
selector:
app: mongodb
ports:
- protocol: TCP
port: 27017
targetPort: 27017我遗漏了什么?
发布于 2022-09-05 09:28:05
在返回的错误消息中说明了原因:
error occured during connection handshake: dial tcp: lookup mongodb-headless-service.svc.cluster.local on 159.XX.XX.XX:XX: no such host
此FQDN的DNS查找:mongodb-headless-service.svc.cluster.local失败。
您可以通过这里的步骤来确认您的DNS是否已正确设置:https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/
发布于 2022-09-05 11:43:13
您需要在配置中将mongoDB URI更改为mongodb-headless-service.labs.svc.cluster.local &它应该可以很好地工作。
https://stackoverflow.com/questions/72547682
复制相似问题