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

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

    При импорте 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, что может легко привести к ошибкам.

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

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

    Если в namespace содержится только один LimitRange, платформа создаст LimitRange с именем default и значениями из этого LimitRange.

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