【问题标题】:Pod template for specifying tolerations when running Spark on Kubernetes用于在 Kubernetes 上运行 Spark 时指定容限的 Pod 模板
【发布时间】:2019-09-30 14:16:27
【问题描述】:

我在尝试通过 Kubernetes 调度程序启动 Spark 作业时遇到了一些问题。

我希望我的所有驱动程序/执行程序 pod 都生成到具有一定污点的节点上。因此,我想指定将直接注入到 pod 配置文件中的容忍度。目前,没有直接来自spark-submit 命令的默认方式

根据thisthis,用户应该可以指定一个pod模板,可以使用以下参数进行设置:spark.kubernetes.driver.podTemplateFilespark.kubernetes.executor.podTemplateFile

我尝试使用以下文件在spark-submit 命令中指定这些参数:

pod_template.template

apiVersion: v1
kind: Pod
spec:
  tolerations:
  - effect: NoSchedule
    key: dedicated
    operator: Equal
    value: test

但是,这种容忍度永远不会添加到已启动的驱动程序 pod 中。目前有办法解决这个问题吗?

作为参考,这里是完整的 spark-submit 命令:

/opt/spark/bin/spark-submit --name spark-pi --class org.apache.spark.examples.SparkPi --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.persistent.options.claimName=pvc-storage --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.persistent.mount.subPath=test-stage1/spark --conf spark.executor.memory=1G --conf spark.executor.instances=1 --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.persistent.mount.subPath=test-stage1/spark --conf spark.kubernetes.executor.limit.cores=1 --conf spark.kubernetes.authenticate.driver.serviceAccountName=spark --conf spark.kubernetes.namespace=test-stage1 --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.persistent.mount.path=/persistent --conf spark.kubernetes.driver.limit.memory=3G --conf spark.kubernetes.executor.volumes.persistentVolumeClaim.persistent.mount.path=/persistent --conf spark.submit.deployMode=cluster --conf spark.kubernetes.container.image=<SPARK IMAGE> --conf spark.master=k8s://https://kubernetes.default.svc --conf spark.kubernetes.driver.limit.cores=1  --conf spark.executor.cores=1 --conf spark.kubernetes.driver.volumes.persistentVolumeClaim.persistent.options.claimName=pvc-storage --conf spark.kubernetes.container.image.pullPolicy=Always --conf spark.kubernetes.executor.podTemplateFile=//opt/pod_template.template --conf spark.kubernetes.driver.podTemplateFile=//opt/pod_template.template local:///opt/spark/examples/src/main/python/pi.py 100

【问题讨论】:

    标签: apache-spark kubernetes pyspark kubernetes-pod


    【解决方案1】:

    我检查了各种文档,发现这里可能配置错误的东西很少:

    1. 你的pod_template.template 应该在末尾有.yaml
    2. 您没有在spark-submit 命令中指定spark.kubernetes.driver.pod.name,也没有在pod_template.template.yaml 中以metadata 的形式指定
    3. 在为spark.kubernetes.driver.podTemplateFile=spark.kubernetes.executor.podTemplateFile= 指定路径时,您使用了双//
    4. 你应该把你所有的容忍放在"",例如:effect: "NoSchedule"

    如果有帮助,请告诉我。

    【讨论】:

    • @toerq 以上有帮助吗?
    • 这对我有帮助,感谢您的注释。
    【解决方案2】:

    您没有指定使用哪个版本的 Spark?我不认为 spark.kubernetes.driver.podTemplateFilespark.kubernetes.executor.podTemplateFile 在 Spark 3.0 之前可用。

    这里是Spark JIRA issue,它增加了对以上 2 个配置选项的支持。仅适用于 Spark 3.0 分支。

    【讨论】:

      猜你喜欢
      • 2015-02-26
      • 1970-01-01
      • 2021-04-26
      • 2020-05-13
      • 2021-07-19
      • 2021-08-18
      • 1970-01-01
      • 2020-09-07
      • 2015-08-18
      相关资源
      最近更新 更多