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

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
简介: 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。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
目录
相关文章
|
2月前
|
存储 Kubernetes 持续交付
介绍一下Kubernetes的应用场景
【10月更文挑战第18天】介绍一下Kubernetes的应用场景。
204 3
|
4月前
|
Kubernetes API 调度
Kubernetes 架构解析:理解其核心组件
【8月更文第29天】Kubernetes(简称 K8s)是一个开源的容器编排系统,用于自动化部署、扩展和管理容器化应用。它提供了一个可移植、可扩展的环境来运行分布式系统。本文将深入探讨 Kubernetes 的架构设计,包括其核心组件如何协同工作以实现这些功能。
414 0
|
1月前
|
Ubuntu 网络安全 容器
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理
KubeSphere 是一个开源的容器平台,提供丰富的功能和便捷的操作界面,适用于企业容器化部署和管理。本文详细介绍了如何在 Ubuntu 22.04 上安装 KubeSphere,包括系统要求、安装依赖项、设置防火墙、下载安装脚本、选择安装选项、验证安装结果等步骤,并提供了常见问题的解决方法。希望本文能为读者提供实用的参考和帮助。
37 3
|
3月前
|
Kubernetes 容器
Kubernetes附加组件Dashboard部署实战篇
关于如何在Kubernetes集群中部署和配置Dashboard组件的详细实战指南,涵盖了从创建证书、部署Dashboard、设置服务访问到登录认证的完整流程。
522 0
Kubernetes附加组件Dashboard部署实战篇
|
4月前
|
存储 Kubernetes API
在K8S中,etcd 适应的场景?
在K8S中,etcd 适应的场景?
|
4月前
|
Kubernetes 负载均衡 API
在K8S中,Kube-proxy有什么功能?
在K8S中,Kube-proxy有什么功能?
|
4月前
|
存储 Kubernetes API
在K8S中,Kubernetes的组件有哪些?
在K8S中,Kubernetes的组件有哪些?
|
4月前
|
Kubernetes Cloud Native 开发者
探索云原生技术:Kubernetes入门与实践探索Windows操作系统的隐藏功能
【8月更文挑战第31天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性、效率和可靠性的关键。本文将带你了解云原生的核心组件之一——Kubernetes(K8s),通过浅显易懂的语言和实际代码示例,引导你步入这一强大工具的世界。无论你是初学者还是有经验的开发者,本篇都将为你打开一扇通向高效资源管理与自动化部署的大门。
|
4月前
|
Kubernetes 调度 容器
k8s descheduler 组件安装
k8s descheduler 组件安装
|
1月前
|
弹性计算 人工智能 Serverless
阿里云ACK One:注册集群云上节点池(CPU/GPU)自动弹性伸缩,助力企业业务高效扩展
在当今数字化时代,企业业务的快速增长对IT基础设施提出了更高要求。然而,传统IDC数据中心却在业务存在扩容慢、缩容难等问题。为此,阿里云推出ACK One注册集群架构,通过云上节点池(CPU/GPU)自动弹性伸缩等特性,为企业带来全新突破。

相关产品

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

    更多