mongodb - Kubernetes MongoDB 自动缩放

标签 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: 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] --reppplicas=X 来扩展您的 deployment/statefulset 或 $ kubectl scale statefulset [statefulset-name] --replicas=X 其中 X 表示您希望部署的 Pod 总数。它将根据您的部署设置自动创建 Pod。 如果您不想手动创建它,您应该阅读有关 Kubernetes 自动缩放的内容 - HPA .

关于在 Kubernetes 之外公开应用程序,您必须使用 Service 来完成。更多信息可查询here 。我不确定 NodePort 在这种情况下是否正确。您可以查看ServiceType描述。

但是我对 MongoDB 和 Kubernetes 不太熟悉,但也许这些教程对你有帮助。 Scaling MongoDB on Kubernetes , Running MongoDB as a Microservice with Docker and Kubernetes , Running MongoDB on Kubernetes with StatefulSets .

希望能有所帮助。

关于mongodb - Kubernetes MongoDB 自动缩放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57993664/

相关文章:

mongodb - 坚持和冲洗 - Doctrine 和 MongoDB

kubernetes - 创建角色以查看集群事件

amazon-ec2 - 如何在 AWS 上自动扩展 Kubernetes 工作节点

kubernetes - 使用 helm 升级(部署 + PVC)到 Statefulset

kubernetes - Kubernetes 上无状态应用程序的 StatefulSets 与 Deployments

mongodb - 如何在mongodb中转换日期格式

node.js - 尽可能快地在 MongoDB 中加载一百万条记录

mongodb - Mongo 删除数组索引

kubernetes - 准备情况探针和Apache Common Http Client

kubernetes - 如何在Google Cloud Platform上使用ClusterIP None公开StatefulSet服务?