水平自动扩缩容-HPA
指标获取
- metrics service,可以根据资源使用率cpu、memory,来进行扩容或缩容。
- custom metrics server, 可以通过监控获取的其他指标(每秒请求量等)来进行自动的扩容或缩容。
- 自定义指标,可以自定义一些指标来进行扩缩容。
算法
- 1、pod的水平扩缩,是根据当前指标和期望指标来计算扩缩比列的。如果计算出的扩缩比例接近 1.0 (根据
--horizontal-pod-autoscaler-tolerance参数全局配置的容忍值,默认为 0.1), 将会放弃本次扩缩。 - 2、当设置多个指标事件,会选择幅度最大的扩缩比列
期望的副本数=当前副本数*(当前指标/期望指标)
图:自动扩缩容工作流程图
扩缩容策略
- 扩缩容的速率:每60秒,扩缩容6个pod;每60秒,扩缩容比列6%;
spec:
behavior:
scaleDown:
policies:
- type: Pods
value: 6
periodSeconds: 60
- type: Percent
value: 6
periodSeconds: 60
- 稳定窗口:自动扩缩算法使用稳定窗口来考虑过去计算的期望状态,以防止扩缩;如:过去 5 分钟的所有期望状态都会被考虑。
spec:
scaleDown:
stabilizationWindowSeconds: 300
- 禁用缩容:
selectPolicy的值Disabled会关闭对给定方向的缩容。
spec:
behavior:
scaleDown:
selectPolicy: Disabled
示例一:当cpu平均使用超过80%,则自动扩容,最少一个Pod,最多10个。
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: hy-risk-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: hy-risk
minReplicas: 1
maxReplicas: 10
metrics:
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 80
垂直自动扩缩容-VPA
- 垂直扩缩容:是一种调整pod分配资源的方式,来进行扩缩容的方法。
集群节点扩缩容
- 节点扩缩容:缩容是一件比较麻烦的事件,但目前多数的云厂商的服务都可以支持节点的自动扩缩容。通过对节点某些指标进行监控来判断是否需要进行扩容,缩容等。