【问题标题】:How to auto scale helm chart statefulsets如何自动缩放舵图状态集
【发布时间】:2019-09-09 19:53:49
【问题描述】:

我已经使用 helm chart 安装了 rabbitmq 集群。 Rabbitmq 使用 statefulsets 那么有没有办法自动扩展呢?

还有一个问题,如何使用 PVC 进行自动扩展 (HPA) 部署?

【问题讨论】:

    标签: docker kubernetes docker-compose kubernetes-helm kubernetes-pod


    【解决方案1】:

    StatefulSets 可以通过 HPA 自动缩放:

    apiVersion: autoscaling/v2beta1
    kind: HorizontalPodAutoscaler
    metadata:
      annotations:
      name: some-service
    spec:
      maxReplicas: 4
      metrics:
      - resource:
          name: memory
          targetAverageUtilization: 80
        type: Resource
      - resource:
          name: cpu
          targetAverageUtilization: 80
        type: Resource
      minReplicas: 2
      scaleTargetRef:
        apiVersion: apps/v1
        kind: StatefulSet
        name: some-service
    

    关于 PVC 和 StatefulSets 和 HPA - 我不确定,但我认为这取决于 PVC 的 StorageClass 的 reclaimPolicy。只要确保您的 StorageClass 定义中有 reclaimPolicy: Retain 即可。有了它,您应该保留有关缩放事件的数据。

    如果您的意思是具有 HPA 和 PVC 的部署 - 它应该可以工作,但请始终记住,如果您有多个具有一个共享 PVC 的副本 - 所有副本都会尝试挂载它。如果 PVC 是 ReadWriteMany - 应该没有问题。如果是 ReadWriteOnce - 那么所有副本都将安排在一个节点上。如果节点上没有足够的资源来容纳所有副本 - 您将永远获得一些处于 Pending 状态的 Pod。

    【讨论】:

    • 非常感谢您的回答,所以如果由于内存和 cpu HPA 增加了 pod 的数量......如果 pvc 附加了它是如何工作的,那么使用 statefulsets
    • StatefulSets 与 Deployments 有点不同——它们可以使用 volumeClaimTemplates。这意味着 StatefulSet 的每个副本都有自己的 PVC。在这里阅读更多:kubernetes.io/docs/tutorials/stateful-application/…
    • 谢谢你,我绝对明白了,再次感谢你写出清晰易懂的定义。
    • 有没有办法自动缩放舵图?就像我使用 rabbitmq helm chart 创建 3 个 statefulsets pod。每个都有自己的 PVC
    • 是的,就像我们可以在整个舵图或任何东西上实施直接 HPA 的任何选项
    猜你喜欢
    • 2021-06-17
    • 2021-08-22
    • 2017-12-13
    • 2012-08-05
    • 2015-02-04
    • 2018-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多