如果需要配置CN自动扩缩策略,则可以修改cn.yaml配置文件
$your_code_path/starrocks-kubernetes-operator/examples/cn/cn.yaml。
例如,您需要基于 K8s 中 CN 的内存和 CPU 使用率实现弹性伸缩,则需要配置内存和 CPU 平均使用率为资源指标,触发弹性伸缩的阈值。弹性伸缩上限和下限即 pod 副本数量或者 CN 数量的上限和下限。
Kubernetes 还支持使用 behavior,根据业务场景定制扩缩容行为,实现快速扩容,缓慢缩容,禁用缩容等。
autoScalingPolicy: # auto-scaling policy of CN cluster
maxReplicas: 10 # CN数量的上限10
minReplicas: 1 # CN数量的下限1
hpaPolicy:
metrics: # 资源指标
- type: Resource
resource:
name: memory # 资源指标为内存
target:
averageUtilization: 30 # 触发水平扩缩容的阈值为30%。K8s 集群中 CN 内存使用率超过 30% 时,增加 CN 数量进行扩容,低于 30% 时,减少 CN 数量进行缩容。
type: Utilization
- type: Resource
resource: # 触发水平扩缩容的阈值为 60%。K8s 集群中 CN CPU 内存使用率超过 60% 时,增加 CN 数量进行扩容,低于 60% 时,减少 CN 数量进行缩容。
name: cpu
target:
averageUtilization: 60
type: Utilization
behavior: # 根据业务场景定制扩缩容行为,实现快速扩容,缓慢缩容,禁用缩容等。
scaleUp:
policies:
- type: Pods
value: 1
periodSeconds: 10
scaleDown:
selectPolicy: Disabled
部分配置说明如下:
自动水平扩缩容的更多配置,请参考 Pod 水平自动扩缩。
水平扩缩时 CN 数量的上限和下限。
# CN 数量的上限 10
maxReplicas: 10
# CN 数量的下限 1
minReplicas: 1
触发水平扩缩的阈值。
# 触发水平扩缩容的阈值,例如资源指标为 K8s 集群中 CN CPU 使用率。当 CPU 使用率超过 60% 时,增加 CN 数量进行扩容,低于 60% 时,减少 CN 数量进行缩容。
- type: Resource
resource:
name: cpu
target:
averageUtilization: 60
生效自动扩缩策略
kubectl apply -f cn/cn.yaml
2.1 查看HPA
[root@k8s3-master ~]# kubectl get hpa -n starrocksNAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEcomputenodegroup-sample ComputeNodeGroup/computenodegroup-sample <unknown>/30%, <unknown>/60% 1 10 4 3h6m
2.2 更改HPA(更改单个或多个值)
方法一(使用原有的yaml文件进行配置):
vim cn.yaml #更改HPA内容,将CPU使用达到65%触发,扩容
...
averageUtilization: 65
更改扩缩策略
kubectl apply -f cn/cn.yaml
方法二(使用现有的HPA名称更改):
[root@k8s3-master ~]# kubectl edit hpa computenodegroup-sample -n starrockshorizontalpodautoscaler.autoscaling/computenodegroup-sample edited...averageUtilization: 65 # 更改阈值60为65,保存即可。方法三(非交互式批处理):kubectl patch hpa $the_hpa_name -p '{"spec":{"minReplicas": 1}}'。
2.3 更改后查看
[root@k8s3-master ~]# kubectl get hpa -n starrocks #阈值已更改为65%NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGEcomputenodegroup-sample ComputeNodeGroup/computenodegroup-sample <unknown>/30%, <unknown>/65% 1 10 4 3h18m
https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale/
https://kubernetes.io/zh-cn/docs/tasks/run-application/horizontal-pod-autoscale-walkthrough/




