
1) 【一句话结论】:通过为关键业务Pod配置资源请求(requests)等于限制(limits,即Guaranteed QoS类),结合合理调整请求/限制值,确保资源隔离与优先保障,避免资源争抢导致应用不稳定。
2) 【原理/概念讲解】:老师口吻,解释资源请求和限制的作用。资源请求(requests)是Pod向调度器承诺的最低资源需求,调度器会优先选择有足够资源分配的节点;资源限制(limits)是容器能使用的最大资源,容器不会超过此值,防止资源耗尽导致OOM。QoS类(Quality of Service)根据请求与限制的关系分为三类:Guaranteed(请求=限制,调度优先,资源稳定)、Burstable(请求<限制,调度优先,超出部分按比例分配)、BestEffort(请求远小于限制,调度优先级低,资源不足时被驱逐)。类比:请求是“承诺”要多少资源,限制是“上限”,QoS类是资源分配的优先级,就像学校分配宿舍,Guaranteed类学生(承诺住满整个房间)优先分配,Burstable类(承诺住部分)次之,BestEffort类(承诺住小部分)最后。
3) 【对比与适用场景】:
| QoS类 | 定义(请求与限制关系) | 特性 | 使用场景 | 注意点 |
|---|---|---|---|---|
| Guaranteed | requests = limits | 调度优先,资源稳定,不会被驱逐 | 关键业务(如支付、核心服务) | 需要预留足够资源,避免资源浪费 |
| Burstable | requests < limits | 调度优先,超出请求部分按比例分配 | 中等业务(如日志收集、缓存) | 资源不足时可能被短暂驱逐 |
| BestEffort | requests << limits | 调度优先级低,资源不足时被驱逐 | 非关键业务(如测试、临时任务) | 需要容忍资源不足,避免影响核心业务 |
4) 【示例】:关键业务Pod的YAML示例,请求和限制匹配,体现Guaranteed类。
apiVersion: v1
kind: Pod
metadata:
name: critical-payment-pod
spec:
containers:
- name: payment-app
image: newkailai/critical-payment:1.0
resources:
requests:
cpu: "500m" # 0.5核,最低需求
memory: "512Mi"
limits:
cpu: "1" # 1核上限,防止OOM
memory: "1Gi"
# QoS类隐式为Guaranteed(requests=limits)
5) 【面试口播版答案】:面试官您好,针对Kubernetes中资源限制和QoS配置保障关键业务稳定性的问题,核心是通过合理设置Pod的requests(请求)和limits(限制),结合QoS类(Guaranteed、Burstable、BestEffort)来隔离资源。对于关键业务,我们通常设置requests等于limits(即Guaranteed类),这样调度器会优先调度,且容器资源不会超过限制,避免资源争抢导致OOM。比如,一个关键业务Pod的CPU请求设为500m,内存512Mi,限制CPU为1核,内存1Gi,既满足业务需求,又防止资源过度消耗。调整策略上,先通过压测确定业务最小资源需求,然后限制略高于请求,确保资源安全。对于非关键业务,则设置请求远小于限制,降低调度优先级,避免资源抢占。总结来说,通过资源请求和限制的精准配置,结合QoS类,可以有效保障关键业务应用的稳定性。
6) 【追问清单】:
7) 【常见坑/雷区】: