常见问题

目录

为什么导入命名空间时不应存在多个 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 资源,平台无法将它们合并为单个 LimitRange。由于 Kubernetes 在存在多个 LimitRange 时会独立验证每个 LimitRange,且 Kubernetes 选择哪个 LimitRange 的默认值行为不可预测。

如果命名空间仅包含单个 LimitRange,平台会创建一个名为 default 的 LimitRange,值来自该 LimitRange。

因此,导入命名空间前,命名空间中应仅存在一个 LimitRange。导入后,建议删除除名为 default 的 LimitRange 以外的其他 LimitRange,以避免多个 LimitRange 导致的不可预测行为。