Kubernetes 也是这么做的, 它会通过 Request 和 Limit 两个阈值来进行管理容器的资源使用....分配时采用 Requst 值进行调度, 这里有个假设 :
同一节点上运行的容器不会同时达到 Limit 阈值
有效的实现了计算资源利用率的 high utilization, 非常适合数据库开发或测试场景...当某节点运行的所有容器同时接近 Limit, 并有将节点资源用完的趋势或者事实(在运行的过程中, 调度器会定期收集所有节点的资源使用情况, “搜集”用词不太准确, 但便于理解), 创建 Pod的请求也不会再调度到该节点...以内存为例, 当 Pod 的请求超出 Node 可以提供的内存, 会以异常的方式告知调度器, 内存资源不足
同时, 基于优先级, 部分容器将会被驱逐到其他节点(例如通过重启 Pod 的方式)....与此同时, 容器的运行状态和RDS集群还在动态变化
因 Failover 迁移到其他节点
RDS 集群 Scale Out
首先, 我们将一系列的具体的业务需求抽象成 :
亲和性(Affinity