Spark on Kubernetes 工程实践 · 专栏导览
专栏定位
本专栏聚焦 Spark on Kubernetes(Spark-on-K8s) 的工程落地实践,面向已具备 Spark 基础知识(了解 RDD、DataFrame、Shuffle、调度模型)和基础 Kubernetes 知识(Pod、Deployment、ConfigMap、RBAC、PVC 等概念)的工程师。专栏不重复介绍 Spark 的通用原理(可参考「Spark 核心原理」系列专栏),而是专注于 K8s 模式下特有的架构差异、工程挑战与生产最佳实践。
技术版本:Spark 3.3+,Kubernetes 1.24+,Helm 3.x
专栏目标
读完本专栏,你将能够:
- 理解 Spark on K8s 的架构与在 YARN 模式下的本质差异
- 独立部署和配置生产可用的 Spark on K8s 环境(含 RBAC、镜像、资源配额)
- 掌握 Driver/Executor Pod 的生命周期管理与动态资源分配
- 配置网络(Ingress/Service)使 Spark UI 可访问
- 实现基于 S3/OSS 的远程 Shuffle Service,解决 Shuffle 文件管理问题
- 使用 Spark Operator 将 Spark 作业声明式管理,接入 CI/CD 流水线
- 优化 Spark on K8s 的资源利用率(Spot 实例、Gang Scheduling、优先级调度)
- 调试生产中常见的 Pod OOMKilled、Executor 丢失、镜像拉取失败等故障
专栏目录
| 序号 | 文章标题 | 核心主题 |
|---|---|---|
| 01 | Spark on K8s 架构全景:与 YARN 模式的本质差异 | Driver/Executor Pod 模型,与 YARN AM/Container 的架构对比,K8s Scheduler 差异 |
| 02 | 镜像构建与依赖管理:如何打包一个可复用的 Spark 镜像 | 官方基础镜像结构,Dockerfile 最佳实践,Python 依赖/JAR 依赖管理,镜像分层优化 |
| 03 | RBAC 与资源配额:K8s 权限模型在 Spark 中的应用 | ServiceAccount,ClusterRole/Role,ResourceQuota,LimitRange,Namespace 隔离 |
| 04 | Driver 与 Executor Pod 的生命周期管理 | Pod 调度流程,Executor 启动机制,动态资源分配(DRA),Pod 抢占与 PriorityClass |
| 05 | Spark UI 访问:Ingress、NodePort 与 Headless Service | 三种访问方案对比,生产推荐的 Ingress 配置,History Server 的 K8s 部署 |
| 06 | 存储与 Shuffle:PVC、HostPath 与 Remote Shuffle Service | Shuffle 文件在 K8s 中的挑战,本地 PVC 方案,Magnet/RSS/Uniffle 等远程 Shuffle Service |
| 07 | Spark Operator:声明式作业管理与 CI/CD 集成 | SparkApplication CRD,Operator 架构,提交/监控/重试,与 Argo Workflow 集成 |
| 08 | 资源优化:Spot 实例、Gang Scheduling 与容量规划 | Spot/Preemptible 实例的使用策略,Volcano/Yunikorn Gang Scheduling,资源利用率分析 |
| 09 | 安全加固:Secrets 管理、网络策略与镜像安全 | K8s Secrets 注入,Kerberos on K8s,NetworkPolicy 隔离,镜像签名与准入控制 |
| 10 | 故障排查手册:从 Pod 状态到性能瓶颈的诊断链路 | OOMKilled 分析,Executor 丢失,ImagePullBackOff,网络隔离故障,性能对比 YARN |
与其他专栏的关系
「Spark 核心原理」 → 本专栏前置(调度/内存/Shuffle 基础)
「Spark SQL 性能调优」 → 本专栏平行(SQL 层调优与 K8s 部署无关)
「Structured Streaming」→ 本专栏平行(流处理作业也可运行在 K8s)
「Delta Lake」 → 本专栏平行(Delta Lake 存储层与部署环境无关)
推荐阅读路径
新手路径(从零部署):01 → 02 → 03 → 04 → 05 → 10
运维路径(已有部署,优化资源):04 → 06 → 08 → 10
平台化路径(构建内部平台):03 → 07 → 08 → 09 → 10
关联专栏
- K8s 架构:Spark on K8s 的资源调度基础
- Spark 调度系统:SchedulerBackend 在 K8s 下的实现差异
- YARN:K8s vs YARN 的部署模式对比
- 指标体系:Spark on K8s 的 Prometheus 监控集成