如何自动缩放 helm chart statefulsets
How to auto scale helm chart statefulsets
我已经使用 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 - 那么所有副本将被安排在一个节点上。如果节点上没有足够的资源来容纳所有副本 - 你会得到一些 pods 永远处于 Pending 状态。
我已经使用 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 - 那么所有副本将被安排在一个节点上。如果节点上没有足够的资源来容纳所有副本 - 你会得到一些 pods 永远处于 Pending 状态。