一、概述

其实原生的HPA是不支撑依据时间点来进行扩缩容的,依据时间点扩缩容其实在有些场景下仍是蛮实用的,由于依据资源扩缩容无法精准控制,像在大数据领域,跑使命的时间段一般是明确的,这样咱们就能够依据跑使命的时间段来进行pod扩缩容,这样就十分精准的控制资源运用了。这儿主要介绍阿里开源的一个产品kubernetes-cronhpa-controllerkubernetes-cronhpa-controller 是一个 Kubernetes cron 水平 Pod 自动缩放控制器,运用 crontab 喜爱计划。您能够运用 CronHorizontalPodAutoscaler 运用在 Kubernetes 中定义的任何品种目标,这些目标支撑 scale 子资源(如 Deployment 和 StatefulSet)。

【云原生】k8s pod 定时弹性伸缩cronhpa介绍与实战操作

  • GitHub地址:github.com/AliyunConta…
  • k8s环境布置能够参阅:[Kubernetes(k8s)最新版最完整版环境布置+master高可用完成(/post/713621…)
  • 关于原生的HPA介绍与运用能够参阅:【云原生】K8s pod 动态弹性扩缩容 HAP(metrics-server)

二、cronhpa 安装

# 下载
git clone https://github.com/AliyunContainerService/kubernetes-cronhpa-controller.git
# 1、install CRD
# k8s < v1.22
#kubectl apply -f config/crds/autoscaling.alibabacloud.com_cronhorizontalpodautoscalers.yaml
# k8s >=v1.22
kubectl apply -f config/crds/autoscaling.alibabacloud.com_cronhorizontalpodautoscalers.v1.22.yaml
# 2、install RBAC settings
kubectl apply -f config/rbac/rbac_role.yaml
kubectl apply -f config/rbac/rbac_role_binding.yaml
# 3、deploy kubernetes-cronhpa-controller
kubectl apply -f config/deploy/deploy.yaml
# 4、verify installation
kubectl get deploy kubernetes-cronhpa-controller -n kube-system -o wide

【云原生】k8s pod 定时弹性伸缩cronhpa介绍与实战操作

三、测验验证

---
apiVersion: apps/v1 # for versions before 1.8.0 use apps/v1beta1
kind: Deployment
metadata:
  name: nginx-deployment-basic
  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
---
apiVersion: autoscaling.alibabacloud.com/v1beta1
kind: CronHorizontalPodAutoscaler
metadata:
  labels:
    controller-tools.k8s.io: "1.0"
  name: cronhpa-sample
spec:
   scaleTargetRef:
      apiVersion: apps/v1
      kind: Deployment
      name: nginx-deployment-basic
   jobs:
   - name: "scale-down"
     schedule: "30 */1 * * * *" # 秒,分,时、日、月、周,比Linux crontab更细粒度到秒了。每30秒缩容一次。
     targetSize: 1 # 缩容到1 pod
   - name: "scale-up"
     schedule: "01 */1 * * * *" # 每分钟第一秒就扩容一次
     targetSize: 3 # 扩容到3 pod

履行

kubectl apply -f examples/deployment_cronhpa.yaml
kubectl get pods,deploy
# 查看cronhpa 
kubectl describe cronhpa cronhpa-sample

【云原生】k8s pod 定时弹性伸缩cronhpa介绍与实战操作

布置和运用都十分简略,理解也十分简略,其实完成也不难,咱们自己写crontab也是能够完成的,可是没有那么好,功用虽然简略,可是仍是十分实用的。

关于k8s pod 定时弹性伸缩cronhpa的介绍与运用,就先到这儿了,有疑问的小伙伴欢迎给我留言,后续会持续更新【云原生+大数据】相关的文章。

【云原生】k8s pod 定时弹性伸缩cronhpa介绍与实战操作