创建 Namespaces

目录

理解 namespaces

参考官方 Kubernetes 文档:Namespaces

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

通过 Web 控制台创建 namespaces

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

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

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

  3. 点击 创建 Namespace

  4. 配置 基本信息

    参数说明
    Cluster选择与项目关联的集群,用于承载该 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 属性,或通过注解补充额外信息;两者均可用于筛选和排序 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'