我在 Minikube 上本地運行 MongoDB 的 statefulset 副本,我正在嘗試使用 Spring Mongo DB 連接到這個副本。
在我的配置屬性中:
spring.data.mongodb.uri=mongodb://mongod-0.mongo:27017/test
問題是,當我嘗試在本地部署應用程式時,我收到此錯誤:
com.mongodb.MongoSocketException: mongod-0.mongo: Name or service not known
看起來我無法豐富部署的副本,但我不知道為什么。
statefulset、服務和 Pod 運行正常。
以下是它們的配置:
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: mongod
spec:
serviceName: mongodb-service
replicas: 1
selector:
matchLabels:
role: mongo
template:
metadata:
labels:
role: mongo
environment: test
replicaset: MainRepSet
spec:
terminationGracePeriodSeconds: 10
containers:
- name: mongod-container
image: mongo
command:
- "mongod"
- "--bind_ip"
- "0.0.0.0"
- "--replSet"
- "MainRepSet"
resources:
requests:
cpu: 0.2
memory: 200Mi
ports:
- containerPort: 27017
volumeMounts:
- name: mongodb-persistent-storage-claim
mountPath: /data/db
volumeClaimTemplates:
- metadata:
name: mongodb-persistent-storage-claim
annotations:
volume.beta.kubernetes.io/storage-class: "standard"
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi
apiVersion: v1
kind: Service
metadata:
name: mongodb-service
labels:
name: mongo
spec:
ports:
- port: 27017
targetPort: 27017
clusterIP: None
selector:
role: mongo
有人知道如何將我的應用程式連接到副本嗎?
uj5u.com熱心網友回復:
這是由于您的服務名稱是:mongodb-service
您必須在所有地方的連接字串中始終使用服務名稱。
流量如下:
Service -> deployment or statefulsets -> PODs
現在您已經公開了服務名稱和埠(27017),K8s 會自動將服務名稱管理到內部 DNS 中,因此您可以使用名稱作為連接字串。
如果在同一個 K8s 集群上運行,您的應用程式將只能使用服務名稱連接。
示例:
spring.data.mongodb.uri=mongodb://mongo-service:27017/test
您也可以參考這篇文章。:https ://medium.com/geekculture/how-to-deploy-spring-boot-and-mongodb-to-kubernetes-minikube-71c92c273d5e
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/439923.html
標籤:mongodb 弹簧靴 Kubernetes 复制集 spring-mongodb
