如何解决垂直 Pod Autoscaling 的停机时间有多长,以创建具有优化资源的新 Pod?
我是 K8s 自动缩放的新手。我有一个有状态的应用程序,我试图找出哪种自动缩放方法适合我。根据文档:
如果 pod 没有设置正确的资源,Updater 组件 的 VPA 杀死它们,以便它们的控制器可以重新创建它们 使用更新的请求。
我想知道杀死现有 Pod 和创建新 Pod 的停机时间。或者至少我如何为我的应用衡量它?
我正在比较适用于我的应用程序的 HPA 和 VPA 方法。
接下来的问题是 - 在 HPA 中创建新的 Pod 需要多长时间才能进行扩展?
解决方法
这里有几件事需要澄清:
-
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 中公开它们,以供 Horizontal Pod Autoscaler 和 Vertical Pod Autoscaler 使用。
以下是一些有用的资源,可以帮助您了解并选择适合您的解决方案:
编辑:
放大是一个时间敏感的操作。您应该考虑扩展 Pod 所需的平均时间。两个示例场景:
- 最佳情况 - 4 分钟:
- 30 秒 :更新目标指标值:30-60 秒
- 30 秒 :HPA 检查指标值:30 秒
- 3 分钟: 云提供商提供节点,K8 等待节点准备就绪:最多 10 分钟(取决于多种因素)
- (合理)最坏情况 - 12 分钟:
- 60 秒 :更新目标指标值
- 30 秒 :HPA 检查指标值
- 10 分钟 :云提供商提供节点,K8 会等待节点准备好几分钟(取决于多种因素,例如提供商延迟、操作系统延迟、引导程序工具等)
同样,很难估计所需的确切时间,因此观察和指标是这里的关键。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。