Skip to main content

环境资源

KubeGems 默认对每个用户环境开启了资源限制,如果您使用的环境资源超过了限制,那么新的容器将不能被部署。

caution

如果您的应用是采用RollingUpdate更新策略,那么它也会因资源不足造成更新一直处于 pending 状态。

用户可以在【环境详情页】 中看到当前环境下的资源实时使用情况,除此之外,您还可以在 详情页 中查看过去一天各个pod对于资源的使用量统计信息。

设置环境成员

设置环境资源

附录

Kubernetes 中的 ResourceQuota

当多个用户或团队共享具有固定节点数目的集群时,人们会担心有人使用超过其基于公平原则所分配到的资源量。资源配额是帮助管理员解决这一问题的工具。

资源配额通过 ResourceQuota 对象来定义,对每个命名空间的资源消耗总量提供限制。 它可以限制命名空间中某种类型的对象的总数目上限,也可以限制命令空间中的 Pod 可以使用的计算资源的总上限。

更多关于 ResourceQuota,请参考

Kubernetes ResourceQuota 支持的资源类型如下:

资源名称描述
limits.cpu所有非终止状态的 Pod,其 CPU 限额总量不能超过该值。
limits.memory所有非终止状态的 Pod,其内存限额总量不能超过该值。
requests.cpu所有非终止状态的 Pod,其 CPU 需求总量不能超过该值。
requests.memory所有非终止状态的 Pod,其内存需求总量不能超过该值。
hugepages-<size>对于所有非终止状态的 Pod,针对指定尺寸的巨页请求总数不能超过此值。
cpu与 requests.cpu 相同。
memory与 requests.memory 相同。

Kubernetes 中的 LimitRange

默认情况下, Kubernetes 集群上的容器运行使用的计算资源没有限制。 使用资源配额,集群管理员可以以命名空间为单位,限制其资源的使用与创建。 在命名空间中,一个 Pod 或 Container 最多能够使用命名空间的资源配额所定义的 CPU 和内存用量。

限制范围流程

  1. 管理员在一个命名空间内创建一个 LimitRange 对象。
  2. 用户在命名空间内创建 Pod ,Container 和 PersistentVolumeClaim 等资源。
  3. LimitRanger 准入控制器对所有没有设置计算资源需求的 Pod 和 Container 设置默认值与限制值, 并跟踪其使用量以保证没有超出命名空间中存在的任意 LimitRange 对象中的最小、最大资源使用量以及使用量比值。
  4. 若创建或更新资源(Pod、 Container、PersistentVolumeClaim)违反了 LimitRange 的约束, 向 API 服务器的请求会失败,并返回 HTTP 状态码 403 FORBIDDEN 与描述哪一项约束被违反的消息。
  5. 若命名空间中的 LimitRange 启用了对 cpu 和 memory 的限制, 用户必须指定这些值的需求使用量与限制使用量。否则,系统将会拒绝创建 Pod。
tip

LimitRange 的验证仅在 Pod 准入阶段进行,不对正在运行的 Pod 进行验证。

KubeGems 中的资源配置

字段说明备注
cpu限制值所有pod的limits.cpu之和不能超过这个值
内存限制值所有pod的limits.memory之和不能超过这个值
存储限制值所有pvc的size之和 不能超过这个值
容器组限制值容器数量之和不能超过这个值

资源限制

字段说明默认值
容器 cpu 默认值单容器的limits.cpu的默认值,如果workload没有提供,将用这个值填充500m
容器 cpu 默认请求值单容器的requests.cpu的默认值,如果workload没有提供,将用这个值填充10m
容器 cpu 限制最大值单容器的limits.cpu的最大值,如果workload中的这个值超过了它,将无法下发25000m
容器 memory 默认值单容器的limits.memory的默认值,如果workload没有提供,将用这个值填充1Gi
容器 memory 默认请求值单容器的requests.memory的默认值,如果workload没有提供,将用这个值填充10Mi
容器 memory 限制最大值单容器的limits.memory的最大值,如果workload中的这个值超过了它,将无法下发48Gi
容器组CPU单个pod的cpu限制,即pod内的cpu之和不能大于这个值48000m
容器组内存单个pod的memory限制,即pod内的memory之和不能大于这个值64Gi
存储卷容量单个存储卷的最大容量,超过这个值将不可以被创建出来1Ti
容器组数量当前命名空间能够创建的最大容器组数量,超过这个值将不可以被创建出来100
配置数量当前命名空间能够创建的最大configmap数量,超过这个值将不可以被创建出来512
daemonset数量当前命名空间能够创建的最大daemonset数量,超过这个值将不可以被创建出来512
deployment数量当前命名空间能够创建的最大deployment数量,超过这个值将不可以被创建出来512
statefulset数量当前命名空间能够创建的最大statefulset数量,超过这个值将不可以被创建出来512
ingress数量当前命名空间能够创建的最大ingress数量,超过这个值将不可以被创建出来512
job数量当前命名空间能够创建的最大job数量,超过这个值将不可以被创建出来512
pvc数量当前命名空间能够创建的最大persistentvolumeclaims数量,超过这个值将不可以被创建出来512
secret数量当前命名空间能够创建的最大secret数量,超过这个值将不可以被创建出来512
service数量当前命名空间能够创建的最大service数量,超过这个值将不可以被创建出来512