• Русский
  • Часто задаваемые вопросы

    Содержание

    Почему при импорте namespace не должно быть нескольких ResourceQuota?

    При импорте namespace, если в нем содержится несколько ресурсов ResourceQuota, платформа выберет наименьшее значение для каждого элемента квоты среди всех ResourceQuota и объединит их, в итоге создав один ResourceQuota с именем default.

    Пример:

    Namespace to-import, который нужно импортировать, содержит следующие ресурсы resourcequota:

    ---
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: a
      namespace: to-import
    spec:
      hard:
        requests.cpu: "1"
        requests.memory: "500Mi"
        limits.cpu: "3"
        limits.memory: "1Gi"
    ---
    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: b
      namespace: to-import
    spec:
      hard:
        requests.cpu: "2"
        requests.memory: "300Mi"
        limits.cpu: "2"
        limits.memory: "2Gi"

    После импорта namespace to-import в нем будет создан следующий ResourceQuota с именем default:

    apiVersion: v1
    kind: ResourceQuota
    metadata:
      name: default
      namespace: to-import
    spec:
      hard:
        requests.cpu: "1"
        requests.memory: "300Mi"
        limits.cpu: "2"
        limits.memory: "1Gi"

    Для каждого ResourceQuota квоты ресурсов — это минимальное значение между a и b.

    Когда в namespace существует несколько ResourceQuota, Kubernetes проверяет каждую ResourceQuota независимо. Поэтому после импорта namespace рекомендуется удалить все ResourceQuota, кроме default. Это помогает избежать сложностей в расчетах квот из-за нескольких ResourceQuota, что может легко привести к ошибкам.

    Почему при импорте namespace не должно быть нескольких LimitRange или LimitRange с именем, отличным от default?

    При импорте namespace, если в нем содержится несколько ресурсов LimitRange, платформа не может объединить их в один LimitRange. Поскольку Kubernetes проверяет каждый LimitRange независимо, а поведение выбора значений по умолчанию из какого LimitRange будет использоваться — непредсказуемо.

    Платформа создает LimitRange с именем default при создании namespace. Поэтому перед импортом namespace в нем должен существовать только один LimitRange с именем default.