我已经使用以下命令从目录中创建了HTTP服务器:
python -c 'import BaseHTTPServer as bhs, SimpleHTTPServer as shs; bhs.HTTPServer(("0.0.0.0", 8089), shs.SimpleHTTPRequestHandler).serve_forever()'
我使用Spark-K8s运算符执行Spark应用程序。作为主文件,我想使用存储在目录中的jar文件(从中创建http服务器)。但是,我不知道应将目录映射到哪个主机,以便在部署中运行的Spark应用程序可以使用该目录。 当我在当前主机上运行它时,出现此连接错误:
java.net.ConnectException: Connection refused
基本上,我有HTTP服务器,它引用指定的主机和端口,并且我想在K8上使用Spark运行此jar文件。如何定义此主机?
目前,应用程序定义如下:
apiVersion: sparkoperator.k8s.io/v1alpha1
kind: SparkApplication
metadata:
name: spark-example
namespace: default
spec:
type: Scala
image: gcr.io/spark-operator/spark:v2.4.0
mainClass: org.apache.spark.examples.SparkExample
mainApplicationFile: https://0.0.0.0:8089/spark_k8s_airflow.jar
mode: cluster
deps: {}
driver:
coreLimit: 1000m
cores: 0.1
labels:
version: 2.4.0
memory: 1024m
serviceAccount: intended-mink-spark
executor:
cores: 1
instances: 1
labels:
version: 2.4.0
memory: 1024m
imagePullPolicy: Never
答案 0 :(得分:1)
基本上,我有HTTP服务器,它引用指定的主机和端口,并且我想在K8上使用Spark运行此jar文件。如何定义此主机?
kubernetes的方式是通过Service
进行操作,默认情况下,它会以service-name.service-namespace.svc.cluster.local
的形式创建DNS条目,其中service-name
和service-namespace
不是这些文字,但其他3个字面上是。但是,如果您只是想玩转而创建一个Service
太多的工作,则可以使用运行SimpleHTTPServer
的Pod的当前IP。
mainApplicationFile: https://0.0.0.0:8089/spark_k8s_airflow.jar
请注意,至少在编写上面的python示例时,您不能使用https:
,因为SimpleHTTPServer
就是 HTTP 。可能您可以说服其中一个内置程序包提供https服务,但键入的内容会更多,并且可能不值得花大力气