Stanislav Porotikov created ZEPPELIN-6168:
---------------------------------------------
Summary: Can't launch k8s interpreter with dots in pod name
Key: ZEPPELIN-6168
URL: https://issues.apache.org/jira/browse/ZEPPELIN-6168
Project: Zeppelin
Issue Type: Bug
Components: docker, interpreter-launcher, interpreter-setting,
Interpreters
Affects Versions: 0.12.0
Reporter: Stanislav Porotikov
I've also configured [trino
interpreter|https://trino.io/docs/current/overview.html] I had used to use
scoped per user mode in standard Zeppelin setup, so I tried it in my k8s
deployment. It leads Zeppelin to create a Pod and Service with the same name
like {{{{<interpreter_group>-<username>-<RANDOM_STRING>}}}} (for example
{{{}trino-mr.user-zpxesi{}}}).
But Kubernetes doesn't allow creating Service name with dots in it (more
information in
[issue|https://github.com/kubernetes/kubernetes/issues/3752#issuecomment-234752944]).
If username contains dots, it cause error:
Failure executing: POST at:
https://10.96.0.1/api/v1/namespaces/zeppelin/services. Message: Service
"trino-mr.user-zpxesi" is invalid: metadata.name: Invalid value:
"trino-mr.user-zpxesi": a DNS-1035 label must consist of lower case
alphanumeric characters or '-', start with an alphabetic character, and end
with an alphanumeric character (e.g. 'my-name', or 'abc-123', regex used for
validation is '[a-z]([-a-z0-9]*[a-z0-9])?')
I can change Service name template in interpreter Pod definition, but in this
case Zeppelin server still tries to resolve invalid interpreter Pod dns name
with dot and this cause error:
java.lang.RuntimeException
at
org.apache.zeppelin.interpreter.remote.PooledRemoteClient.callRemoteFunction(PooledRemoteClient.java:123)
at
org.apache.zeppelin.interpreter.remote.RemoteInterpreterProcess.callRemoteFunction(RemoteInterpreterProcess.java:100)
at
org.apache.zeppelin.interpreter.remote.RemoteInterpreterProcess.init(RemoteInterpreterProcess.java:104)
at
org.apache.zeppelin.interpreter.ManagedInterpreterGroup.getOrCreateInterpreterProcess(ManagedInterpreterGroup.java:72)
at
org.apache.zeppelin.interpreter.remote.RemoteInterpreter.getOrCreateInterpreterProcess(RemoteInterpreter.java:106)
at
org.apache.zeppelin.interpreter.remote.RemoteInterpreter.internal_create(RemoteInterpreter.java:156)
at
org.apache.zeppelin.interpreter.remote.RemoteInterpreter.open(RemoteInterpreter.java:128)
at
org.apache.zeppelin.interpreter.remote.RemoteInterpreter.getFormType(RemoteInterpreter.java:273)
at org.apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.java:428)
at org.apache.zeppelin.notebook.Paragraph.jobRun(Paragraph.java:68)
at org.apache.zeppelin.scheduler.Job.run(Job.java:187)
at
org.apache.zeppelin.scheduler.AbstractScheduler.runJob(AbstractScheduler.java:136)
at
org.apache.zeppelin.scheduler.RemoteScheduler$JobRunner.run(RemoteScheduler.java:186)
at
java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1128)
at
java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:628)
at java.base/java.lang.Thread.run(Thread.java:829)
--
This message was sent by Atlassian Jira
(v8.20.10#820010)