资源管理"/>
kubernetes之QoS资源管理
一、引导语
如果把整个云环境比作一片海洋,kubernetes是管理成千上万艘船只的掌舵人,它管理的船员(容器)可能上千万,每个船员都不一样,总有几个调皮捣蛋的,那么kubernetes是怎么管理这些容器的,如果一台宿主机上某个容器突然资源占用过高,kubernetes应该如何分配保证上面的核心应用可用,服务降级防止雪崩。带着这些问题,咱们来一起看一下kubernetes是如何实现资源管理的。
二、Kubernetes中的Node Allocatable
1)概述
一个kubernetes集群,默认情况下pod是使用节点中的全部资源,如果没有给node分配足够的资源,会出现这些pod与系统守护进程或kubelet进程等资源争抢的问题,导致整个node节点资源短缺或不可用的情况。
在kubernetes中把资源分为allocatable(宿主机上pods资源)、eviction-threshold(节点驱逐阈值)、system-reserved(节点资源预留值)、kube-reserved(kubernetes守护进程如kubelet等),node allocatable是kubernetes API中资源对象的一种,调度器会根据每个节点上node allocatable的使用情况分配pod,调度器不会超额申请过多的资源。结构图如下所示:
一个集群中某个节点的pod可分配量公式如下:
Allocatable = Node Capacity - (kube-reserved) - (system-reserved) - (eviction-threshold)
可以看到一个节点的pods可用资源需要排除kubernetes为系统预留资源、kubelet守护进程、驱逐阈值这三部分的资源,剩下的就是这个节点真正可以为pod所分配的资源。
2)pod的QoS
Kubernetes为每个节点分配了可用资源,那么每个pod的级别是相同的吗?答案是否定的,kubernetes为pod会分配不同级别的角色,像一个国王会分一等公民、二等公民、自由人,如果发生饥荒,比如资源短缺,kubernetes会先把资源分配给最优先的公民,保证它可用。Kubernetes中pod的级别具体划分为:Guaranteed、Burstable、BestEffort三种。
更多推荐
kubernetes之QoS资源管理
发布评论