kubeflow中文文档-v0.6 多用户隔离 Multi-us
1. 什么是多用户隔离(Multi-user Isolation)
多用户隔离是对不同用户之间使用资源的隔离。在kubeflow v0.6以上的版本,kubeflow支持的在kubeflow部署中对用户创建的资源进行多用户隔离。这个功能额主要目的是是多个用户可以共享一个集群上的kubeflow但是不会影响彼此创建的资源。隔离机制还可以防止意外删除/修改部署中其他用户的资源。当然需要注意一点:kubeflow并没有提供一个安全的多用户隔离的机制,用户还是可以通过namespace来恶意渗透到其他用户的个人资料当中。
2.使用概述
kubeflow中的profile
资源会与k8s中 namesapce
会拥有相同的名字。每一个用户都会创建一个自己的profile
资源。一个用户可以与其他用户分享自己的profile
。当一个用户分享自己的profile
与其他用户时可以决定分享只读权限或者是可写权限。
一个profile的示例:
$ cat << EOF > profile.yaml
apiVersion: kubeflow.org/v1alpha1
kind: Profile
metadata:
name: profileName # replace with the name of profile you want
spec:
owner:
kind: User
name: userid@email.com # replace with the email of the user
EOF
在kubeflow central dashboard中,我们可以看到namespace
和profile
是互相绑定的。
3.例子
注意⚠️:由于profile
和Kubernetes 中的namespace
是一一对应的,所以在以下文档中这个两个名词可能会进行混用。
- 用户可以从kubeflow控制面板中的上部选择
namespace
(profile
,因为这两个资源的名字相同,可以认为是多用户隔离中的一个标志)。一个用户只会看到他自己有权限(可读或者可写都可以)的namespace
。
Jupyter notebooks服务是第一个完全集成多用户隔离功能的服务,后面将以它作为例子来讲。
- 当用户选择了一个
namespace
,Notebooks Servers UI 将只显示相应namespace
下的notebook。其他的notebook对于这个namespace
下的用户是隐藏状态。
- 当一个没有授权的用户去查看这个页面的时候就会报错:
用户可以通过这个UI界面去创建一个新的Jupyter notebook server,而这个Jupyter notebook server的pod就会建立在这个'namespace'底下。用户对于自己的'namespace'是拥有着读和创建的权利,但是对于只读权限的namespace
,就只能读而不能创建新的Jupyter notebook server。
4.在页面上创建一个新用户
kubeflow v0.6.2提供了在用户登录成功时自动创创建profile
的功能。并且一个管理员用户(administrator)可以在kubeflow集群中为任何用户创建profile
。
解释一下,管理员用户(administrator)就是Kubernetes集群中拥有管理员权限的用户,这个用户拥有在这个集群中创建任意资源的权利。
- 自动创建
profile
kubeflow v0.6.2提供了自动创建profile
功能。- 在kubeflow部署过程中会自动的为部署的用户创建一个
profile
。当这个用户登录到这个控制面板时直接就能看到他的profile
(在namespace
中可以看到,这两个资源同名)。 - 当一个用户第一次登入到控制面板时,就会出发一次
profile
的自动创建,会有如下引导。-
-
为你的
profile
取一个名字
-
- 在kubeflow部署过程中会自动的为部署的用户创建一个