创建命名空间

了解命名空间

请参阅官方 Kubernetes 文档:Namespaces

在 Kubernetes 中,命名空间提供了一种在单个集群内隔离资源组的机制。资源名称在同一个命名空间内必须唯一,但不要求在不同命名空间之间唯一。基于命名空间的作用域仅适用于带命名空间的对象(例如 Deployments、Services 等),不适用于集群范围对象(例如 StorageClass、Nodes、PersistentVolumes 等)。

通过 Web 控制台创建命名空间

在与项目关联的集群中,创建一个与项目可用资源配额相匹配的新命名空间。 新命名空间将在项目分配的资源配额范围内运行(例如 CPU、内存),并且命名空间中的所有资源都必须位于关联的集群中。

  1. 项目管理 视图中,单击要为其创建命名空间的 项目名称

  2. 在左侧导航栏中,单击 Namespaces > Namespaces

  3. 单击 创建命名空间

  4. 配置 基本信息

    参数描述
    集群选择与项目关联的集群来承载该命名空间。
    命名空间命名空间名称必须包含一个必填前缀,即项目名称。
  5. (可选)配置 资源配额

    每当为命名空间中的容器指定计算资源或存储资源的资源限制(limits),或者每次添加新的 Pod 或 PVC 时,都会消耗此处设置的配额。

    注意

    • 命名空间的资源配额继承自该项目在集群中分配的配额。某一资源类型可设置的最大配额不得超过该项目剩余的可用配额。如果任何资源的可用配额达到 0,将无法创建命名空间。请联系平台管理员调整配额。

    • GPU 配额配置要求

      • 仅当集群中已提供 GPU 资源时,才能配置 GPU 配额(vGPU 或 pGPU)。
      • 使用 vGPU 时,也可以设置内存配额。

      GPU 单位定义

      • vGPU 单位:100 个虚拟 GPU 单位(vGPU)= 1 个物理 GPU 核心(pGPU)。
        • 注意:pGPU 单位仅按整数计算(例如,1 pGPU = 1 核心 = 100 vGPU)。
      • 内存单位
        • 1 个内存单位 = 256 MiB。
        • 1 GiB = 4 个内存单位(1024 MiB = 4 × 256 MiB)。
    • 默认配额行为

      • 如果未为某一资源类型指定配额,则默认为无限制。
      • 这意味着该命名空间可以在不显式设置限制的情况下消耗该项目分配给此类资源的全部可用资源

    配额参数说明

    类别配额类型数值和单位描述
    存储资源配额全部Gi此命名空间中所有 Persistent Volume Claims(PVCs)的总请求存储容量不能超过此值。
    Storage Class此命名空间中与所选 StorageClass 关联的所有 Persistent Volume Claims(PVCs)的总请求存储容量不能超过此值。

    注意:请提前将 StorageClass 分配给该命名空间所属的项目。
    扩展资源从配置字典(ConfigMap)中获取;详情请参阅 扩展资源配额说明-如果不存在对应的配置字典,则不会显示此类别。
    其他配额输入自定义配额;有关具体输入规则,请参阅 其他配额说明-为避免资源重复,以下值不允许作为配额类型:
    • limits.cpu
    • limits.memory
    • requests.cpu
    • requests.memory
    • pods
    • cpu
    • memory
  6. (可选)配置 容器限制范围;有关更多详细信息,请参阅 Limit Range

  7. (可选)配置 Pod Security Admission;有关具体细节,请参阅 Pod Security Admission

  8. (可选)在 更多配置 区域中,为当前命名空间添加标签和注解。

    提示:您可以通过标签定义命名空间的属性,也可以通过注解为命名空间补充附加信息;二者都可用于筛选和排序命名空间。

  9. 单击 创建

通过新版 Web 控制台创建命名空间

此页面主要描述旧版控制台工作流,但在新版 Web 控制台中,命名空间创建可以从不同视图开始。

从 Applications 视图创建

当您为当前项目创建命名空间时,请使用 Applications 视图。

入口路径和操作顺序:

  • 打开当前项目,然后转到 Applications > Namespaces
  • 单击 创建命名空间
  • 首先选择目标 集群,然后继续设置命名空间名称、配额、限制范围、Pod Security Admission、标签和注解。

在提交表单之前,请确认:

  • 目标集群已与当前项目关联
  • 由于命名空间是当前项目集群范围治理流程的一部分,因此必须先选择集群,再提交命名空间
  • 命名空间命名规则符合当前项目的治理要求
  • 配额、限制范围、安全策略、标签和注解符合预期的工作负载基线
  • 命名空间随后会显示在当前项目中,并关联到预期的集群

从 Clusters 视图创建

当您要在某个具体集群中将命名空间作为集群资源创建时,请使用 Clusters 视图。

入口路径和操作顺序:

  • 先打开目标集群。
  • 转到该集群上下文中的 Namespaces
  • 单击 创建命名空间,然后继续设置命名空间名称、标签和注解。

通过 ac CLI 在项目中创建命名空间

要使用 ac 命令行工具在项目中创建命名空间,请运行以下命令:

# Create a namespace in project with specific clusters
ac adm new-project-namespace <namespace-name> --project <project-name> --cluster <cluster-name>

通过 kubectl 创建命名空间

YAML 文件示例

example-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: example
  labels:
    pod-security.kubernetes.io/audit: baseline # Option, to ensure security, it is recommended to choose the baseline or restricted mode.
    pod-security.kubernetes.io/enforce: baseline
    pod-security.kubernetes.io/warn: baseline
example-resourcequota.yaml
apiVersion: v1
kind: ResourceQuota
metadata:
  name: example-resourcequota
  namespace: example
spec:
  hard:
    limits.cpu: '20'
    limits.memory: 20Gi
    pods: '500'
    requests.cpu: '2'
    requests.memory: 2Gi
example-limitrange.yaml
apiVersion: v1
kind: LimitRange
metadata:
  name: example-limitrange
  namespace: example
spec:
  limits:
    - default:
        cpu: 100m
        memory: 100Mi
      defaultRequest:
        cpu: 50m
        memory: 50Mi
      max:
        cpu: 1000m
        memory: 1000Mi
      type: Container

通过 YAML 文件创建

kubectl apply -f example-namespace.yaml
kubectl apply -f example-resourcequota.yaml
kubectl apply -f example-limitrange.yaml

直接通过命令行创建

kubectl create namespace example
kubectl create resourcequota example-resourcequota --namespace=example --hard=limits.cpu=20,limits.memory=20Gi,pods=500
kubectl create limitrange example-limitrange --namespace=example --default='cpu=100m,memory=100Mi' --default-request='cpu=50m,memory=50Mi' --max='cpu=1000m,memory=1000Mi'