docker - 如何自动缩放 Helm chart 状态集

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

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

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

最佳答案

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。

关于docker - 如何自动缩放 Helm chart 状态集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55763612/

相关文章:

linux - 授予非root用户kubernetes中kubectl的访问权限

docker - 可以在kubernetes容器中托管两个Web服务吗?

python - 查找Docker镜像的依赖项

docker - 是否可以在 Azure DevOps Pipeline 中运行 GitHub Workflow Actions?

elasticsearch - 如何在Kubernetes上编辑path.data和path.log以进行Elasticsearch?

docker - 在 compose 中取消设置环境变量

node.js - 代理套接字 io 无法与 docker 上的 nginx、node 连接

kubernetes - 连播失败,失败原因为FailedSync,无任何解释

spring-boot - 从docker-compose获取端口8080已在使用中错误

MYSQL_ROOT_PASSWORD_FILE 正在读取 '/run/secrets/mypassword' 作为密码而不是路径