如何在 Kubernetes 上将首选服务名称设置为 Spark 驱动程序

问题描述 投票:0回答:1

我想设置 Ingres 来访问部署在 Kubernetes 集群上的 Spark Web UI。

我创建了 Ingress:

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

问题是 Spark 生成服务名称

spark-[randomServiceId]-driver-svc
,因此我们无法使用指定的常量服务名称配置 Ingress,例如“some-test-job-v1-ui-svc”。 描述了设置首选服务名称的可能性,但是我应该传递什么属性? 尝试过
spark.kubernetes.resourceNamePrefix: "test"
,但仍然用
serviceRandomId
创建。

apache-spark kubernetes kubernetes-ingress kubernetes-service
1个回答
0
投票

不幸的是,您似乎无法设置该属性,请参阅相关代码herehere

但是,从 Spark 3.2 开始,您可以实现自定义功能步骤类,该类可以在创建 Driver 服务后执行代码,因此您可以实现将服务名称保存到配置映射的代码。稍后您可以使用配置映射中的值来初始化您的 Ingress 对象。 请参阅

https://spark.apache.org/docs/latest/running-on-kubernetes.html
中的 spark.kubernetes.driver.pod.featureSteps 属性。

请注意,这只是一个想法,我自己还没有尝试过。

© www.soinside.com 2019 - 2024. All rights reserved.