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 丢失、镜像拉取失败等故障

专栏目录

序号文章标题核心主题
01Spark on K8s 架构全景:与 YARN 模式的本质差异Driver/Executor Pod 模型,与 YARN AM/Container 的架构对比,K8s Scheduler 差异
02镜像构建与依赖管理:如何打包一个可复用的 Spark 镜像官方基础镜像结构,Dockerfile 最佳实践,Python 依赖/JAR 依赖管理,镜像分层优化
03RBAC 与资源配额:K8s 权限模型在 Spark 中的应用ServiceAccount,ClusterRole/Role,ResourceQuota,LimitRange,Namespace 隔离
04Driver 与 Executor Pod 的生命周期管理Pod 调度流程,Executor 启动机制,动态资源分配(DRA),Pod 抢占与 PriorityClass
05Spark UI 访问:Ingress、NodePort 与 Headless Service三种访问方案对比,生产推荐的 Ingress 配置,History Server 的 K8s 部署
06存储与 Shuffle:PVC、HostPath 与 Remote Shuffle ServiceShuffle 文件在 K8s 中的挑战,本地 PVC 方案,Magnet/RSS/Uniffle 等远程 Shuffle Service
07Spark 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


关联专栏