常见问题

目录

为什么导入命名空间时不应存在多个 ResourceQuota?

导入命名空间时,如果该命名空间包含多个 ResourceQuota 资源,平台会从所有 ResourceQuota 中针对每个配额项选择最小值进行合并,最终创建一个名为 default 的单一 ResourceQuota。

示例:

待导入的命名空间 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"

导入 to-import 命名空间后,该命名空间将创建以下名为 default 的 ResourceQuota:

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,资源配额取 ab 中的最小值。

当命名空间中存在多个 ResourceQuota 时,Kubernetes 会独立验证每个 ResourceQuota。因此,导入命名空间后,建议删除除 default 之外的所有 ResourceQuota。这有助于避免因多个 ResourceQuota 导致配额计算复杂化,从而容易引发错误。

为什么导入命名空间时不应存在多个 LimitRange 或 LimitRange 名称不是 default

导入命名空间时,如果该命名空间包含多个 LimitRange 资源,平台无法将它们合并为单个 LimitRange。由于 Kubernetes 在存在多个 LimitRange 时会独立验证每个 LimitRange,且 Kubernetes 选择哪个 LimitRange 的默认值行为不可预测。

平台在创建命名空间时会创建一个名为 default 的 LimitRange。因此,导入命名空间前,该命名空间中应仅存在一个名为 default 的 LimitRange。