我正在使用使用 kubernetes 1.2 版的 openshift v3。我正在探索更多关于自动缩放功能的信息。
目前它说只支持 CPU 指标。
有没有办法根据从 heapster 收集的内存或其他指标数据来扩展 openshift 中的 pod?
我正在使用使用 kubernetes 1.2 版的 openshift v3。我正在探索更多关于自动缩放功能的信息。
目前它说只支持 CPU 指标。
有没有办法根据从 heapster 收集的内存或其他指标数据来扩展 openshift 中的 pod?
或从 heapster 收集的其他指标数据
从Kubernetes 1.12 的公告来看,现在(2018 年第四季度)应该支持(尽管仍处于测试阶段)。
Horizontal Pod Autoscaler 中的任意/自定义指标正在移动到第二个 beta (
autoscaling/v2beta2
) 以测试一些额外的功能增强。这个重新设计的 Horizontal Pod Autoscaler 功能包括对自定义指标和状态条件的支持。
请参阅kubernetes 功能 117和提交 9d84a49以及新的Horizontal Pod Autoscaler Walkthrough页面更新。
它引入了标签的概念。
自动缩放更具体的指标
许多指标管道允许您通过名称或一组称为标签的附加描述符来描述指标。对于所有非资源指标类型(pod、对象和外部,如下所述),您可以指定一个额外的标签选择器,该选择器将传递给您的指标管道。
例如,如果您
http_requests
使用动词 收集指标,则label
可以指定以下指标块以仅在GET
请求时进行扩展:type: Object object: metric: name: `http_requests` selector: `verb=GET`
此选择器使用与完整 Kubernetes 标签选择器相同的语法。如果名称和选择器匹配多个系列,则监控管道确定如何将多个系列折叠成一个值。
选择器是加法的,不能选择描述对象不是目标对象的指标(Pods 类型的情况是目标 pod,Object 类型的情况是描述的对象)。
正如您所提到的:OpenShift v3 使用了 Kubernetes 的多个组件。Kubernetes和openshift的官方文档 都在讨论 CPU 上的自动缩放。(Kubernetes 1.2 添加了对基于应用程序特定指标(如 QPS)的扩展的 alpha 支持)。
水平 pod 自动缩放的初始版本中没有发布内存自动缩放,因为它不能以正确的方式工作。pod 的内存消耗通常不会减少,因此添加新 pod 不会减少旧 pod 的内存消耗。
这就是 Kubernetes 目前不支持内存使用自动缩放的原因。他们正在谈论它作为一个可能的功能:
[未来] 基于不同于 CPU 的指标(例如内存、网络流量、qps)自动缩放 Pod。这包括基于自定义/应用程序指标的扩展。