Kubernetes
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:
是Project
orNamespace
。
項目本質上與命名空間相同,但 OpenShift 為項目提供了額外的管理控制。
如果您在 OpenShift 上部署軟體,您基本上將使用與 Kubernetes 命名空間完全相同的方式使用該項目,除了可以阻止普通使用者創建自己的項目,需要集群管理員來執行此操作。(您的集群似乎允許您創建自己的項目,或者您正在使用個人集群,例如 CodeReady Containers 或其前身 Minishift。)
從文件:
項目是 OpenShift 中隔離和協作的單位。一個項目有一個或多個成員,項目可能消耗的資源配額,以及項目中資源的安全控制。在一個項目中,成員可能有不同的角色——項目管理員可以設置成員資格,編輯可以創建和管理資源,查看者可以看到但不能訪問正在執行的容器。在一個正常的集群項目管理員不能改變他們的配額——這僅限於集群管理員。
列出或觀看項目將僅返回使用者具有讀者角色的項目。
OpenShift 項目是 Kubernetes 命名空間的另一種表示形式。項目向最終使用者公開為可編輯的,而命名空間則不是。直接創建項目通常僅限於管理員,而最終使用者應使用 requestproject 資源。