我想设置 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
创建。
不幸的是,您似乎无法设置该属性,请参阅相关代码here和here。
但是,从 Spark 3.2 开始,您可以实现自定义功能步骤类,该类可以在创建 Driver 服务后执行代码,因此您可以实现将服务名称保存到配置映射的代码。稍后您可以使用配置映射中的值来初始化您的 Ingress 对象。 请参阅
https://spark.apache.org/docs/latest/running-on-kubernetes.html中的
spark.kubernetes.driver.pod.featureSteps
属性。
请注意,这只是一个想法,我自己还没有尝试过。