Kubernetes弹性伸缩全场景解读(七) - 定时伸缩组件发布日期过滤等功能

简介: kubernetes-cronhpa-controller是容器服务开源的一款面向Pod水平定时伸缩场景的CRD controller。在本系列的之前文章中已经向大家介绍了kubernetes-cronhpa-controller的基本用法了,今天我们来看下近期kubernetes-cronhpa-controller又增加了哪些新的功能。

前言

kubernetes-cronhpa-controller是容器服务开源的一款面向Pod水平定时伸缩场景的CRD controller。在本系列的之前文章中已经向大家介绍了kubernetes-cronhpa-controller的基本用法了,今天我们来看下近期kubernetes-cronhpa-controller又增加了哪些新的功能。

新功能介绍

image_20191106224029044

Helm Chart控制台集成一键安装

容器服务控制台增加了kubernetes-cronhpa-controller的Helm Chart的安装方式,提供一键安装的能力,开发者可以通过左侧菜单的应用目录快速集成定时伸缩能力。

单次运行(RunOnce)能力的支持

kubernetes-cronhpa-controller的设计中,定时能力是通过类似crontab的语法来实现的,语法的格式如下:

  
    Field name   | Mandatory? | Allowed values  | Allowed special characters
    ----------   | ---------- | --------------  | --------------------------
    Seconds      | Yes        | 0-59            | * / , -
    Minutes      | Yes        | 0-59            | * / , -
    Hours        | Yes        | 0-23            | * / , -
    Day of month | Yes        | 1-31            | * / , - ?
    Month        | Yes        | 1-12 or JAN-DEC | * / , -
    Day of week  | Yes        | 0-6 or SUN-SAT  | * / , - ?    

举几个常见的用法,例如:
"* * * 15 11 *"表示每年的11月15日,"* * 8 * * *"表示每天的9点钟等等。但是如果我们只希望明天9点钟运行一次该怎么处理呢?标准的crontab在表达能力上是无法实现的,kubernetes-cronhpa-controller在定时任务的定义上增加了RunOnce字段,实现了这个能力。

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-sample
spec:
   scaleTargetRef:
      apiVersion: apps/v1beta2
      kind: Deployment
      name: nginx-deployment-basic
   jobs:
   - name: "scale-up"
     schedule: "* * 8 * * *"
     targetSize: 10
     runOnce: true
   - name: "scale-down"
     schedule: "* * 11 * * *"
     targetSize: 3
     runOnce: true

当runOnce字段设置为true的时候,任务第一次执行完成后,无论成功与失败,这个任务都会停留在当前的状态。
runOnce字段的设计更多的是考虑到接入的场景,当你希望通过SDK或者接口进行定时扩容的能力时,runOnce可以帮助你解决time schedule侧的逻辑。

日期过滤(excludeDates)能力的支持

应用有很多种不同的类型,有在线应用类型的,有离线任务类型的,他们的资源使用画像也是各不相同。很多行业领域的应用资源画像是非常独特的,比较有代表性的是游戏、证券等行业。例如:证券行业工作日上午9:30-11:30,下午13:00-15:00为交易时间,国家法定节假日休市。其他的时间,只能查询不提供交易。对于这个场景而言,工作日的周期性负载画像很明确,而法定节假日基本等同于波谷。那么kubernetes-cronhpa-controller要如何支持这个能力呢?
kubernetes-cronhpa-controller在Spec中增加了excludeDates的字段,提供日期排除过滤功能。
例如,我们给一个定时伸缩的任务过滤十一的七天法定假期,Yaml如下:

apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-sample
spec:
   scaleTargetRef:
      apiVersion: apps/v1beta2
      kind: Deployment
      name: nginx-deployment-basic
   excludeDates:
   - "* * * 1-7 10 *" # exclude November 15th
   jobs:
   - name: "scale-up"
     schedule: "* 30 8 * * 1-5"
     targetSize: 50
   - name: "scale-down"
     schedule: "* 30 10 * * 1-5 "
     targetSize: 5

其中excludeDates字段为一个数组,可以增加更多其他的过滤日期。这样一个典型的有过滤条件的定时伸缩能力就完成。

最后

kubernetes-cronhpa-controller的项目地址是https://github.com/AliyunContainerService/kubernetes-cronhpa-controller,非常欢迎大家提交issues和pr。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
目录
相关文章
|
10月前
|
弹性计算 调度
Dataphin功能Tips系列(52)-调度资源组弹性伸缩
Dataphin支持通过自定义资源组实现弹性资源调配:设置资源上下限,允许资源组间相互“借用”空闲资源。当开发环境任务暂停时,其未使用的资源可被生产环境借用,确保资源高效利用,同时保障各环境资源需求。配置时只需明确开发与生产环境的资源上下限,并关联对应项目任务即可实现动态调整。
249 1
|
Kubernetes API 调度
Kubernetes 架构解析:理解其核心组件
【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
1113 3
|
SQL 弹性计算 分布式计算
阿里云 EMR 发布托管弹性伸缩功能,支持自动调整集群大小,最高降本60%
阿里云开源大数据平台 E-MapReduce 重磅推出托管弹性伸缩功能,基于 EMR 托管弹性伸缩功能,您可以指定集群的最小和最大计算限制,EMR 会持续对与集群上运行的工作负载相关的关键指标进行采样,自动调整集群大小,以获得最佳性能和资源利用率。
630 15
|
Prometheus Kubernetes 监控
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
662 1
k8s学习--kubernetes服务自动伸缩之水平伸缩(pod副本伸缩)HPA详细解释与案例应用
|
Kubernetes 监控 Cloud Native
Kubernetes集群的高可用性与伸缩性实践
Kubernetes集群的高可用性与伸缩性实践
331 1
|
Kubernetes 监控 调度
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
k8s学习--kubernetes服务自动伸缩之垂直伸缩(资源伸缩)VPA详细解释与安装
773 2
|
Kubernetes 应用服务中间件 nginx
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
k8s学习--kubernetes服务自动伸缩之水平收缩(pod副本收缩)VPA策略应用案例
408 1
|
Kubernetes Cloud Native 应用服务中间件
Kubernetes 自动伸缩策略:优化资源利用率
【8月更文第29天】在现代云原生环境中,应用的流量往往具有不可预测性。为了应对这种变化,Kubernetes 提供了多种自动伸缩机制来动态调整应用实例的数量和每个实例分配的资源。本文将深入探讨两种主要的自动伸缩工具:水平 Pod 自动伸缩器 (HPA) 和垂直 Pod 伸缩器 (VPA),并提供实际的应用示例。
466 2
|
Kubernetes 容器
Kubernetes附加组件Dashboard部署实战篇
关于如何在Kubernetes集群中部署和配置Dashboard组件的详细实战指南,涵盖了从创建证书、部署Dashboard、设置服务访问到登录认证的完整流程。
1621 0
Kubernetes附加组件Dashboard部署实战篇
|
Kubernetes 调度 容器
k8s descheduler 组件安装
k8s descheduler 组件安装

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多