尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

FlinkK8sOperator快速入门:5步部署你的第一个Flink流式作业(附完整配置解析)

FlinkK8sOperator快速入门:5步部署你的第一个Flink流式作业(附完整配置解析) FlinkK8sOperator快速入门5步部署你的第一个Flink流式作业附完整配置解析【免费下载链接】flinkk8soperatorKubernetes operator that provides control plane for managing Apache Flink applications项目地址: https://gitcode.com/gh_mirrors/fl/flinkk8soperatorFlinkK8sOperator 是一个 Kubernetes Operator为运行在 Kubernetes 上的 Apache Flink 流式应用提供完整的控制平面创建集群、提交作业、自动升级、保存点Savepoint与状态恢复统统由它托管。本文带你用 5 步在自有集群上部署第一个 Flink 流式作业并逐字段解析 FlinkApplication 自定义资源的关键配置。一、FlinkK8sOperator 是什么传统方式在 Kubernetes 上跑 Flink需要你手动管理 JobManager、TaskManager、Service、Ingress 等一系列资源升级和扩缩容更是繁琐。FlinkK8sOperator 通过 Kubernetes自定义资源CRD把这一切抽象成一个声明式的FlinkApplication对象你只需提交一份 YAML 描述我要什么Operator 持续监听该资源自动创建 JobManager Deployment、TaskManager Deployment、Service以及可选的 IngressFlink Web UI应用更新时Operator 自动完成保存点 → 滚动切换 → 状态恢复支持Dual和BlueGreen两种部署模式上图展示了 Dual 部署模式下的状态机从New/Updating到ClusterStarting、Savepointing、SubmittingJob最终到达Running失败时会进入RollingBack与DeployFailed分支。环境要求组件版本要求Kubernetes 1.10 1.13 需开启--feature-gatesCustomResourceSubresourcestrueApache Flink 1.7kubectl已配置好集群凭证二、准备工作构建 Flink 应用镜像Operator 启动 Flink 集群依赖一个 Docker 镜像镜像中需要同时包含 Flink 运行时和你的应用代码jar 包。项目内置了可直接参考的 WordCount 示例示例代码与 Dockerfileexamples/wordcount/示例自定义资源examples/wordcount/flink-operator-custom-resource.yaml应用镜像编写规范examples/README.md 要点镜像中的 jar 必须位于web.upload.dir指定的目录示例中为/opt/flink因为 Operator 是通过 JobManager 的 REST API 提交作业的。三、5 步部署你的第一个 Flink 流式作业第 1 步创建 CRD、命名空间与 RBAC 权限Operator 依赖自定义资源定义和一组最小权限角色项目deploy/目录提供了全套清单kubectl apply -f deploy/crd.yaml kubectl apply -f deploy/namespace.yaml kubectl apply -f deploy/role.yaml kubectl apply -f deploy/role-binding.yaml第 2 步创建 Operator 配置 ConfigMapOperator 的运行参数通过 ConfigMap 注入模板见deploy/config.yamldata: config: |- operator: ingressUrlFormat: {{$jobCluster}}.{ingress_suffix} logger: level: 4把{ingress_suffix}替换为你集群的 Ingress 域名后缀即可让每个 Flink 应用拥有独立的 Web UI 地址。如果不需要 Ingress留空即可Operator 将不会创建 Ingress 资源。第 3 步部署 Operatorkubectl apply -f deploy/flinkk8soperator.yaml确认 Operator Pod 处于RUNNING状态kubectl get pods -n flink-operator kubectl logs {pod-name} -n flink-operator第 4 步提交第一个 FlinkApplication以内置 WordCount 示例为例将image换成你自己的镜像地址kubectl apply -f examples/wordcount/flink-operator-custom-resource.yaml示例核心内容完整文件见examples/wordcount/flink-operator-custom-resource.yamlspec: image: flink-wordcount flinkVersion: 1.16 jarName: wordcount-operator-example-1.0.0-SNAPSHOT.jar entryClass: org.apache.flink.WordCount parallelism: 3 taskManagerConfig: taskSlots: 3 jobManagerConfig: replicas: 1第 5 步验证作业状态Operator 观察到新资源后会自动拉起 Flink 集群并提交作业# 查看自动创建的 Deployment kubectl get deployments -n flink-operator # 查看自定义资源状态phase 变为 Running 即成功 kubectl get flinkapplication.flink.k8s.io -n flink-operator wordcount-operator-example -o yaml # 查看 Operator 事件创建集群、提交作业等 kubectl describe flinkapplication.flink.k8s.io -n flink-operator wordcount-operator-examplestatus中会返回集群健康度health: Green、可用 slot 数、作业 ID、checkpoint 计数等信息——这些信息都由状态机自动维护你无需轮询任何 API。四、FlinkApplication 完整配置解析完整字段参考文档见docs/crd.md类型定义位于pkg/apis/app/v1beta1/types.go。以下是最常用的字段速查表必填字段字段说明spec.image应用镜像格式registry/repository[:tag]spec.jarName镜像中待运行的 jar 包文件名spec.parallelism作业级并行度spec.flinkVersionFlink 版本必须与镜像内版本一致spec.jobManagerConfig.replicasJobManager 副本数多副本需自行配置 HAspec.taskManagerConfig.taskSlots每个 TaskManager 的 slot 数常用可选字段字段说明spec.flinkConfig透传给 Flink 的配置如 checkpoint/savepoint 目录spec.programArgs传给作业的启动参数输入输出源等spec.deploymentMode更新部署模式Dual默认或BlueGreen零停机spec.scaleMode并行度变更策略NewCluster默认或InPlace实验性spec.deleteMode删除资源时的清理方式Savepoint默认/ForceCancel/Nonespec.restartNonce修改该值即可强制重启集群spec.savepointPath从指定保存点恢复应用状态spec.volumes/volumeMounts为 Job/TaskManager Pod 挂载卷示例中的 checkpoint 配置建议保留它是自动升级与故障恢复的基石flinkConfig: state.checkpoints.dir: file:///checkpoints/flink/externalized-checkpoints state.savepoints.dir: file:///checkpoints/flink/savepoints两种部署模式怎么选Dual默认适合实时处理应用。Operator 先拉起新集群再将旧作业带保存点取消、删除旧集群、在新集群恢复作业——停机时间极短。BlueGreen适合要求零停机的应用。新版本蓝/绿与旧版本并行运行进入DualRunning阶段后你通过设置spec.tearDownVersionHash手动确认下线旧版本。两种模式的状态机细节见docs/state_machine.md。五、日常运维速查操作命令更新作业自动带保存点滚动修改 YAML 后kubectl apply -f file查看状态与事件kubectl describe flinkapplication.flink.k8s.io name强制重启集群修改spec.restartNonce后 apply删除应用默认先打保存点再下线kubectl delete flinkapplication.flink.k8s.io name本地开发调试 Operator参考docs/local_dev.md更新后回滚设置spec.forceRollback: true仅非 Running 阶段生效六、总结与下一步通过本文的 5 步你已经完成了 FlinkK8sOperator 的安装并部署了第一个 Flink 流式作业CRD 与 RBAC → Operator 配置 → Operator 部署 → 提交 FlinkApplication → 验证 Running 状态。接下来建议按此路径深入自定义资源完整字段docs/crd.md状态机各状态含义docs/state_machine.md进阶用法挂载卷、删除模式、回滚docs/user_guide.md更多应用示例examples/含 Beam Python 示例把 Flink 应用的托管交给 Operator你可以专注于流式逻辑本身而不是 Kubernetes 的运维细节。【免费下载链接】flinkk8soperatorKubernetes operator that provides control plane for managing Apache Flink applications项目地址: https://gitcode.com/gh_mirrors/fl/flinkk8soperator创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表