创建 Namespaces

了解 namespaces

参考官方 Kubernetes 文档:Namespaces

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

通过 Web 控制台创建 namespaces

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

  1. 在 项目管理 视图中,点击要创建 namespace 的 项目名称。

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

  3. 点击 创建 Namespace。

  4. 配置 基本信息。

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

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

    注意:

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

    • 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)。
    • 默认配额行为:

      • 若未指定某资源类型的配额,默认不设限。
      • 即 namespace 可使用项目分配的该类型所有可用资源,无需显式限制。

    配额参数说明

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

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

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

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

    提示:可通过标签定义 namespace 属性,或通过注解补充 namespace 额外信息;两者均可用于过滤和排序 namespaces。

  9. 点击 创建。

通过 CLI 创建 namespace

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'