![Openshift 4.x 中的对象项目和命名空间有什么区别](https://linux22.com/image/755075/Openshift%204.x%20%E4%B8%AD%E7%9A%84%E5%AF%B9%E8%B1%A1%E9%A1%B9%E7%9B%AE%E5%92%8C%E5%91%BD%E5%90%8D%E7%A9%BA%E9%97%B4%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB.png)
在 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
或Namespace
。
答案1
项目本质上与命名空间相同,但 OpenShift 为项目提供了额外的管理控制。
如果您在 OpenShift 上部署软件,那么您基本上会以与 Kubernetes 命名空间完全相同的方式使用该项目,只是可以阻止普通用户创建自己的项目,而需要集群管理员来执行此操作。(看起来您的集群允许您创建自己的项目,或者您正在使用个人集群,例如 CodeReady Containers 或其前身 Minishift。)
来自文档:
项目是 OpenShift 中隔离和协作的单位。项目有一个或多个成员、项目可能消耗的资源配额以及项目中资源的安全控制。在项目中,成员可能具有不同的角色 - 项目管理员可以设置成员资格,编辑者可以创建和管理资源,查看者可以查看但不能访问正在运行的容器。在普通集群中,项目管理员无法更改其配额 - 只有集群管理员才能更改配额。
列出或关注项目将仅返回用户具有读者角色的项目。
OpenShift 项目是 Kubernetes 命名空间的另一种表示形式。项目对最终用户公开为可编辑,而命名空间则不可以。项目的直接创建通常仅限于管理员,而最终用户应使用 requestproject 资源。