如何在Kubernetes上创建MongoDB集群?

如何在Kubernetes上创建MongoDB集群?,mongodb,networking,docker,replication,kubernetes,Mongodb,Networking,Docker,Replication,Kubernetes,我想创建三台机器的MongoDB副本,它需要指定这些机器的IP地址吗?但他们遇到了一个吊舱,拥有一个动态IP。如果您试图指定DNS名称服务MongoDB,他说 副本集的新配置XXXXX中未描述任何主机 应用程序\u副本映射到此节点 如何为CK8S配置MongoDB副本 我使用k8s的DNS插件。 我尝试如下初始化集群: var config = { "_id" : "app_replica", "members" : [ { "_id" :

我想创建三台机器的MongoDB副本,它需要指定这些机器的IP地址吗?但他们遇到了一个吊舱,拥有一个动态IP。如果您试图指定DNS名称服务MongoDB,他说

副本集的新配置XXXXX中未描述任何主机 应用程序\u副本映射到此节点

如何为CK8S配置MongoDB副本

我使用k8s的DNS插件。 我尝试如下初始化集群:

var config = {
    "_id" : "app_replica",
    "members" : [
        {
            "_id" : 0,
            "host" : "mongodb-node-01"
        },
        {
            "_id" : 1,
            "host" : "mongodb-node-02"
        },
        {
            "_id" : 2,
            "host" : "mongodb-node-03",
            "arbiterOnly" : true
        }
    ]
}

rs.initiate(config)
配置服务:

配置复制控制器:


您需要设置多个部署和服务。看看这个动物园管理员的例子-

您不依赖节点/计算机IP。相反,您依赖于多个服务的稳定DNS名称。

看一看,这里有一个很棒的pdf教程

apiVersion: v1
kind: Service
metadata:
  name: "mongodb-node-01"
  labels:
    app: "mongodb-node-01"
spec:
  ports:
  - port: 27017
    targetPort: 27001
  selector:
    app: "mongodb-node-01"
apiVersion: v1
kind: ReplicationController
metadata:
  name: "mongodb-node-01"
  labels:
    app: "mongodb-node-01"
spec:
  replicas: 1
  selector:
    app: "mongodb-node-01"
  template:
    metadata:
      labels:
        app: "mongodb-node-01"
    spec:
      containers:
      - name: "mongodb-node-01"
        image: 192.168.0.139:5000/db/mongo
        command:
          - mongod
          - "--replSet"
          - "app_replica"
          - "--smallfiles"
          - "--noprealloc"
        env:
        - name: ENV
          value: "prod"
        ports:
        - containerPort: 27017
        volumeMounts:
        - name: mongo-persistent-storage
          mountPath: /data/db
          readOnly: false
      volumes:
      - name: mongo-persistent-storage
        hostPath:
          path: /data/mongo/mongodb-node-01
      nodeSelector:
        database: "true"
        mongodb01: "true"