临时缩减一些部署,为 Kubernetes 中的 cronjob 释放资源

问题描述 投票:0回答:1

我有几个 cronjobs,需要大量的 CPU 和 RAM,但它每天只运行一次,持续几分钟(从网站上抓取数据)。所以,我的问题是,我可以在执行此作业时自动缩小其他一些部署的规模,然后再扩大规模吗?

我现在只能想象一种方法:在我的 cronjob 代码中使用 k8s 客户端,在启动时和完成之前扩展其他部署,但这看起来很奇怪,而且可能不安全。

是否有任何“正确的 Kubernetes 方式”或任何最佳实践来做到这一点?如果可能的话,最好的选择是为所有部署定义一些最小数量的活动副本,并将其余的决定(不同部署的扩展多少副本)留给 k8s。

kubernetes deployment cron autoscaling kubernetes-cronjob
1个回答
0
投票

您还没有提供以下信息

  1. K8s集群中有多少个节点以及可用的资源
  2. 节点上运行的部署数量以及所需的最小资源 所有时间

基于此,您可以执行以下任一操作

  1. 使用 Pod 优先级抢占为 cronjobs 提供比某些低优先级部署更高的优先级。如果需要释放资源,K8s 将抢占优先级较低的 Pod。如果由于没有足够的可用资源(CPU、内存等)而无法调度高优先级的 Pod,Kubernetes 将尝试通过抢占较低优先级的 Pod 来释放资源。

  2. 您可以使用节点自动缩放根据总体资源需求添加或删除节点,并使用污点和容忍将新创建的节点专用于资源密集型 cronjobs。

  3. 在部署中使用 Horizontal Pod Autoscaler (HPA),根据 CPU 和内存使用情况自动扩展 Pod 数量

© www.soinside.com 2019 - 2024. All rights reserved.