如何为Kubernetes上的Spark Driver设置Preferred Service Name
解决Spark on Kubernetes固定Driver Service名称以配置Ingress的问题
要让Spark在Kubernetes集群中生成固定名称的Driver Service(不带随机后缀),你需要使用spark.kubernetes.driver.service.name配置参数,而非你尝试的spark.kubernetes.resourceNamePrefix。
具体操作
提交Spark作业时,添加该配置项直接指定固定的Service名称,比如你需要的some-test-job-v1-ui-svc:
spark-submit \ --master k8s://https://<你的K8s API服务器地址> \ --deploy-mode cluster \ --name some-test-job-v1 \ --conf spark.kubernetes.driver.service.name=some-test-job-v1-ui-svc \ # 补充其他必要配置(如镜像、资源限制等) 你的Spark作业.jar
参数说明
spark.kubernetes.driver.service.name:直接为Driver指定固定的Service名称,生成的Service完全匹配你设置的值,不会附加随机ID,正好满足Ingress对固定服务名称的需求。spark.kubernetes.resourceNamePrefix:仅为所有K8s资源(Pod、Service等)添加前缀,仍会保留随机后缀,无法生成完全固定的Service名称,不适合你的场景。
对应的Ingress配置
你的Ingress配置无需修改,因为Service名称已固定为some-test-job-v1-ui-svc,可以直接匹配:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: some-test-job-v1 spec: ingressClassName: nginx-private rules: - host: some-test-job-v1.spark.example.com http: paths: - path: / pathType: Prefix backend: service: name: some-test-job-v1-ui-svc port: number: 4040 tls: - hosts: - some-test-job-v1.spark.example.com secretName: some-test-job-v1-spark-example-com
内容的提问来源于stack exchange,提问作者Vadim Yangunaev
相关产品推荐
相关产品推荐

