资源限制
Requests 与 Limits
resources:
requests:
cpu: "250m" # 0.25 核,保证分配量
memory: "256Mi" # 保证内存量
limits:
cpu: "1000m" # 最大 1 核(超出被限流)
memory: "512Mi" # 超出即 OOMKilled
# CPU 单位:1 核 = 1000m
# 内存单位:Mi = MiB(推荐),Gi = GiB
QoS 类
| QoS 类 | 条件 | 驱逐优先级 |
|---|---|---|
| Guaranteed | 所有容器 requests == limits | 最后驱逐 |
| Burstable | 至少一个容器 requests != limits | 居中 |
| BestEffort | 未设置 requests 或 limits | 最先驱逐 |
LimitRange
apiVersion: v1
kind: LimitRange
metadata:
name: default-limits
namespace: production
spec:
limits:
- type: Container
default:
cpu: "500m"
memory: "256Mi"
defaultRequest:
cpu: "100m"
memory: "128Mi"
max:
cpu: "2"
memory: "2Gi"
ResourceQuota
apiVersion: v1
kind: ResourceQuota
metadata:
name: production-quota
namespace: production
spec:
hard:
requests.cpu: "10"
requests.memory: "20Gi"
limits.cpu: "20"
pods: "50"
requests.storage: "500Gi"
# 查看配额使用情况
kubectl describe resourcequota production-quota -n production
HPA(水平 Pod 自动伸缩)
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata:
name: myapp-hpa
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: Deployment
name: myapp
minReplicas: 2
maxReplicas: 20
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 70
behavior:
scaleDown:
stabilizationWindowSeconds: 300 # 缩容前等待 5 分钟