Создание пространств имён

Содержание

Понимание пространств имён

Обратитесь к официальной документации Kubernetes: Namespaces

В Kubernetes пространства имён предоставляют механизм изоляции групп ресурсов внутри одного кластера. Имена ресурсов должны быть уникальными внутри пространства имён, но не обязательно уникальными между разными пространствами имён. Область действия на основе пространства имён применяется только к объектам с пространством имён (например, Deployments, Services и т.д.), а не к объектам, охватывающим весь кластер (например, StorageClass, Nodes, PersistentVolumes и т.д.).

Создание пространств имён с помощью веб-консоли

В рамках кластера, связанного с проектом, создайте новое пространство имён, соответствующее доступным квотам ресурсов проекта. Новое пространство имён работает в пределах квот ресурсов, выделенных проекту (например, CPU, память), и все ресурсы в пространстве имён должны находиться в связанном кластере.

  1. В представлении Project Management нажмите на Project Name, для которого хотите создать пространство имён.

  2. В левой навигационной панели выберите Namespaces > Namespaces.

  3. Нажмите Create Namespace.

  4. Настройте Basic Information.

    ПараметрОписание
    ClusterВыберите кластер, связанный с проектом, в котором будет размещено пространство имён.
    NamespaceИмя пространства имён должно содержать обязательный префикс — имя проекта.
  5. (Опционально) Настройте Resource Quota.

    Каждый раз, когда для контейнера в пространстве имён задаётся ограничение ресурсов (limits) по вычислительным или хранилищным ресурсам, либо при добавлении нового Pod или PVC, будет расходоваться квота, установленная здесь.

    ВНИМАНИЕ:

    • Квота ресурсов пространства имён наследуется от выделенной проекту квоты в кластере. Максимально допустимая квота для типа ресурса не может превышать оставшуюся доступную квоту проекта. Если доступная квота какого-либо ресурса достигает 0, создание пространства имён будет заблокировано. Обратитесь к администратору платформы для корректировки квот.

    • Требования к настройке квоты GPU:

      • Квоты GPU (vGPU или pGPU) можно настраивать только при наличии GPU-ресурсов в кластере.
      • При использовании vGPU можно также задавать квоты по памяти.

      Определения единиц GPU:

      • vGPU Units: 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 (PVC) в этом пространстве имён не может превышать это значение.
    Storage ClassОбщая запрашиваемая ёмкость хранилища всех Persistent Volume Claims (PVC), связанных с выбранным StorageClass в этом пространстве имён, не может превышать это значение.

    Примечание: Пожалуйста, заранее выделите StorageClass проекту, которому принадлежит пространство имён.
    Расширенные ресурсыПолучены из конфигурационного словаря (ConfigMap); подробности смотрите в разделе Extended Resources Quotas description.-Эта категория не отображается, если отсутствует соответствующий конфигурационный словарь.
    Другие квотыВведите пользовательские квоты; правила ввода смотрите в разделе Other Quota description.-Для избежания проблем с дублированием ресурсов следующие значения не допускаются в качестве типов квот:
    • limits.cpu
    • limits.memory
    • requests.cpu
    • requests.memory
    • pods
    • cpu
    • memory
  6. (Опционально) Настройте Container Limit Range; подробности смотрите в разделе Limit Range.

  7. (Опционально) Настройте Pod Security Admission; подробности смотрите в разделе Pod Security Admission.

  8. (Опционально) В разделе More Configuration добавьте метки и аннотации для текущего пространства имён.

    Совет: Вы можете определить атрибуты пространства имён через метки или дополнить пространство имён дополнительной информацией через аннотации; оба способа позволяют фильтровать и сортировать пространства имён.

  9. Нажмите Create.

Создание пространства имён с помощью 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'