本文属于机器翻译版本。若本译文内容与英语原文存在差异,则一律以英文原文为准。
维护与故障排除
以下各部分将概述如何维护长时间运行的 Flink 作业,并就如何排查一些常见问题提供指导。
迁移 Flink 应用程序
Flink 应用程序通常设计为长时间运行,例如运行数周、数月甚至数年。与所有长期运行的服务一样,Flink 流式处理应用程序需要维护。这包括错误修复、改进与迁移到更高版本的 Flink 集群。
当 FlinkDeployment
和 FlinkSessionJob
资源的规范发生变化时,您需要升级正在运行的应用程序。为此,操作员停止正在运行的作业(除非已暂停),并使用最新的规范重新部署该作业,而对于有状态的应用程序,使用上次运行的状态。
用户可以通过 JobSpec
的 upgradeMode
设置来控制如何在有状态的应用程序停止和恢复时管理状态。
升级模式
可选介绍
- 无状态
-
无状态应用程序从空白状态升级。
- 上次的状态
-
在任何应用程序状态(即使是失败的作业)下快速升级都不需要运行状况正常的作业,因为它总是使用最新的成功检查点。如果 HA 元数据丢失,可能需要进行手动恢复。要限制在选取最新检查点时作业可能回退的时间,您可以配置
kubernetes.operator.job.upgrade.last-state.max.allowed.checkpoint.age
。如果检查点早于配置的值,则将改为使用保存点来处理运行正常的作业。会话模式下,不支持此功能。 - 保存点
-
使用保存点进行升级,以提供最大的安全性,以及用作备份/分叉点的可能性。升级过程中,将创建保存点。请注意,需要运行 Flink 作业才能创建保存点。如果作业处于不健康状态,则将使用最后一个检查点(除非 kubernetes.operator.job.upgrade)。 last-state-fallback.enabled 设置为 false)。如果最后一个检查点不可用,则作业升级将失败。
排查问题
本部分介绍如何对 Amazon EMR on EKS 的问题进行故障排除。有关如何排查一般性 Amazon EMR 问题的信息,请参阅《Amazon EMR 管理指南》中的 集群问题排查。
Amazon EMR on EKS 上的 Apache Flink 问题排查
安装 Helm 图表时未找到资源映射
安装 Helm 图表时可能会遇到以下错误消息。
Error: INSTALLATION FAILED: pulling from host 1234567890.dkr.ecr.us-west-2.amazonaws.com failed with status code [manifests 6.13.0]: 403 Forbidden Error: INSTALLATION FAILED: unable to build kubernetes objects from release manifest: [resource mapping not found for name: "flink-operator-serving-cert" namespace: "<the namespace to install your operator>" from "": no matches for kind "Certificate" in version "cert-manager.io/v1"
ensure CRDs are installed first, resource mapping not found for name: "flink-operator-selfsigned-issuer" namespace: "<the namespace to install your operator>" " from "": no matches for kind "Issuer" in version "cert-manager.io/v1"
ensure CRDs are installed first].
要解决此错误,请安装 cert-manager 以允许添加 Webhook 组件。您必须在您使用的每个 Amazon EKS 集群中分别安装 cert-manager。
kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.12.0
Amazon Web Service 访问遭拒错误
如果遇到 access denied 错误,请确认 Helm 图表文件 values.yaml
中 operatorExecutionRoleArn
的 IAM 角色是否具有正确的权限。此外,请确保 FlinkDeployment
规范中 executionRoleArn
下的 IAM 角色具有正确的权限。
FlinkDeployment
卡滞
如果您的 FlinkDeployment
卡在“被囚禁”状态,请按照以下步骤强制删除部署:
-
编辑部署运行。
kubectl edit -n
Flink Namespace
flinkdeployments/App Name
-
移除此终结器。
finalizers: - flinkdeployments.flink.apache.org/finalizer
-
删除部署。
kubectl delete -n
Flink Namespace
flinkdeployments/App Name