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

Bap*_*ias 7 kubernetes openshift-4 openshift

在 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
Run Code Online (Sandbox Code Playgroud)

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

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
Run Code Online (Sandbox Code Playgroud)

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

Mic*_*ton 8

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

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

来自文档

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

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

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