Github user matyix commented on the issue: https://github.com/apache/zeppelin/pull/2637 @echarles @zjffdu @felixcheung It is absolutely makes sense to keep this PR and make further work with it. Just to re-empahsize, the goal is to enable Zeppelin to submit notebooks to a Kubernetes cluster invoking spark-submit in `cluster` deploy mode. Please find below a couple of advantages the cluster mode has comparing to the client mode: - currently the cluster client mode appears to have some problems - I faced exactly the same problems what you have described in the [PR](https://github.com/apache-spark-on-k8s/spark/pull/456) when running multiple interpreters and Iâm not sure if whether these problems will be resolved and client mode will be supported (I have some PR's on Spark-k8s fork and will catch up with the folks regarding this topic) - in cluster mode you are running Zeppelin server and each `RemoteInterpreterServer` process (Spark Driver) is running in **separate** pods which fits better to Kubernetes best practices/patterns (instead of having one monolith RIS) - the latest Spark Driver creates a separate K8S Service to handle Executor --> Driver connections in cluster mode, which again fits better in Kubernetes best practices/patterns - this solution works regardless of Zeppelin server running in/outside of cluster if we add the option to set up authentication info for Zeppelin - it is using `spark-submit` and `interpreter.sh` and simplifies a bit the `spark-submit` command for K8S. Other than this the PR created `SparkK8RemoteInterpreterManagedProcess` to simplify connection to `RemoteInterpreterServer` in K8S clusters, so we are using K8S client to look up the Driver pod then create a K8S Service is bounded to `RemoteInterpreterServer` running inside Driver pod - overall this may seem a bit more complicated then client mode however it works better and fits better in Kubernetes cluster best practices/patterns - if you have some ideas about a better way to place this functionality in Zeppelin, please let me know Overall this is a way better and cleaner approach which fits the K8S ecosystem and at the same time has no side-effect for those not willing to use K8S. I will update the PR regardless to fix the merge conflicts and add some minor changes/improvements - I am using this PR extensively on a few large K8S clusters and it works/fits our needs on K8S and complies with the our K8S cluster standards/best practices.
---