本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
在 Flink 应用程序中使用 Autoscaler
Operator Autoscaler 可以从 Flink 任务中收集指标,并自动调整任务顶点级别的并行度,从而帮助缓解反向压力。配置可能类似于如下示例:
apiVersion: flink.apache.org/v1beta1 kind: FlinkDeployment metadata: ... spec: ... flinkVersion: v1_17 flinkConfiguration: kubernetes.operator.job.autoscaler.enabled: "true" kubernetes.operator.job.autoscaler.stabilization.interval: 1m kubernetes.operator.job.autoscaler.metrics.window: 5m kubernetes.operator.job.autoscaler.target.utilization: "0.6" kubernetes.operator.job.autoscaler.target.utilization.boundary: "0.2" kubernetes.operator.job.autoscaler.restart.time: 2m kubernetes.operator.job.autoscaler.catch-up.duration: 5m pipeline.max-parallelism: "720" ...
以下是 Autoscaler 的配置选项。
kubernetes.operator.job.autoscaler.scaling.enabled
– 指定是否启用 Autoscaler 操作。默认设置为 false,以支持被动/仅指标模式;在该模式下,Autoscaler 仅收集并评估与扩展相关的性能指标,而不会触发任何任务升级。这可用来增强对模块的信心,却不会对正在运行的应用程序产生任何影响。kubernetes.operator.job.autoscaler.stabilization.interval
– 不会执行新扩展的稳定期。默认值为 5 分钟。kubernetes.operator.job.autoscaler.metrics.window
– 扩展指标聚合窗口大小。窗口越大,就越流畅、越稳定,但 Autoscaler 对负载突变做出反应的速度可能会变慢。默认值为 10 分钟。建议使用 3 到 60 分钟之间的值进行实验。kubernetes.operator.job.autoscaler.target.utilization
– 提供稳定任务性能和一定负载波动缓冲能力的目标顶点利用率。默认值为0.7
,即任务顶点的目标利用率/负载率为 70%。kubernetes.operator.job.autoscaler.target.utilization.boundary
– 目标顶点利用率边界,用作额外的缓冲,避免在负载波动时立即扩展。默认值为0.4
,即在触发扩展操作之前,允许与目标利用率有 40% 的偏差。kubernetes.operator.job.autoscaler.restart.time
– 重新启动应用程序的预计时间。默认值为 3 分钟。kubernetes.operator.job.autoscaler.catch-up.duration
– 赶上进度的预计时间,即在扩展操作完成后完全处理积压工作的时间。默认值为 5 分钟。通过缩短赶上进度的持续时间,Autoscaler 必须为扩展操作预留更多额外容量。pipeline.max-parallelism
– Autoscaler 可以使用的最大并行度。如果该限值高于 Flink 配置中设定的最大并行度或直接在每个 Operator 上设定的最大并行度,则 Autoscaler 会忽略此限值。默认值为 200。请注意,Autoscaler 将并行度计算为最大并行度数的除数,因此建议选择具有大量除数的最大并行度设置,而非依赖 Flink 提供的默认设置。建议对此配置使用 60 的倍数,例如 120、180、240、360、720。
有关详细配置的参考页面,请参阅 Autoscaler configuration