文档简介:
本节介绍了容器云服务引擎CCSE的最佳实践,以弹性伸缩举例。
容器水平伸缩
容器云服务引擎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
登录容器云服务引擎CCSE管理控制台。
在控制台左侧导航栏中,单击集群。
在集群列表页面中,单击目标集群名称。
在集群管理页左侧导航栏中,选择工作负载 > 无状态。
点击左上角的新增按钮。
填写基本信息,在实例数量中选择自动伸缩,设置伸缩的条件和配置。
Resource规则,支持CPU和内存,支持百分比和平均值等计值方式。
Pod规则,支持Pod指标对象,支持平均值的计值方式,支持指定指标。
Object规则,支持Service指标对象,支持阈值的计值方式,支持指定指标。
单击左下角的提交,一个支持HPA的Deployment就已经创建完毕。
结果验证:单击工作负载 > 无状态中单击应用名称,您可在部署的详情中查看伸缩组信息。在实际使用环境中,应用会根据CPU负载进行伸缩。您也可在测试环境中验证弹性伸缩,通过给Pod进行CPU压测,可以发现Pod即可完成水平的扩展。
方式二:为已有应用开启HPA
登录容器云服务引擎CCSE管理控制台。
在控制台左侧导航栏中,单击集群。
在集群列表页面中,单击目标集群名称。
在集群管理页左侧导航栏中,选择工作负载 > 无状态。
在应用列表页面中,选择目标应用,点击更多按钮。
设置伸缩的条件和配置。
Resource规则,支持CPU和内存,支持百分比和平均值等计值方式。
Pod规则,支持Pod指标对象,支持平均值的计值方式,支持指定指标。
Object规则,支持Service指标对象,支持阈值的计值方式,支持指定指标。
单击确认,Deployment的HPA设置完毕。
通过kubectl命令创建HPA应用
您也可通过YAML来手动创建HPA,并将其绑定到要伸缩的Deployment对象上,通过kubectl命令实现容器自动伸缩配置。
下面针对一个Nginx应用进行举例。创建并复制以下内容到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 exactlyimage_name:tags ports: -containerPort:80 resources: requests: ##必须设置,不然HPA无法运行。 cpu:500m |
---|
执行以下命令,创建Nginx应用。
kubectlcreate-f nginx.yml |
---|
创建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 |
---|
执行以下命令,创建Nginx HPA。
kubectlcreate-f nginx-pha.yml |
---|
创建好HPA后,再次执行kubectl describe hpa <HPA的名称>命令。可以看到以下信息,则表示HPA已经正常运行。
Normal SuccessfulRescale 30s horizontal-pod-autoscaler New size: 1; reason: All metrics below target |
---|
此时当Nginx的Pod的利用率超过本例中设置的50%利用率时,则会进行水平扩容,低于50%的时候会进行缩容。