暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

0197.K kubernetes创建及更改HPA

rundba 2023-02-21
696

 



1. StarRocks中配置自动水平扩缩容策略


如果需要配置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. 更改HPA


     

    2.1 查看HPA

      [root@k8s3-master ~]# kubectl get hpa -n starrocks 
      NAME REFERENCE TARGETS MINPODS MAXPODS REPLICAS AGE
      computenodegroup-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 starrocks
        horizontalpodautoscaler.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 AGE
          computenodegroup-sample ComputeNodeGroup/computenodegroup-sample <unknown>/30%, <unknown>/65% 1 10 4 3h18m

           



          3. 参考


          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/


          文章转载自rundba,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

          评论