我正在使用 Spark 2.4.5 通过 spark-submit 命令在 kubernetes 上运行 spark 应用程序。应用程序在尝试写入此处详述的输出时失败,可能是由于安全上下文不正确的问题。所以我尝试设置安全上下文并运行应用程序。我通过创建此处提到的 pod 模板来做到这一点,但我无法验证 pod 模板是否已正确设置(因为我找不到合适的示例),或者是否可以从驱动程序和执行程序访问pods(因为我在驱动程序或 kubernetes 日志中找不到与模板相关的任何内容)。这是我用来设置安全上下文的 pod 模板的内容。
apiVersion: v1
kind: Pod
metadata:
name: spark-pod-template
spec:
securityContext:
runAsUser: 1000
这是我使用的命令。
<SPARK_PATH>/bin/spark-submit --master k8s://https://dssparkcluster-dns-fa326f6a.hcp.southcentralus.azmk8s.io:443 \
--deploy-mode cluster --name spark-pi3 --conf spark.executor.instances=2 \
--conf spark.kubernetes.authenticate.driver.serviceAccountName=spark \
--conf spark.kubernetes.container.image=docker.io/datamechanics/spark:2.4.5-hadoop-3.1.0-java-8-scala-2.11-python-3.7-dm14 \
--conf spark.kubernetes.driver.volumes.persistentVolumeClaim.azure-fileshare-pvc.options.claimName=azure-fileshare-pvc \
--conf spark.kubernetes.driver.volumes.persistentVolumeClaim.azure-fileshare-pvc.mount.path=/opt/spark/work-dir \
--conf spark.kubernetes.executor.volumes.persistentVolumeClaim.azure-fileshare-pvc.options.claimName=azure-fileshare-pvc \
--conf spark.kubernetes.executor.volumes.persistentVolumeClaim.azure-fileshare-pvc.mount.path=/opt/spark/work-dir \
--conf spark.kubernetes.driver.podTemplateFile=/opt/spark/work-dir/spark_pod_template.yml \
--conf spark.kubernetes.executor.podTemplateFile=/opt/spark/work-dir/spark_pod_template.yml \
--verbose /opt/spark/work-dir/wordcount2.py
我已将 pod 模板文件放在安装在 /opt/spark/work-dir 的持久卷中。我的问题是:
- 是否可以从持久卷访问 pod 模板文件?
- 文件内容的格式是否适合设置 runAsUser?
- Spark 2.4.5 是否支持 Pod 模板功能?尽管在 2.4.5文档中提到可以使用 pod 模板实现安全上下文,但在 3.2.0文档中没有 pod 模板部分。
任何帮助将不胜感激。谢谢。