1

我是 K8s 自动缩放的新手。我有一个有状态的应用程序,我正在尝试找出适合我的自动缩放方法。根据文档:

如果 pod 没有设置正确的资源,VPA 的更新程序组件会杀死它们,以便它们的控制器可以使用更新的请求重新创建它们。

我想知道杀死现有 pod 并创建新 pod 的停机时间。或者至少我如何为我的应用程序测量它?

我正在为我的应用程序比较 HPA 和 VPA 方法。

后续问题是——在 HPA 中创建一个新的 pod 以扩大规模需要多长时间?

4

1 回答 1

0

这里有几件事需要清除:

  • VPA 不创建节点,Cluster Autoscaler用于创建节点。Vertical Pod Autoscaler 为现有的 Pod 分配更多(或更少)的 CPU 和内存,CA 根据待处理的 Pod 的数量扩展您的节点集群。

  • 是使用 HPA、VPA、CA 还是某种组合,取决于您的应用程序的需要。试验是找到最适合您的选项的最可靠方法,因此可能需要多次尝试才能找到正确的设置。HPA 和 VPA 依赖于指标和一些历史数据。如果您对 pod 和容器的需求有很好的了解,建议您使用 CA。

  • HPA 和 VPA 不应一起用于评估 CPU/内存。但是,VPA 可用于评估 CPU 或内存,而 HPA 可用于评估外部指标(如 HTTP 请求数或活跃用户数等)。此外,您可以将 VPA 与 CA 一起使用。

  • 很难评估 VPA 调整和重新启动 pod 以及 HPA 扩大规模所需的确切时间。最好的情况和最坏的情况之间的差异取决于许多因素,并且可能会在时间上产生很大的差距。您需要依靠指标和观察来评估它。

  • Kubernetes Metrics Server从 Kubelets 收集资源指标,并通过 Metrics API 在 Kubernetes apiserver 中公开它们,供 Horizo​​ntal Pod Autoscaler 和 Vertical Pod Autoscaler 使用。

以下是一些有用的资源,可帮助您了解并选择适合您的解决方案:

编辑:

放大是一个时间敏感的操作。您应该考虑 pod 扩大规模所需的平均时间。两个示例场景:

  1. 最佳情况 - 4 分钟:
  • 30 秒:更新的目标指标值:30-60 秒
  • 30 秒:HPA 检查指标值:30 秒
  • < 2 秒:创建 Pod 并进入挂起状态 - 1 秒
  • < 2 秒:CA 看到待处理的 Pod 并启动调用来配置节点 - 1 秒
  • 3 分钟:云提供商提供节点,K8 等待它们直到它们准备好:最多 10 分钟(取决于多种因素)
  1. (合理)最坏情况 - 12 分钟:
  • 60 秒:目标指标值已更新
  • 30 秒:HPA 检查指标值
  • < 2 秒 : pods 创建并进入挂起状态
  • < 2 秒:CA 看到待处理的 pod 并启动对配置节点的调用
  • 10 分钟:云提供商提供节点,K8 等待它们直到它们准备好几分钟(取决于多种因素,例如提供商延迟、操作系统延迟、引导工具等)

同样,很难估计确切的时间,因此观察和指标是这里的关键。

于 2021-05-31T10:10:43.310 回答