创建命名空间

目录

理解命名空间

参考官方 Kubernetes 文档:Namespaces

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

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

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

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

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

  3. 点击 创建命名空间

  4. 配置 基本信息

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

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

    注意

    • 命名空间的资源配额继承自项目在集群中分配的配额。某一资源类型的最大允许配额不得超过项目剩余可用配额。如果某资源的可用配额为 0,则阻止创建命名空间。请联系平台管理员调整配额。

    • GPU 配额配置要求

      • 仅当集群中配置了 GPU 资源时,才能配置 GPU 配额(虚拟 GPU 或物理 GPU)。
      • 使用虚拟 GPU 时,也可以设置内存配额。

      GPU 单位定义

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

      • 若未指定某资源类型的配额,则默认不设限。
      • 这意味着命名空间可以使用项目分配的该类型所有可用资源。

    配额参数说明

    类别配额类型数值及单位说明
    存储资源配额全部Gi该命名空间内所有 Persistent Volume Claims(PVC)请求的存储总容量不得超过此值。
    存储类该命名空间内所有关联所选 StorageClass 的 Persistent Volume Claims(PVC)请求的存储总容量不得超过此值。

    注意:请提前将 StorageClass 分配给命名空间所属项目。
    扩展资源从配置字典(ConfigMap)获取;详情请参见扩展资源配额说明-若无对应配置字典,则不显示此类别。
    其他配额输入自定义配额;具体输入规则请参见其他配额说明-为避免资源重复问题,以下配额类型不允许使用:
    • limits.cpu
    • limits.memory
    • requests.cpu
    • requests.memory
    • pods
    • cpu
    • memory
  6. (可选)配置 容器限制范围;详情请参见限制范围

  7. (可选)配置 Pod 安全准入;具体详情请参见Pod 安全准入

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

    提示:可以通过标签定义命名空间的属性,或通过注解补充命名空间的额外信息;两者均可用于筛选和排序命名空间。

  9. 点击 创建

通过 CLI 创建命名空间

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'