Kubernetes Ingress 背后缺少 Zeppelin 笔记本和解释器

Posted

技术标签:

【中文标题】Kubernetes Ingress 背后缺少 Zeppelin 笔记本和解释器【英文标题】:Zeppelin Notebooks and Interpreters Missing Behind Kubernetes Ingress 【发布时间】:2020-08-06 02:50:58 【问题描述】:

在启用 Kubernetes 入口以访问我的 Zeppelin 容器后,我遇到了解释器丢失的问题。

我在 Kubernetes 上运行 Zeppelin 0.8.2,当它不在入口后面时一切正常。 我可以在笔记本创建弹出窗口中选择默认解释器,并运行段落而不会出现问题。

在 Kubernetes 中设置入口时,之前创建的笔记本和新笔记本创建期间的解释器选择会丢失。 我仍然可以访问解释器设置页面,而且它们似乎都还在。

在 zeppelin-site.xml 中进行必要的更改以在没有入口的情况下运行。

<property>
  <name>zeppelin.server.addr</name>
  <value>0.0.0.0</value>
  <description>Server binding address</description>
</property>

默认为 127.0.0.0

根据论坛讨论对 shiro.ini 所做的更改: https://community.cloudera.com/t5/Support-Questions/How-do-I-recover-missing-Zeppelin-Interpreter-tab-and-its/m-p/160680

sessionManager = org.apache.shiro.web.session.mgt.DefaultWebSessionManager 
cacheManager = org.apache.shiro.cache.MemoryConstrainedCacheManager 
securityManager.cacheManager = $cacheManager 
securityManager.sessionManager = $sessionManager 
securityManager.sessionManager.globalSessionTimeout = 86400000

下面使用的入口已更改变量名

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    ingress.kubernetes.io/ssl-redirect: "true"
  name: zeppelin-name
  namespace: namespace_here
spec:
  rules:
  - host: zeppelin.zeppelin-services.my-host.org
    http:
      paths:
      - backend:
          serviceName: zeppelin-name
          servicePort: 8080
        path: /
  tls:
  - hosts:
    - zeppelin.zeppelin-services.my-host.org
    secretName: secret-name
status:
  loadBalancer: 

我缺少什么让 Zeppelin 在 Kubernetes Ingress 后面正常工作,让我看到以前创建的笔记本,以及在创建新笔记本时出现在下拉菜单中的解释器?

【问题讨论】:

你能分享你的入口吗? @Crou,将入口添加到主帖。 【参考方案1】:

同事找到了答案。 事实证明,信息没有到达 zeppelin 页面。 经检查,出现405错误:

'wss://zeppelin.zeppelin-services.my-host.org/ws' 失败:WebSocket 握手期间出错:意外响应代码:405

他检查了 nginx-ingress pod 上的日志,发现了类似的失败消息。

问题出在使用的入口 yaml 中,需要添加到注释中

metadata:
  annotations:
    nginx.org/websocket-services: zeppelin-name

【讨论】:

关于为什么需要它的其他信息:kubernetes-ingress websocket github example 要使用 NGINX Ingress 控制器对 WebSocket 应用程序进行负载平衡,您需要将 nginx.org/websocket-services 注释添加到您的 Ingress 资源定义中。

以上是关于Kubernetes Ingress 背后缺少 Zeppelin 笔记本和解释器的主要内容,如果未能解决你的问题,请参考以下文章

service详解ingress详解

Kubernetes 学习11 kubernetes ingress及ingress controller

Kubernetes Ingress 模块初探

Kubernetes-Ingress资源详解

Kubernetes基础自学系列 | Ingress API讲解

kubernetes-Ingress nginx