• Русский
  • Создание пространств имён

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

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

    Для создания пространства имён в проекте с помощью командной строки ac выполните следующую команду:

    # Создать пространство имён в проекте с указанием конкретных кластеров
    ac adm new-project-namespace <namespace-name> --project <project-name> --cluster <cluster-name>

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

    Примеры YAML файлов

    example-namespace.yaml
    apiVersion: v1
    kind: Namespace
    metadata:
      name: example
      labels:
        pod-security.kubernetes.io/audit: baseline # Опция, для обеспечения безопасности рекомендуется выбрать режим baseline или restricted.
        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'