K8S QoS等级
在 Kubernetes 中,QoS(Quality of Service)等级用于定义 Pod 的资源管理策略,以确保在资源不足时,系统能够优先处理关键工作负载。Kubernetes 将 Pod 分为三种 QoS 等级:
1. Guaranteed(保证型)
- 定义:所有容器都必须为其请求和限制设置相同的 CPU 和内存值。
- 用途:适用于需要稳定性能的关键应用。
- 行为:在资源紧张时,Guaranteed Pod 不会被驱逐。
示例:
apiVersion: v1
kind: Pod
metadata:
name: guaranteed-pod
spec:
containers:
- name: app
image: my-app
resources:
requests:
memory: "512Mi"
cpu: "500m"
limits:
memory: "512Mi"
cpu: "500m"
2. Burstable(突发型)
- 定义:容器的请求和限制不相同。至少一个容器有请求小于限制的情况。
- 用途:适用于偶尔需要高性能的应用,同时又希望在资源不足时能够被驱逐。
- 行为:在资源紧张时,Burstable Pod 的优先级低于 Guaranteed Pod,但高于 BestEffort Pod。
示例:
apiVersion: v1
kind: Pod
metadata:
name: burstable-pod
spec:
containers:
- name: app
image: my-app
resources:
requests:
memory: "256Mi"
cpu: "250m"
limits:
memory: "1Gi"
cpu: "1"
3. BestEffort(最佳努力型)
- 定义:没有设置请求和限制,或者所有容器的请求和限制均为零。
- 用途:适用于不重要的、可被随时驱逐的工作负载。
- 行为:在资源紧张时,BestEffort Pod 是最容易被驱逐的。
示例:
apiVersion: v1
kind: Pod
metadata:
name: besteffort-pod
spec:
containers:
- name: app
image: my-app
resources: {}
总结
Kubernetes 的 QoS 等级通过 Guaranteed、Burstable 和 BestEffort 三种类别来管理 Pod 的资源分配和优先级。选择合适的 QoS 等级可以帮助管理员有效地管理集群资源,提高关键应用的可用性和性能。