创建命名空间
在项目关联的集群下,基于项目可用配额,创建新的命名空间。
新的命名空间将使用项目已有的资源(内存、CPU 等),且一个命名空间的所有资源只能来源于同一个集群。
创建命名空间
-
在 项目管理 视图,单击待创建命名空间的 项目名称。
-
在左侧导航栏中,单击 命名空间 > 命名空间。
-
单击 创建命名空间。
-
配置 基本信息。
参数 说明 所属集群 在项目已关联的集群中,选择一个要创建命名空间的集群。 命名空间 命名空间的名称,名称的固定前缀为项目名称。 -
(可选)配置 资源配额。
命名空间下每指定一个容器的计算或存储资源限额(limits),或者每新增一个 Pod 或 PVC,都将占用此处所设配额。
说明:
-
命名空间的资源配额,来源于集群分配给项目的配额。对于某一种资源,可设置的最高配额为在项目中的尚未使用的资源配额,如果任意一种资源的可使用量为 0,将无法继续创建命名空间,请联系平台管理员获得支持。
-
仅当集群中部署了 GPU(vGPU 或 pGPU)资源时,支持配置 GPU 资源配额。当 GPU 资源为 vGPU 资源时,同时支持配置 显存 配额。
GPU 单位:100 个单位的虚拟核心等于 1 个物理核心(1 颗 pGPU = 1 核 = 100 vGPU),pGPU 的单位为颗,只能整颗分配;1 个单位的显存为 256 Mi,1024 Mi = 1 Gi。
-
如果未输入某类资源的配额,默认为 不限制。即命名空间可按需占用集群已分配给项目的可用的相应类型的资源,无限额。
配额参数说明
分类 配额类型 值和单位 说明 存储配额 全部 Gi 此命名空间中所有的持久卷声明(PVC),其请求的存储容量的总和不能超过该值。 存储类 此命名空间中,与所选存储类关联的所有持久卷声明(PVC),其请求的存储容量的总和不能超过该值。
注意:请提前将存储类分配至命名空间所在的项目。扩展资源 从配置字典(ConfigMap)中获取,具体请参考 扩展资源说明。 - 若不存在对应配置字典,则此分类不显示。 其他配额 输入自定义配额,具体输入规则请参考 其他配额说明。 - 为了避免出现资源重复定义的问题,不允许使用以下值作为配额类型: - limits.cpu
- limits.memory
- requests.cpu
- requests.memory
- pods
- cpu
- memory
-
-
(可选)配置 容器限制范围。
使用 Kubernetes LimitRange 作为准入控制器,为所有未指定计算资源的容器设置默认的请求值和限制值,并持续跟踪容器使用量,确保命名空间中不存在超出最大值的资源。
说明:容器的资源请求为资源限制与集群超售比的比值。资源请求值供调度器调度容器时参考和判断。调度器会检测每个节点可用于分配的资源(资源总额 - 已调度到节点上 Pod 内的容器的资源请求之和),当新建的 Pod 内容器的资源请求总和超过了节点的剩余可用资源,该 Pod 将不会被调度到此节点上。
参数 说明 默认请求值、默认限制值 用于指定命名空间下容器运行所需的资源默认值。 最大值 用于指定命名空间下容器运行允许使用的最大资源值。 -
(可选)容器组安全策略可以限制容器组中的容器使用哪些特权或功能,以及规定容器组中的容器如何运行,平台基于 PSA(Pod Security Admission)实现了更加细粒度的容器组安全策略。它定义了三种安全安全模式和安全标准:
-
安全模式:Kubernetes 中的安全模式(Security Mode)是一种控制安全策略的机制,用于定义 Kubernetes 如何处理违反安全策略的容器组。更多更多细节请参考 官方文档 ,安全模式可以分为以下三种:
-
Enforce 模式:当容器组违反了安全策略时,Kubernetes 将拒绝该容器组的创建或修改,并返回错误信息,适合对安全要求较高的生产环境使用。
-
Audit 模式:当容器组违反了安全策略时,Kubernetes 将记录该事件,并将记录存储在审计日志中。这种模式通常用于了解集群中的安全事件,以便进行后续的调查和分析。
-
Warn 模式:当容器组违反了安全策略时,Kubernetes 将允许该容器组的创建或修改,并返回警告信息。这种模式通常用于测试或过渡期,以便管理员可以逐步调整安全策略而不会对应用程序造成影响。
-
-
安全标准:Pod 安全性标准定义了三种不同的策略(Policy),以广泛覆盖安全应用场景,更多细节请参考 官方文档 。
-
Privileged 标准:容器组中的容器拥有特权访问,允许所有操作,没有任何限制。
-
Baseline 标准:限制容器组中的容器使用宿主机的命名空间、网络、文件系统、进程等。这是一种默认的安全标准,通常适用于大多数场景。
-
Restricted 标准:进一步限制容器组中的容器使用宿主机的资源,包括限制容器使用文件系统、网络等。这是一种高度安全的标准,适用于对安全性要求非常高的场景。 这些安全标准可以通过 Kubernetes 中的 Admission Controller 对容器组进行验证,以确保容器组中的容器不会破坏 Kubernetes 集群的安全性。
-
-
-
(可选)在 更多配置 区域,为当前命名空间添加标签(labels)、注解(annotations)。
提示:可通过标签定义命名空间的属性,或通过注解为命名空间补充附加信息,两者均可用于过滤、筛选命名空间。
-
单击 创建。
相关操作
删除/移除命名空间
在指定的项目下,删除/移除一个命名空间。
删除命名空间:删除命名空间并清理命名空间下已有资源,释放命名空间占用的配额资源。
移除命名空间:移除命名空间只是将该命名空间移除出项目,不影响命名空间下已有资源。例如:应用、持久卷声明、配置、计算、命名空间成员及其角色等。
移除后的命名空间,可导入其他关联了该命名空间所在集群的项目下管理。具体操作请参考
导入命名空间
。
相关说明
其他配额说明
自定义配额名称格式必须符合如下规范:
-
若自定义配额名称中不包含斜杠(/):必须以字母或数字开始和结束,可以包含字母、数字、短横线(-)、下划线(_)或点(.),通过这些字符的组合形成了 合格名称,其最大长度为 63 个字符。
-
若自定义配额名称中包含斜杠(/):名称分为前缀和名称两个部分,形式为:前缀/名称。其中,前缀必须是 有效的 DNS 子域,而名称必须遵循 合格名称 的规则。
-
DNS 子域:
-
标签:必须由小写字母、数字开始和结束,可以包含短横线(-),但不能仅由短横线组成,其最大长度为 63 个字符。
-
子域:扩展了标签的规则,允许通过点(.)连接多个标签形成子域,其最大长度为 253 个字符。
-
-
扩展资源说明
扩展资源中的 配额类型 从配置字典(ConfigMap)中获取,若不存在对应配置字典,则此分类不显示。
配置字典字段说明
| 字段 | 说明 |
|---|---|
| data.dataType | 指定值(value)的数据类型。 |
| data.defaultValue | 设置默认值。若该字段不存在或值为空,则表示无默认值。 |
| data.descriptionEn | 英文提示信息,可单击值右侧的 图标进行查看。 |
| data.descriptionZh | 中文提示信息,可单击值右侧的 图标进行查看。 |
| data.excludeResources | 互斥的资源。此字段用于添加不能同时配置的资源,多个资源间使用 , 进行分隔。 |
| data.group | 组别 |
| data.groupI18n | 组别的中英文名称,可在配额类型对应的下拉选项中进行查看和选择。适用于同一个资源存在一个或多个值的情况。 |
| data.key | 指定键(key)的值,一个配置字典只能描述一个 key。 |
| data.labelEn/data.labelZh | 资源的英文/中文名称,可在配额类型对应的下拉选项中进行查看和选择。此字段和 data.groupI18n 字段的功能相同,但仅适用于同一个资源只有一个值的情况,可以兼容旧版配置字典(ConfigMap)。 |
| data.limits | 是否为资源配置 limits 值。可填写的值包括:disabled 表示禁用即不可为资源配置 limits 值、required 表示必须输入、optional 表示可选输入。 |
| data.requests | 是否为资源配置 requests 值。可填写的值包括:disabled 表示禁用即不可为资源配置 requests 值、required 表示必须输入、optional 表示可选输入、fromLimits 表示和 limits 一样使用相同配置。 |
| data.relatedResources | 关联的资源。此字段为预留字段,目前不可使用。 |
| data.resourceUnit | 资源的单位,需输入英文字母,暂不支持输入中文。 |
| data.runtimeClassName | 需要的运行时类,默认为空,可选值 nvidia。 |
| metadata.labels |
|
| metadata.name | 格式为 cf-crl-<groupName>-<name>,其中,
|
| metadata.namespace | 必须指定为 kube-public 命名空间,不可更改。 |
配置字典配置示例
本文档仅提供了物理 GPU、GPU Manager 核心数及显存、MPS 核心数及显存的 YAML 配置示例,若需使用其他资源,请参考上述字段说明进行自定义。
-
物理 GPU 配置示例
apiVersion: v1 data: dataType: integer defaultValue: "1" descriptionEn: GPU quantity, descriptionZh: GPU 数量 excludeResources: nvidia.com/mps-core,nvidia.com/mps-memory,tencent.com/vcuda-core,tencent.com/vcuda-memory group: nvidia-device-plugin groupI18n: '{"zh": "pGPU", "en": "pGPU"}' key: nvidia.com/gpu labelEn: GPU core labelZh: 物理 GPU limits: optional relatedResources: "" requests: disabled resourceUnit: count runtimeClassName: nvidia kind: ConfigMap metadata: labels: features.cpaas.io/enabled: "true" features.cpaas.io/group: nvidia-device-plugin features.cpaas.io/type: CustomResourceLimitation name: cf-crl-nvidia-device-plugin namespace: kube-public -
GPU Manager 配置示例
-
GPU Manager 核心数:
apiVersion: v1 data: dataType: integer defaultValue: "20" descriptionEn: "GPU vcore count,100 vcore equals 1 GPU core " descriptionZh: 虚拟 GPU 核心数,100个虚拟核心等于 1 个 GPU 物理核心 excludeResources: nvidia.com/gpu,nvidia.com/mps-core,nvidia.com/mps-memory group: gpu-manager groupI18n: '{"zh": "GPU Manager", "en": "GPU Manager"}' key: tencent.com/vcuda-core labelEn: GPU vcore labelZh: 虚拟 GPU limits: optional relatedResources: tencent.com/vcuda-memory requests: disabled resourceUnit: vcore runtimeClassName: "" kind: ConfigMap metadata: labels: device-recource.cpaas.io/config: "true" features.cpaas.io/enabled: "true" features.cpaas.io/group: gpu-manager features.cpaas.io/type: CustomResourceLimitation name: demo-gpu-manager-core namespace: kube-public -
GPU Manager 显存:
apiVersion: v1 data: dataType: integer defaultValue: "20" descriptionEn: GPU vmemory, 256 Mi physical memory per Unit descriptionZh: 虚拟 GPU 显存,每单位等于 256Mi 显存 excludeResources: nvidia.com/gpu,nvidia.com/mps-core,nvidia.com/mps-memory group: gpu-manager groupI18n: '{"zh": "GPU Manager", "en": "GPU Manager"}' key: tencent.com/vcuda-memory labelEn: GPU vmemory labelZh: 显存 limits: optional relatedResources: tencent.com/vcuda-core requests: disabled resourceUnit: unit runtimeClassName: "" kind: ConfigMap metadata: labels: device-recource.cpaas.io/config: "true" features.cpaas.io/enabled: "true" features.cpaas.io/group: gpu-manager features.cpaas.io/type: CustomResourceLimitation name: demo-gpu-manager-memory namespace: kube-public
-
-
MPS 配置示例
-
MPS 核心数:
apiVersion: v1 data: dataType: integer defaultValue: "20" descriptionEn: "MPS GPU core count,100 MPS core equals 1 GPU core " descriptionZh: MPS GPU 核心数,100个 MPS 核心等于 1 个 GPU 物理核心 excludeResources: nvidia.com/gpu,tencent.com/vcuda-core,tencent.com/vcuda-memory group: nvidia-mps-device-plugin groupI18n: '{"zh": "MPS", "en": "MPS"}' key: nvidia.com/mps-core labelEn: MPS GPU core labelZh: MPS GPU limits: optional relatedResources: nvidia.com/mps-memory requests: disabled resourceUnit: vcore runtimeClassName: nvidia kind: ConfigMap metadata: labels: features.cpaas.io/enabled: "true" features.cpaas.io/group: nvidia-mps-device-plugin features.cpaas.io/type: CustomResourceLimitation name: cf-crl-nvidia-mps-device-plugin-core namespace: kube-public -
MPS 显存:
apiVersion: v1 data: dataType: integer defaultValue: "1" descriptionEn: MPS GPU memory, 1 Gi physical memory per Unit descriptionZh: MPS GPU 显存,每单位等于 1Gi 显存 excludeResources: nvidia.com/gpu,tencent.com/vcuda-core,tencent.com/vcuda-memory group: nvidia-mps-device-plugin groupI18n: '{"zh": "MPS", "en": "MPS"}' key: nvidia.com/mps-memory labelEn: MPS GPU memory labelZh: MPS 显存 limits: optional relatedResources: nvidia.com/mps-core requests: disabled resourceUnit: unit runtimeClassName: nvidia kind: ConfigMap metadata: labels: features.cpaas.io/enabled: "true" features.cpaas.io/group: nvidia-mps-device-plugin features.cpaas.io/type: CustomResourceLimitation name: cf-crl-nvidia-mps-device-plugin-memory namespace: kube-public
-
图标进行查看。