Expedia 开源用于扩展 Kubernetes 工作负载的容器启动自动扩展器 (CSA)

Expedia开源容器启动自动扩展器(CSA)

Expedia的性能和可靠性团队最近开源了其容器启动自动扩展器(CSA)。CSA是一个Kubernetes控制器,利用Kubernetes 1.27.0引入的“Pod资源原地更新”功能,根据用户定义的启动/启动后配置,动态调整容器的CPU和内存资源。

关键功能

  1. 原地更新功能:自Kubernetes 1.27.0起,该功能处于alpha阶段,允许在不重启Pod的情况下修改容器资源(请求和限制)。
  2. 资源优化:针对启动和启动后阶段资源利用模式不同的工作负载,CSA能够优化容器资源,避免资源浪费。

传统资源管理的挑战

  1. 突发性服务质量(QoS)

    • 设置限制高于请求,依赖启动时的额外资源。
    • 启动时间不可预测,依赖集群节点负载情况。
    • 启动后性能不稳定,特别是集群合并机制下。
  2. 保证性QoS(1)

    • 设置限制等于请求,优先保证启动时间。
    • 启动时间和启动后性能可预测,但可能导致资源浪费。
  3. 保证性QoS(2)

    • 设置限制等于请求,优先保证正常性能。
    • 启动后性能可接受,但启动时间较慢,影响操作效率。

CSA的工作原理

  1. 集成与兼容性:CSA在Pod级别操作,集成多种工作负载管理API(如Deployments、StatefulSets、DaemonSets),兼容不同Pod管理方法。
  2. 监控与响应:CSA监控标记为扩展的Pod,检测到变化时评估目标容器状态并执行相应操作:

    • 应用启动资源设置(目标容器未激活时)。
    • 应用启动后资源设置(目标容器激活时)。
    • 评估之前执行的扩展命令状态并报告。
  3. 限制与注意事项

    • 初始声明的目标容器资源必须为保证性(请求==限制)。
    • 启动后资源也必须为保证性。
    • 扩展失败时不重试。

CSA的优势

  1. 资源浪费减少:通过分离启动和启动后资源设置,减少资源浪费。
  2. 启动性能提升:提高启动性能和可预测性,加速水平扩展操作。

使用建议

CSA依赖的“Pod资源原地更新”功能在Kubernetes 1.29中仍处于alpha阶段,因此需要启用InPlacePodVerticalScaling功能门。Expedia团队建议仅在本地或非生产环境中预览CSA,直到其达到稳定状态。

阅读 18
0 条评论