我在kubernetes上配置了一个有两个副本的mongodb:* mongo-0* mongo-1,我还有一个有mongo-express* mongo-express的pod。
问题是,我想把mongo-express连接到主Mongo replica上,但kubernetes在做负载均衡,所以,有些时候它会连接成主,有些时候会连接成副。
如何解决这个问题?
谅谅
这意味着你应该有3个服务为3个pod.通过一个服务,你不能做到这一点。
你可以创建MongoDB的集群。但对于MongoDB-express副本,你可以创建服务,并将其连接到其他副本可能不会工作。
如果你用 helm 安装你的 mongodb 群集,mongodb 图表是以这种方式模板化的,它允许你在服务级别定义中选择它应该针对哪个特定的副本--primary 或 secondary。只是要记住,它不允许用户自定义图表值,所以需要 "硬 "修改。至少它应该给你一个想法,如何轻松实现你的需求。
这里是示例清单文件。
# Source: mongodb/templates/svc-primary-rs.yaml
apiVersion: v1
kind: Service
metadata:
name: my-mongo-mongodb
labels:
app: mongodb
chart: mongodb-5.3.0
release: "my-mongo"
heritage: "Tiller"
spec:
type: ClusterIP
ports:
- name: mongodb
port: 27017
targetPort: mongodb
selector:
app: mongodb
release: "my-mongo"
component: secondary <---