使用 SUSE® Rancher Prime 的项目和 Kubernetes 命名空间
命名空间是 Kubernetes 的概念,它允许你在集群中使用虚拟集群。这对于将集群划分为单独的"`虚拟集群`"很有用,每个"`虚拟集群`"都有自己的访问控制和资源配额。
项目是一组命名空间,是 Rancher 引入的一个概念。项目允许你将多个命名空间作为一个组进行管理,并在其中执行 Kubernetes 操作。你可以使用项目来支持多租户,以便团队可以在集群内访问项目,而无需访问同一集群中的其他项目。
UI 上不再强调项目,因为不需要在项目范围内创建 Kubernetes 资源。但是,如果启用了旧版功能开关,则仍可以在项目范围内创建诸如 Secrets 之类的资源。 |
本文介绍项目和命名空间如何与 Rancher 一起使用。
关于命名空间
命名空间是 Kubernetes 引入的一个概念。详情请参见命名空间的官方 Kubernetes 文档。
Kubernetes 支持由同一个物理集群支持的多个虚拟集群。这些虚拟集群称为命名空间。命名空间适用于多用户分布在多个团队或项目中的环境。如果你的集群只有几个到几十个用户,你不需要创建或考虑使用命名空间。 |
命名空间提供以下功能:
-
为名称提供范围:资源名称在命名空间内必须是唯一的,但跨命名空间时则不需要。命名空间不能相互嵌套,每个 Kubernetes 资源只能位于一个命名空间中。
-
资源配额:命名空间提供了在多用户之间划分集群资源的方法。
你可以在项目级别分配资源,以便项目中的每个命名空间都可以使用这些资源。你也可以通过将资源显式分配给命名空间来绕过此继承模式。
你可以将以下资源直接分配给命名空间:
为了在 vanilla Kubernetes 集群中管理权限,集群管理员要为每个命名空间配置基于角色的访问策略。Rancher 在项目级别上分配用户权限,项目中的命名空间会自动继承项目的权限。
有关创建和移动命名空间的更多信息,请参阅命名空间。
命名空间和 kubectl 的 RBAC 问题
由于项目是 Rancher 引入的概念,因此 kubectl 不能将命名空间的创建限制在创建者可以访问的项目中。
这意味着当具有项目范围权限的普通用户使用 kubectl
创建命名空间时,由于 kubectl
不需要将新命名空间限制在特定项目中,创建的命名空间可能无法使用。
如果你的权限仅限于项目级别,则最好通过 Rancher 创建命名空间,以确保你有权访问该命名空间。
如果普通用户是项目所有者,则该用户将能够在该项目中创建命名空间。Rancher UI 将阻止该用户在他们有权访问的项目之外创建命名空间。
关于项目
在层次结构方面:
-
集群包含项目
-
项目包含命名空间
你可以使用项目来支持多租户,以便团队可以在集群内访问项目,而无需访问同一集群中的其他项目。
在 Kubernetes 的基础版本中,RBAC 或集群资源等功能被分配给了各个命名空间。项目允许你让个人或团队同时访问多个命名空间来节省时间。
你可以使用项目来执行以下操作:
创建集群时,会在其中自动创建两个项目:
集群的 Default 项目
使用 Rancher 配置集群时,Rancher 会自动为集群创建一个 default
项目。你可以使用这个项目来开始使用集群。但你始终可以删除该项目,并用具有更多描述性名称的项目替换它。
如果你只需要使用 default
命名空间,那么你就不需要 Rancher 中 Default 之外的其他项目。
如果你需要 Default 之外的其他项目,你可以在 Rancher 中创建更多项目来隔离命名空间、应用和资源。
System 项目
故障排除时,你可以查看 system
项目来检查 Kubernetes 系统中重要的命名空间是否正常。这是一个易于访问的项目,能让你避免对系统命名空间容器进行逐个排查。
要打开这个项目,请打开集群视图并单击system
项目中的所有命名空间。
system
项目:
-
在你配置集群时自动创建。
-
列出存在于
v3/settings/system-namespaces
中的所有命名空间(如果存在)。 -
允许你添加更多命名空间,或将项目内的命名空间移动到其他项目。
-
无法删除,因为它是集群操作所必需的。
在启用了项目网络隔离的 RKE 集群中, |
Pod 安全策略
Rancher 在 Kubernetes 之上进行了扩展,除了集群级别之外,还允许在项目级别应用 Pod 安全策略。但是,最佳实践是在集群级别应用 Pod 安全策略。
创建项目
本节介绍如何创建具有名称以及可选 pod 安全策略、成员和资源配额的新项目。
2. 可选:选择 Pod 安全策略
此选项仅在 Pod 安全策略已创建时可用。有关说明,请参阅创建 Pod 安全策略。
将 PSP 分配给项目将:
-
覆盖集群的默认 PSP。
-
将 PSP 应用于项目。
-
将 PSP 应用到后续添加到项目中的命名空间。
3. 推荐:添加项目成员
使用成员为其他用户提供项目访问权限和角色。
默认情况下,你的用户会被添加为项目的 Owner
(所有者)。
权限说明:
|
要添加成员:
-
在成员选项卡中,单击添加。
-
在选择成员字段中,搜索要分配项目访问权限的用户或组。请注意,如果你启用了外部身份验证,则只能搜索组。
-
在项目权限中选择一个角色。如需更多信息,请参阅项目角色文档。
4. 可选:添加资源配额
资源配额用于限制项目(及其命名空间)可以使用的资源。有关详细信息,请参阅资源配额。
要添加资源配额:
结果:项目已创建。你可以从集群的项目/命名空间视图中查看它。
字段 | 描述 |
---|---|
项目限制 |
项目的总资源限制。 |
命名空间默认限制 |
每个命名空间的默认资源限制。此限制在创建时会沿用到项目中的每个命名空间。项目中所有命名空间的限制之和不应超过项目限制。 |
删除项目
-
在左上角,单击 ☰ > 集群管理。
-
在集群页面上,转到项目连接的集群,然后单击 Explore。
-
单击
。 -
找到要删除的项目,点击 ⋮。
-
选择删除。
删除项目时,以前与该项目关联的任何命名空间都将保留在集群上。你可以在 Rancher UI 项目/命名空间页面的不在项目内选项卡中找到这些命名空间。你可以通过移动来将它们重新分配给项目。