适用场景
集群能跑起来只是开始。生产环境的重点是"可持续":节点怎么下线维护、etcd 怎么备份、资源怎么配额、证书怎么续。
配置步骤(资源配额与自动扩缩容)
apiVersion: v1
kind: ResourceQuota
metadata: { name: team-a, namespace: team-a }
spec:
hard:
requests.cpu: "20"
requests.memory: 40Gi
limits.cpu: "40"
---
apiVersion: autoscaling/v2
kind: HorizontalPodAutoscaler
metadata: { name: web, namespace: team-a }
spec:
minReplicas: 2
maxReplicas: 10
metrics: [{ type: Resource, resource: { name: cpu, target: { type: Utilization, averageUtilization: 70 } } }]
关键参数与建议
- 节点维护:先 cordon 再 drain,PodDisruptionBudget 保证可用性
- etcd 备份:定期快照 + 恢复演练(etcd 挂了集群就没了)
- 配额与限制:命名空间级 ResourceQuota + LimitRange,防止单应用吃满
- 扩缩容:HPA 按 CPU/自定义指标,配合 PDB 与节点容量
- 证书与版本:kubelet/etcd 证书到期时间纳入监控,升级走官方流程
容易踩的坑
- 未设 requests,调度不准导致节点超卖
- HPA 最大副本数超过节点容量,扩容后 Pending
- 只靠 HPA 不设 PDB,缩容时业务抖动
验证与巡检
kubectl describe quota -n team-a
kubectl get hpa -A
- 巡检:配额使用率 <80%、HPA 有扩缩记录、无长期 Pending
小结
集群运维的三个"必须演练":etcd 恢复、节点下线、证书续期。三件事都演练过,才算能兜住生产。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。