我是 K8s 自动缩放的新手。我有一个有状态的应用程序,我正在尝试找出适合我的自动缩放方法。根据文档:
如果 pod 没有设置正确的资源,VPA 的更新程序组件会杀死它们,以便它们的控制器可以使用更新的请求重新创建它们。
我想知道杀死现有 pod 并创建新 pod 的停机时间。或者至少我如何为我的应用程序测量它?
我正在为我的应用程序比较 HPA 和 VPA 方法。
后续问题是——在 HPA 中创建一个新的 pod 以扩大规模需要多长时间?
我是 K8s 自动缩放的新手。我有一个有状态的应用程序,我正在尝试找出适合我的自动缩放方法。根据文档:
如果 pod 没有设置正确的资源,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 扩大规模所需的平均时间。两个示例场景:
同样,很难估计确切的时间,因此观察和指标是这里的关键。