Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes MongoDB自动标定_Mongodb_Kubernetes_Kubernetes Statefulset - Fatal编程技术网

Kubernetes MongoDB自动标定

Kubernetes MongoDB自动标定,mongodb,kubernetes,kubernetes-statefulset,Mongodb,Kubernetes,Kubernetes Statefulset,我已经在我的k8s集群中部署了一个有状态的mongodb设置。每次缩放新pod时,我都需要使用rs.add()命令从mongodb控制台添加pod。有什么办法可以协调吗?。还有,我如何在我的k8s群集之外公开我的mongodb服务..将服务类型更改为nodeport对我不起作用..请帮助 下面给出了我用来部署mongodb的有状态yaml文件 apiVersion: v1 kind: Service metadata: name: mongo labels: name: mong

我已经在我的k8s集群中部署了一个有状态的mongodb设置。每次缩放新pod时,我都需要使用rs.add()命令从mongodb控制台添加pod。有什么办法可以协调吗?。还有,我如何在我的k8s群集之外公开我的mongodb服务..将服务类型更改为nodeport对我不起作用..请帮助

下面给出了我用来部署mongodb的有状态yaml文件

apiVersion: v1
kind: Service
metadata:
  name: mongo
  labels:
    name: mongo
spec:
  ports:
  - port: 27017
    targetPort: 27017
  clusterIP: None
  selector:
    role: mongo
---
apiVersion: apps/v1beta1
kind: StatefulSet
metadata:
  name: mongo
spec:
  serviceName: "mongo"
  replicas: 3
  template:
    metadata:
      labels:
        role: mongo
        environment: test
    spec:
      terminationGracePeriodSeconds: 10
      containers:
        - name: mongo
          image: mongo:3.4
          command:
            - mongod
            - "--replSet"
            - rs0
            - "--bind_ip"
            - 0.0.0.0
            - "--smallfiles"
            - "--noprealloc"
          ports:
            - containerPort: 27017
          volumeMounts:
            - name: mongo-persistent-storage
              mountPath: /data/db
        - name: mongo-sidecar
          image: cvallance/mongo-k8s-sidecar
          env:
            - name: MONGO_SIDECAR_POD_LABELS
              value: "role=mongo,environment=test"
  volumeClaimTemplates:
  - metadata:
      name: mongo-persistent-storage
      annotations:
        volume.beta.kubernetes.io/storage-class: "managed-nfs-storage"
    spec:
      accessModes: [ "ReadWriteOnce" ]
      resources:
        requests:
          storage: 2Gi

当您使用Kubernetes(容器编排平台)时,您总是可以使用
$kubectl scale deployment[deployment_name]--repplicats=X来扩展部署/状态集
或
$kubectl scale statefulset[statefulset name]--副本=X
其中X表示您希望在部署中总共有多少个吊舱。它将根据您的部署设置自动创建吊舱。 如果您不想手动创建它,您应该阅读Kubernetes autoscaling-

关于在Kubernetes之外公开应用程序,您必须使用
服务
。可以找到更多信息。我不确定
NodePort
在这种情况下是否正确。您可以查看描述

不过,我对MongoDB和Kubernetes不是很熟悉,但这些教程可能对您有所帮助。


希望能有所帮助。

正如@PjoterS建议的那样,您可以使用HPA扩展kubernetes内部的mongoDB副本或POD

但是,有了它,您还必须注意卷的装载。还要注意副本之间的数据延迟

我建议最好先检查mongo db it self和configure提供的本机伸缩集群选项。您可以为mongoDB使用一些运算符 比如:
https://docs.mongodb.com/kubernetes-operator/master/tutorial/install-k8s-operator/

否则,如果当前配置遵循本机集群,并且支持在replca之间扩展副本和数据副本,则可以选择HPA


您还可以查看以下内容:
https://medium.com/faun/scaling-mongodb-on-kubernetes-32e446c16b82

您能否详细说明HPA如何解决在每个新节点上运行
rs.add()
命令的问题?