Часто задаваемые вопросы

Содержание

Почему при импорте 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.