在kubernetes上用齐柏林飞艇曝光spark ui

ttisahbt  于 2021-07-14  发布在  Spark
关注(0)|答案(1)|浏览(319)

首先,我对这一切(Kubernetes、安格斯、斯帕克/齐柏林飞艇……)都很陌生,如果这是显而易见的,我深表歉意。我试图在这里搜索,文档等,但找不到任何东西。
我正在尝试让spark解释器ui可以从运行在kubernetes上的齐柏林飞艇笔记本访问。我从这里了解到:http://zeppelin.apache.org/docs/0.9.0-preview1/quickstart/kubernetes.html,我的入口yaml看起来像这样:
入口.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-zeppelin-server-http
http
spec:
  rules:
  - host: my-zeppelin.my-domain
    http:
      paths:
      - backend:
          serviceName: zeppelin-server
          servicePort: 8080
  - host: '*.my-zeppelin.my-domain'
    http:
      paths:
      - backend:
          serviceName: spark-guovyx
          servicePort: 4040
status:
  loadBalancer: {}

我这里的问题是,我需要依赖服务名称(在本例中是spark guovyx)被设置为解释器pod名称,以便显示ui。但是,由于这个名称必然会改变/有不同的名称(即,我每个用户有一个解释器+解释器经常重新启动),显然我不能依赖于手动设置它。我最初的想法是对servicename使用某种通配符命名,但结果发现ingres/kubernetes不支持这一点。有什么想法吗?
谢谢。

5t7ly7z5

5t7ly7z51#

您可以创建一个新服务,并利用spark master pod的解释器设置名称标签。当齐柏林飞艇创造了一个主Spark吊舱,它添加了这个标签,它的价值是Spark。我不确定它是否能在每个用户每个解释器的设置中为多个pod工作。下面是服务的代码,一定要让我知道每个用户每个解释器的行为。

kind: Service
apiVersion: v1
metadata:
  name: sparkUI
spec:
  ports:
    - name: spark-ui
      protocol: TCP
      port: 4040
      targetPort: 4040
  selector:
    interpreterSettingName: spark
  clusterIP: None
  type: ClusterIP

然后你可以进入:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: ingress-zeppelin-server-http
http
spec:
  rules:
  - host: my-zeppelin.my-domain
    http:
      paths:
      - backend:
          serviceName: zeppelin-server
          servicePort: 8080
  - host: '*.my-zeppelin.my-domain'
    http:
      paths:
      - backend:
          serviceName: sparkUI
          servicePort: 4040
status:
  loadBalancer: {}

也做这个回购结帐https://github.com/cuebook/cuelake,它仍处于开发的早期阶段,但希望听到您的反馈。

相关问题