Kubernetes

Openshift 4.x 中的對象項目和命名空間有什麼區別

  • July 17, 2020

在 openshift 4.x 中,您有一個 APIproject似乎與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:Projector Namespace

項目本質上與命名空間相同,但 OpenShift 為項目提供了額外的管理控制。

如果您在 OpenShift 上部署軟體,您基本上將使用與 Kubernetes 命名空間完全相同的方式使用該項目,除了可以阻止普通使用者創建自己的項目,需要集群管理員來執行此操作。(您的集群似乎允許您創建自己的項目,或者您正在使用個人集群,例如 CodeReady Containers 或其前身 Minishift。)

文件

項目是 OpenShift 中隔離和協作的單位。一個項目有一個或多個成員,項目可能消耗的資源配額,以及項目中資源的安全控制。在一個項目中,成員可能有不同的角色——項目管理員可以設置成員資格,編輯可以創建和管理資源,查看者可以看到但不能訪問正在執行的容器。在一個正常的集群項目管理員不能改變他們的配額——這僅限於集群管理員。

列出或觀看項目將僅返回使用者具有讀者角色的項目。

OpenShift 項目是 Kubernetes 命名空間的另一種表示形式。項目向最終使用者公開為可編輯的,而命名空間則不是。直接創建項目通常僅限於管理員,而最終使用者應使用 requestproject 資源。

引用自:https://serverfault.com/questions/1025637