StreamPark on Kubernetes 踩坑日记:从部署到运行的那些坑

标签:StreamPark Flink Kubernetes 大数据 容器化
作者:Vincent Li
时间:2025-11-05


💡 前言

最近在尝试将 StreamPark 部署到 K8s 环境,并使用 k8s Application 模式运行 Flink SQL 作业。结果一路踩坑,从部署 StreamPark 到任务运行状态,都遇到了各种问题。
本文将记录我从问题排查到解决的全过程,希望能帮到后续同样在容器环境中使用 StreamPark 的同学。


⚠️ 一、StreamPark 不能直接部署在 K8s 中

很多人看到 StreamPark 是 Apache 顶级项目,天然以为它可以无缝在 K8s 环境中运行。实际上……并不能。

❌ 问题现象

当 StreamPark 容器运行在 K8s 中,并尝试发布 Flink SQL 作业时,后台日志出现类似错误:

java.lang.RuntimeException: java.io.IOException: com.sun.jna.LastErrorException: [2] No such file or directory

后来又出现:

java.lang.RuntimeException: java.io.IOException: com.sun.jna.LastErrorException: [111] Connection refused

🔍 问题原因

StreamPark 需要通过 Docker API 来打包并推送 Flink 作业镜像。
默认情况下,它会访问: /var/run/docker.sock

然而现代的 K8s 节点(例如阿里云 ACK)已经不再使用 dockerd,而是迁移到了 containerdcri-dockerd,这意味着:
👉 容器中根本不存在 /var/run/docker.sockdockerd 守护进程。

💡 解决建议

  • 不建议在 K8s 内直接运行 StreamPark;

  • 推荐将 StreamPark 部署在 独立的 ECS 虚拟机,使用裸机或docker部署

  • 通过 挂载宿主机的 /var/run/docker.sock 实现与宿主机 Docker 通信:

    docker run -d \ -v /var/run/docker.sock:/var/run/docker.sock \ streampark:latest 

🚫 二、任务状态一直“启动中”,但实际上已结束

❌ 问题现象

当 Flink 作业以 Kubernetes Application 模式提交后,
StreamPark 会尝试通过 REST API 与 JobManager 通信。
日志出现:

🔍 问题定位

StreamPark 打包任务时使用的 JobManager Service 域名是进行通信,但是我们这个服务器并不是k8s内的pod,所以访问不到service域名,导致任务从启动到销毁,streampark始终显示任务在”启动中“

✅ 解决方案

使用LoadBalacer模式启动


🌀 三、任务状态一直“运行中”,但实际上已结束

❌ 问题现象

Flink 任务提交后,在 Kubernetes 中确实启动了:

flink-sql-demo-jobmanager-1 flink-sql-demo-taskmanager-1 

任务成功执行并结束,Pod 被正常回收,但 StreamPark 页面仍显示:

状态:运行中(Running)

🔍 根本原因(猜测)

StreamPark 的任务状态同步机制依赖 Flink 的 REST 接口。
JobManager Pod 被销毁 后,REST Endpoint 也随之消失,
而 StreamPark 没能正确收到 “任务已终止” 的事件回调。

✅ 建议方案

这个目前没法解决,已经在github提了Issues:

https://github.com/apache/streampark/issues/4311


📘 总结

问题原因建议方案
StreamPark 无法在 K8s 内打包K8s 没有 dockerd使用 ECS 部署 StreamPark
任务完成仍显示启动中外部无法解析 service域名使用 LoadBalancer启动
任务完成仍显示运行中REST endpoint 已销毁暂无办法,除非不用 k8s application

🧠 最后

StreamPark 的功能强大,但其设计更偏向于传统物理/虚拟机部署环境。

目前使用体验不好,折腾好久还是不能用,当然我不清楚是不是我的原因,欢迎大家指正

同时我也会调研其他部署Flink的方案,比如 Flink 官方 OperatorDinky


💬 如果你也在 K8s 上折腾 StreamPark,欢迎留言交流更多坑点。
希望这篇笔记能帮你少踩几个坑 🙌

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值