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

Содержание

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

Обратитесь к официальной документации 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'