Kf 利用 Kubernetes 横向 pod 自动扩缩器 (HPA) 来自动扩缩应用中的 pod 数量。为应用启用自动扩缩功能后,系统会创建一个 HPA 对象并将其绑定到应用对象。然后,它会动态计算目标缩放比例,并为应用设置它。
Kf 扩缩功能的工作原理
为 Kf 应用部署的 pod 数量由其底层 Deployment 对象的 replica
字段控制。Deployment 副本的目标数量通过应用的 replicas
字段进行设置。
可以使用 kf scale
命令进行手动扩缩。启用自动扩缩后,此命令会停用,以避免冲突的目标。
Kubernetes 横向 Pod 自动扩缩器的工作原理
横向 pod 自动扩缩器 (HPA) 作为 Kubernetes API 资源(HPA 对象)和控制循环(HPA 控制器)实现,后者定期根据当前资源利用率计算所需副本的数量。然后,HPA 控制器将该数量传递给实现 Scale 子资源的目标对象。实际扩缩会委托给底层对象及其控制器。有关详情,请参阅 Kubernetes 文档。
自动扩缩器如何确定何时扩缩
HPA 控制器根据在每个 HorizontalPodAutoscaler 定义中指定的指标定期查询资源利用率。控制器会从每个 pod 的资源指标 API 获取该指标。接着,控制器将利用率值以等效资源请求的百分比的形式计算。然后,系统会根据当前百分比和所需的百分比来计算所需的副本数量。您可以在 Kubernetes 文档中详细了解自动扩缩算法。
指标
Kf 使用仅支持 CPU 作为目标指标的 HPA v1。
Kubernetes 横向自动扩缩器如何与 Kf 搭配使用
为 Kf 应用启用自动扩缩功能后,Kf 控制器将根据针对应用指定的扩缩限制和规则创建一个 HPA 对象。然后,HPA 控制器会从 HPA 对象中提取规范并相应地扩展应用。
如果停用自动扩缩或者删除相应的应用,系统会删除 HPA 对象。