从零开始入门 K8s | Kubernetes 调度和资源管理(16)

另外在节点上的 eviction 动作上 , 不同的 QoS 行为也是不一样的 , 比如说发生 eviction 的时候 , 会优先考虑驱逐 BestEffort 的 pod 。 所以不同的 QoS 在底层的表现是截然不同的 。 这反过来也要求我们在生产过程中 , 根据不同业务的要求和属性来配置资源的 Limits 和 Requests , 做到合理的规划 QoS Class 。

资源 Quota

在生产中我们还会遇到一个场景:假如集群是由多个人同时提交的 , 或者是多个业务同时在使用 , 我们肯定要限制某个业务或某个人提交的总量 , 防止整个集群的资源都会被一个业务使用掉 , 导致另一个业务没有资源使用 。

Kubernetes 给我们提供了一个能力叫 ResourceQuota 。 它可以做到限制 namespace 资源用量 。

具体的做法如上图右侧的 yaml 所示 , 可以看到它的 spec 包括了一个 hard 和 scopeSelector 。 hard 内容其实和 Resource 很像 , 这里可以填一些基础的资源 。 但是它比 Resource list 更丰富一点 , 还可以填写一些 Pod , 这样可以限制 Pod 数量 。 另外 , scopeSelector 还为这个 ResourceQuota 提供了更丰富的索引能力 。

推荐阅读