我有N个状态集,每个状态集都通过nginx入口部署到它们唯一的主机上。
例如:
abcde.example.com - 有状态集 1
pqrstu.example.com - 有状态集 2
所以在这里我想在一段时间内(例如:3 天)没有人访问它时将我的状态集副本缩小到 0。 这在 Kubernetes 中可能吗?
HPA 可以应用于 Statefulsets,但有一个警告。您将能够通过以下方式自动缩放:
apiVersion: autoscaling/v1
kind: HorizontalPodAutoscaler
metadata:
name: YOUR_HPA_NAME
spec:
maxReplicas: 3
minReplicas: 1
scaleTargetRef:
apiVersion: apps/v1
kind: StatefulSet
name: YOUR_STATEFUL_SET_NAME
targetCPUUtilizationPercentage: 80
但是设置minReplicas: 0
会产生以下错误
The HorizontalPodAutoscaler "xxxxxx" is invalid: spec.minReplicas: Invalid value: 0: must be greater than 0
你可以试试KEDA。它处于早期阶段,但它是一种有前途的技术,前景非常光明(恕我直言)。
KEDA 允许对 事件驱动的 Kubernetes 工作负载。KEDA 作为 Kubernetes Metrics 服务器,并允许用户使用专用的自动缩放规则 Kubernetes 自定义资源定义。
https://github.com/kedacore/keda