k8s Qos有哪些等级,怎么定义
Kubernetes 的 QoS (Quality of Service) 是通过对 Pod 中容器的 CPU 和内存资源使用情况进行判断来进行分类的。Kubernetes 一共定义了三个 QoS 等级,分别是 Guaranteed、Burstable 和 BestEffort。
1. Guaranteed
Pod 被分配了足够的 CPU 和内存资源,能够保证容器始终有足够的资源来运行。对于 Guaranteed 的 Pod,Kubernetes 会严格限制资源的使用,并且能够保证容器不会被内存和 CPU 锁死。
2. Burstable
Pod 被分配了一定的 CPU 和内存资源,但它们并不总是可用的。当系统中其他 Pod 消耗了更多的资源时,容器的资源可用性可能会受到影响。对于 Burstable 的 Pod,容器能够使用超过所分配的资源量(称为“突发资源”),但实际可用资源量,取决于其他 Pod 和系统资源占用情况。
3. BestEffort
Pod 未被分配任何 CPU 或内存资源。对于 BestEffort 的 Pod,Kubernetes 会尽力让容器运行,但不保证容器的可用性。通常情况下,BestEffort Pod 用于一些非关键的任务,比如系统服务或日志收集器。
在 Kubernetes 中,QoS 等级是根据容器的资源要求和系统中其他 Pod 的资源使用情况来进行判断的。容器的资源要求可以通过在容器定义中指定相应的 request 和 limit 来定义。在判断 QoS 等级时,Kubernetes 会计算每个容器的 CPU 和内存 request 和 limit,并基于这些数据来确定 Pod 的 QoS 等级。如果一个 Pod 中所有的容器都被分配了足够的资源 (CPU 和内存),则 Pod 将被分配到 Guaranteed 级别。如果 Pod 中存在容器未被分配足够的资源 (CPU 和内存),则它将被分配到 Burstable 级别。如果 Pod 中容器没有被分配任何 CPU 或内存资源,则 Pod 将被分配到 BestEffort 级别。