首页 > 其他分享 >【云原生】k8s pod 定时弹性伸缩cronhpa介绍与实战操作

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

时间:2022-12-25 10:44:45浏览次数:68  
标签:kubectl cronhpa nginx controller pod k8s

目录

一、概述

其实原生的HPA是不支持根据时间点来进行扩缩容的,根据时间点扩缩容其实在有些场景下还是蛮实用的,因为根据资源扩缩容无法精准控制,像在大数据领域,跑任务的时间段一般是明确的,这样我们就可以根据跑任务的时间段来进行pod扩缩容,这样就非常精准的控制资源使用了。这里主要介绍阿里开源的一个产品kubernetes-cronhpa-controllerkubernetes-cronhpa-controller 是一个 Kubernetes cron 水平 Pod 自动缩放控制器,使用 crontab 喜欢方案。您可以使用 CronHorizontalPodAutoscaler 使用在 Kubernetes 中定义的任何种类对象,这些对象支持 scale 子资源(如 Deployment 和 StatefulSet)。

在这里插入图片描述

二、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

在这里插入图片描述

三、测试验证

---
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

在这里插入图片描述

部署和使用都非常简单,理解也非常简单,其实实现也不难,我们自己写crontab也是可以实现的,但是没有那么好,功能虽然简单,但是还是非常实用的。

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

标签:kubectl,cronhpa,nginx,controller,pod,k8s
From: https://www.cnblogs.com/liugp/p/17003746.html

相关文章

  • Kubernetes(一) 跟着官方文档从零搭建K8S
    Kubernetes教程之跟着官方文档从零搭建K8S文章地址:blog.piaoruiqing.com/2019/09/17/…前言本文将带领读者一起,参照着Kubernetes官方文档,对其安装部署进行讲解.......
  • Kubernetes(k8s) kubectl taint常用命令
    kubectl在$HOME/.kube目录中查找一个名为config的配置文件。可以通过设置KUBECONFIG环境变量或设置--kubeconfig参数来指定其它kubeconfig文件。本文主要介绍K......
  • 每天一点基础K8S--K8S中的存储类storage Class
    存储类storageClass1、官网链接https://kubernetes.io/zh-cn/docs/concepts/storage/storage-classes/2、storageClass资源#在前面持久卷的实验中看到,对于静态绑定的p......
  • K8S部署分3节点es
    [root@master~]#cates.yamlapiVersion:v1kind:Servicemetadata:name:elasticsearch7namespace:elasticsearchlabels:app:elasticsearch7spec:ports:......
  • k8s平台不停机更新发布服务
    一、单机服务架构实现不停机更新,利用readinesprob实现pod就绪探测。deployment参考配置如下:apiVersion:apps/v1kind:Deploymentmetadata:name:dengbao-record-......
  • 每天一点基础K8S--K8S中的存储方案PV、PVC
    持久卷PV官网文档https://kubernetes.io/zh-cn/docs/concepts/storage/persistent-volumes/什么是PV和PVC持久卷(PersistentVolume,PV) 是集群中的一块存储,可以由管理员......
  • K8S 添加 DNS
    背景K8S集群部署在云中,此时为公网,但国内大型企业或国企的内部系统部署在内网,正常情况下在公网与内部局域网中会搭建专线已方便服务调用,但某些情况下需要手动设置容器的D......
  • Kubernetes(K8S) helm 安装
    Helm是一个Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。Helm有3个重要概念:helm:一......
  • Kubernetes(K8S) 常用命令
    Docker常用命令​​Docker常用命令​​#查看API版本[root@k8smaster~]#kubectlapi-versions#重启K8S[root@k8smaster~]#systemctlrestartkubelet#查看kubelet......
  • Kubernetes(K8S) 配置静态资源服务
    Kubernetes(K8S)配置静态资源服务---apiVersion:v1kind:ConfigMapmetadata:name:img-confignamespace:vipsoftdata:img.conf:|server{charsetutf-......