【问题标题】:How to run a node auto-scaler script without using a cron-job in Kubernetes ( PKS)如何在不使用 Kubernetes (PKS) 中的 cron 作业的情况下运行节点自动缩放脚本
【发布时间】:2026-01-29 03:35:02
【问题描述】:

我有一个节点自动缩放 shell 脚本,它负责根据 Kubernetes 集群中所有节点的平均 CPU/内存自动缩放工作节点。

我目前从安装了pkskubectl cli 的堡垒运行此脚本,并且还配置了一个 cron-job 以每 5 分钟运行一次。

Kubernetes(AWS 上的PKS)中还有其他方法吗?

或者可能不使用 cron-job,因为自动缩放变得完全依赖于 cron

谢谢

【问题讨论】:

    标签: linux bash amazon-web-services kubernetes cron


    【解决方案1】:

    TL;DR:使用k8s 自动缩放

    要在k8s 上设置自动缩放,请使用:

    kubectl autoscale -f <controller>.yaml --min=3 --max=5
    

    注意:通过 AWS 进行 PKS 有点过头了

    你提到了PKS

    AWS 基础架构上使用PKS 似乎有点过头了。只是因为AWSEKS

    AWS云合作,VMware recommendsVMC on AWS

    PKS 自动缩放

    如果你坚持使用PKS 而不是AWS,你可以试试这个示例repo:pks-autoscale

    回购的Author也有很棒的PKS quickstart guide for aws

    AWS 上缩放

    EKS 自动缩放

    AWSEKSsupportsthree-dimensional scaling

    • Cluster Autoscaler — 当 pod 由于资源不足而无法启动或集群中的节点未充分利用并且它们的 pod 可以重新调度到集群中的其他节点时,Kubernetes Cluster Autoscaler 会自动调整集群中的节点数量。
    • Horizontal Pod Autoscaler — Kubernetes Horizo​​ntal Pod Autoscaler 根据资源的 CPU 利用率自动扩展部署、复制控制器或副本集中的 pod 数量。
    • Vertical Pod Autoscaler — Kubernetes Vertical Pod Autoscaler 自动调整您的 pod 的 CPU 和内存预留,以帮助“调整大小”您的应用程序。这可以帮助您更好地使用集群资源并为其他 pod 释放 CPU 和内存。

    EC2 自动缩放

    如果您决定使用 PKS 构建自己的 k8s 集群,您可以使用 EC2 自动缩放 - 只需 create an Auto Scaling Group

    使用aws-cli

    aws autoscaling create-auto-scaling-group --auto-scaling-group-name <my-asg> --launch-configuration-name <my-launch-config> --min-size 3 --max-size 5 --vpc-zone-identifier "<zones>
    

    EC2预测缩放

    最近AWS推出了predictive scaling for EC2

    ...预测缩放。我们使用从您的实际 EC2 使用情况收集的数据,并通过我们自己的观察得出的数十亿个数据点进一步了解情况,使用训练有素的机器学习模型来预测您的预期流量(和 EC2 使用情况),包括每日和每周模式。

    【讨论】:

    • 我同意 PKS 优于 AWS 有其优点和缺点。
    • 我实际上在看 - github.com/papivot/pks-autoscaler - 它非常简单易用 - 但是正如我在这里提到的,自动缩放完全依赖于 cron ,我想知道是否有任何其他实现这一点。
    【解决方案2】:

    如果您指的是 AWS 上的 EKS,那么 auto-scaling options 会有所不同

    【讨论】:

      最近更新 更多