Openshift 4.x 中的对象项目和命名空间有什么区别

Openshift 4.x 中的对象项目和命名空间有什么区别

在 openshift 4.x 中,您有一个 API,project它似乎与完全相似,namespace当您创建一个项目时,会创建一个命名空间,反之亦然。我知道namespace是 kubernetes 中的标准对象,而项目特定于 Openshift。那么project带来了什么?

# list projects
oc get projects                                                      
NAME                                                    DISPLAY NAME   STATUS
default                                                                Active
kube-node-lease                                                        Active
kube-public                                                            Active
kube-system                                                            Active
local-storage                                                          Active
openshift                                                              Active
openshift-apiserver                                                    Active

# list namespaces
$ oc get ns
NAME                                                    STATUS   AGE
default                                                 Active   17d
kube-node-lease                                         Active   17d
kube-public                                             Active   17d
kube-system                                             Active   17d
local-storage                                           Active   16d
openshift                                               Active   17d
openshift-apiserver                                     Active   17d
openshift-apiserver-operator                            Active   17d

除了列不同之外,列表相同

oc get project foo
Error from server (NotFound): namespaces "foo" not found
oc get ns foo
Error from server (NotFound): namespaces "foo" not found

15:30 $ oc new-project foo                          
Now using project "foo" on server "https://api.goo.tadadidou.bo:6443".
...       
$ oc get project foo
NAME   DISPLAY NAME   STATUS
foo                   Active
$ oc get ns foo
NAME   STATUS   AGE
foo    Active   70s

甚至 yaml 输出也是类似的,除了字段的值Kind:ProjectNamespace

答案1

项目本质上与命名空间相同,但 OpenShift 为项目提供了额外的管理控制。

如果您在 OpenShift 上部署软件,那么您基本上会以与 Kubernetes 命名空间完全相同的方式使用该项目,只是可以阻止普通用户创建自己的项目,而需要集群管理员来执行此操作。(看起来您的集群允许您创建自己的项目,或者您正在使用个人集群,例如 CodeReady Containers 或其前身 Minishift。)

来自文档

项目是 OpenShift 中隔离和协作的单位。项目有一个或多个成员、项目可能消耗的资源配额以及项目中资源的安全控制。在项目中,成员可能具有不同的角色 - 项目管理员可以设置成员资格,编辑者可以创建和管理资源,查看者可以查看但不能访问正在运行的容器。在普通集群中,项目管理员无法更改其配额 - 只有集群管理员才能更改配额。

列出或关注项目将仅返回用户具有读者角色的项目。

OpenShift 项目是 Kubernetes 命名空间的另一种表示形式。项目对最终用户公开为可编辑,而命名空间则不可以。项目的直接创建通常仅限于管理员,而最终用户应使用 requestproject 资源。

相关内容