K8S上的Livy,命名空间限制



我在K8S上的特定命名空间中运行了spark(3.0.1(、livy(0.8.0(和Jupyterhub(sparkmagic(,Kubernetes master用作资源管理器。

当试图在Jupyterhub的笔记本中创建pyspark会话时,我得到了错误:

04年2月22日12:09:16警告交互会话:无法停止RSCDriver。杀死它…2004年2月22日12:09:18 WARN交互会话:错误停止会话2。io.fabric8.kubernetes.client.KuberneteClientException:失败正在执行:GET位置:https://kubernetes.default.svc.cluster.local/api/v1/pods?labelSelector=spark-应用标记%2Spark角色%3Driver%2Spark应用选择器。留言:禁止!配置的服务帐户没有访问权限。服务帐户可能已被吊销。pods被禁止:用户"system:serviceaccount:namespace:livy-acc"无法列出资源"pods";在API组中"在集群范围内。

此错误表明livy的Kubernetes客户端试图在集群范围内列出所有pod,但没有权限这样做。

是否可以限制/限制livy在Kubernetes上的某个命名空间中操作,因为出于一些安全考虑,放弃集群角色不是一种选择。

在此回购中对livy 0.8.0进行代码检查期间:https://github.com/jahstreet/incubator-livy.git--分支合并/首先我发现了一些未记录的livy.server.kubernetes.*属性,这些属性可以用来配置livy在K8S上的运行方式。

对于K8S命名空间限制,可以使用以下属性:

# Comma-separated list of the Kubernetes namespaces to allow for applications creation.
# All namespaces are allowed if empty
livy.server.kubernetes.allowedNamespaces = namespace
# Kubernetes client default namespace
livy.server.kubernetes.defaultNamespace = namespace

最新更新