在pod中执行bash命令,该pod在Kubernetes中的另一个脚本中运行python脚本

在pod中执行bash命令,该pod在Kubernetes中的另一个脚本中运行python脚本,kubernetes,pyspark,Kubernetes,Pyspark,我正在aks Kubernetes集群中使用以下指南部署pyspark: 我已经部署了我的驱动程序吊舱,如上链接所述: apiVersion:apps/v1 种类:部署 元数据: 名称空间:spark 名称:我的笔记本部署 标签: 应用程序:我的笔记本 规格: 副本:1份 选择器: 火柴标签: 应用程序:我的笔记本 模板: 元数据: 标签: 应用程序:我的笔记本 规格: serviceAccountName:spark 容器: -姓名:我的笔记本 图片:pidocker docker r

我正在aks Kubernetes集群中使用以下指南部署pyspark:

我已经部署了我的驱动程序吊舱,如上链接所述:

apiVersion:apps/v1 种类:部署 元数据: 名称空间:spark 名称:我的笔记本部署 标签: 应用程序:我的笔记本 规格: 副本:1份 选择器: 火柴标签: 应用程序:我的笔记本 模板: 元数据: 标签: 应用程序:我的笔记本 规格: serviceAccountName:spark 容器: -姓名:我的笔记本 图片:pidocker docker registry.default.svc.cluster.local:5000/我的笔记本:最新版本 端口: -集装箱港口:8888 体积数量: -装载路径:/root/数据 姓名:我的笔记本电脑 工作目录:/root 资源: 限制: 内存:2Gi 卷数: -姓名:我的笔记本电脑 persistentVolumeClaim: 索赔名称:我的笔记本电脑 --- 版本:v1 种类:服务 元数据: 名称空间:spark 名称:我的笔记本部署 规格: 选择器: 应用程序:我的笔记本 端口: -协议:TCP 港口:29413 集群:无 然后,我可以使用以下代码创建spark cluster:

导入操作系统
从pyspark导入SparkContext,SparkConf
从pyspark.sql导入SparkSession
#为基于Kubernetes的群集管理器创建Spark配置
sparkConf=sparkConf()
sparkConf.setMaster(“k8s://https://kubernetes.default.svc.cluster.local:443")
sparkConf.setAppName(“spark”)
set(“spark.kubernetes.container.image”,“”)
set(“spark.kubernetes.namespace”,“spark”)
sparkConf.set(“spark.executor.instances”,“7”)
sparkConf.set(“spark.executor.cores”、“2”)
sparkConf.set(“spark.driver.memory”,“512m”)
sparkConf.set(“spark.executor.memory”,“512m”)
sparkConf.set(“spark.kubernetes.pyspark.pythoinversion”,“3”)
sparkConf.set(“spark.kubernetes.authenticate.driver.serviceAccountName”,“spark”)
sparkConf.set(“spark.kubernetes.authenticate.serviceAccountName”,“spark”)
sparkConf.set(“spark.driver.port”、“29413”)
sparkConf.set(“spark.driver.host”、“my notebook deployment.spark.svc.cluster.local”)
#初始化我们的Spark cluster,这实际上会
#生成工作节点。
spark=SparkSession.builder.config(conf=sparkConf.getOrCreate())
sc=spark.sparkContext
它起作用了

如何创建一个外部pod来执行驻留在我的笔记本部署中的python脚本,我可以在我的终端中执行:

kubectl exec my-notebook-deployment-7669bb6fc-29stw python3 myscript.py

但我希望能够在另一个pod中自动执行此命令。通常,您可以在其中运行指定命令的情况下启动新pod,即:

kubectl run mypod --image=python3 --command -- <cmd> <arg1> ... <argN>
kubectl运行mypod--image=python3--command--。。。

在您的情况下,您需要向pod提供myscript.py的代码(即:通过装载带有脚本内容的ConfigMap),或者基于python docker构建一个新的容器映像,并将脚本添加到映像中。

通常,您可以在运行指定命令的情况下启动新pod,即:

kubectl run mypod --image=python3 --command -- <cmd> <arg1> ... <argN>
kubectl运行mypod--image=python3--command--。。。

在您的情况下,您需要向pod提供myscript.py的代码(即:通过装载带有脚本内容的ConfigMap)或者基于python docker构建一个新的容器映像,并将脚本添加到映像中。

您可以基于pidocker docker注册表启动第二个pod。default.svc.cluster.local:5000/my notebook:k8s作业中的最新容器映像: 如果您的脚本需要访问第一个pod中可用的资源,那么您必须使用服务my notebook deployment或卷my notebook pv从第二个pod访问它们。在POD之间共享rw卷需要POD在同一节点上运行。
请注意,k8s还建议使用Cronjob:

您可以基于pidocker docker注册表启动第二个pod.default.svc.cluster.local:5000/my notebook:k8s作业中的最新容器映像: 如果您的脚本需要访问第一个pod中可用的资源,那么您必须使用服务my notebook deployment或卷my notebook pv从第二个pod访问它们。在POD之间共享rw卷需要POD在同一节点上运行。 请注意,k8s还建议: