云容器引擎

容器水平伸缩

2025-01-10 03:26:03

云容器引擎CCSE支持在控制台界面上快速创建支持HPA的应用,实现容器资源的弹性伸缩。您也可通过定义HPA(Horizontal Pod Autoscaling)的YAML来进行配置。

背景信息

从v1.18开始,K8s v2beta2 API允许通过HPA的behavior字段配置扩缩行为。 在behavior字段中的scaleUp和scaleDown分别指定扩容和缩容行为。当您在使用HPA时,希望只进行扩容或者只进行缩容的Pod伸缩,则可以通过开启指标伸缩,单击禁止缩容或者禁止扩容来实现。

默认值:均不禁止。

禁止扩容:selectPolicy的值Disabled会关闭给定方向的扩容。因此使用以下策略,将会阻止扩容。

behavior:

    scaleUp:

    selectPolicy: Disabled

禁用缩容:selectPolicy的值Disabled会关闭给定方向的缩容。因此使用以下策略,将会阻止缩容。

behavior:

    scaleDown:

    selectPolicy: Disabled

 通过容器服务控制台创建HPA应用

天翼云云容器引擎已经集成了HPA,您可以简便地通过容器服务控制台进行创建。您可以在创建应用的时候创建HPA,也可以在已有应用的基础上开启HPA。

方式一:在创建应用过程中,开启HPA

l  登录云容器引擎CCSE管理控制台。

l  在控制台左侧导航栏中,单击集群。

l  在集群列表页面中,单击目标集群名称。

l  在集群管理页左侧导航栏中,选择工作负载 > 无状态。

l  点击左上角的新增按钮。

l  填写基本信息,在实例数量中选择自动伸缩,设置伸缩的条件和配置。

n  Resource规则,支持CPU和内存,支持百分比和平均值等计值方式。

n  Pod规则,支持Pod指标对象,支持平均值的计值方式,支持指定指标。

n  Object规则,支持Service指标对象,支持阈值的计值方式,支持指定指标。

l  单击左下角的提交,一个支持HPA的Deployment就已经创建完毕。

结果验证

单击工作负载 > 无状态中单击应用名称,您可在部署的详情中查看伸缩组信息。

在实际使用环境中,应用会根据CPU负载进行伸缩。您也可在测试环境中验证弹性伸缩,通过给Pod进行CPU压测,可以发现Pod即可完成水平的扩展。

方式二:为已有应用开启HPA

l  登录云容器引擎CCSE管理控制台。

l  在控制台左侧导航栏中,单击集群。

l  在集群列表页面中,单击目标集群名称。

l  在集群管理页左侧导航栏中,选择工作负载 > 无状态。

l  在应用列表页面中,选择目标应用,点击更多按钮。

l  设置伸缩的条件和配置。

n  Resource规则,支持CPU和内存,支持百分比和平均值等计值方式。

n  Pod规则,支持Pod指标对象,支持平均值的计值方式,支持指定指标。

n  Object规则,支持Service指标对象,支持阈值的计值方式,支持指定指标。

l  单击确认,Deployment的HPA设置完毕。

通过kubectl命令创建HPA应用

您也可通过YAML来手动创建HPA,并将其绑定到要伸缩的Deployment对象上,通过kubectl命令实现容器自动伸缩配置。

下面针对一个Nginx应用进行举例。

l  创建并复制以下内容到nginx.yml中。

Deployment的编排模板如下。

apiVersion: apps/v1

kind: Deployment

metadata:

    name: nginx

    labels:

      app: nginx

spec:

    replicas: 2

    selector:

      matchLabels:

        app: nginx 

    template:

      metadata:

        labels:

        app: nginx

      spec:

        containers:

        - name: nginx

        image: nginx:1.7.9 # replace it with your exactly   <image_name:tags>

        ports:

        - containerPort: 80

        resources:

          requests:                         ##必须设置,不然HPA无法运行。

            cpu: 500m

l  执行以下命令,创建Nginx应用。

kubectl   create -f nginx.yml

l  创建HPA。

apiVersion: autoscaling/v2beta2

kind: HorizontalPodAutoscaler

metadata:

    name: nginx-hpa

spec:

    scaleTargetRef:

      apiVersion: apps/v1

      kind: Deployment

      name: nginx

    minReplicas: 1

    maxReplicas: 10

    metrics:

    - type: Resource

      resource:

        name: cpu

        target:

        type: Utilization

        averageUtilization: 50

l  执行以下命令,创建Nginx HPA。

kubectl   create -f nginx-pha.yml

l  创建好HPA后,再次执行kubectl describe hpa <HPA的名称>命令。

可以看到以下信息,则表示HPA已经正常运行。

Normal SuccessfulRescale 30s   horizontal-pod-autoscaler New size: 1; reason: All metrics below target

此时当Nginx的Pod的利用率超过本例中设置的50%利用率时,则会进行水平扩容,低于50%的时候会进行缩容。


xs2ZBNvaLtTD