适用场景

集群能跑起来只是开始。生产环境的重点是"可持续":节点怎么下线维护、etcd 怎么备份、资源怎么配额、证书怎么续。

配置步骤(etcd 备份与恢复演练)

ETCDCTL_API=3 etcdctl snapshot save /backup/etcd-$(date +%F).db \
  --endpoints=https://127.0.0.1:2379 \
  --cacert=/etc/kubernetes/pki/etcd/ca.crt \
  --cert=/etc/kubernetes/pki/etcd/server.crt \
  --key=/etc/kubernetes/pki/etcd/server.key
# 恢复(在隔离环境演练)
ETCDCTL_API=3 etcdctl snapshot restore /backup/etcd-xxx.db --data-dir=/var/lib/etcd-restore

关键参数与建议

  • 节点维护:先 cordon 再 drain,PodDisruptionBudget 保证可用性
  • etcd 备份:定期快照 + 恢复演练(etcd 挂了集群就没了)
  • 配额与限制:命名空间级 ResourceQuota + LimitRange,防止单应用吃满
  • 扩缩容:HPA 按 CPU/自定义指标,配合 PDB 与节点容量
  • 证书与版本:kubelet/etcd 证书到期时间纳入监控,升级走官方流程

容易踩的坑

  • 从不备份 etcd,集群故障只能重建
  • 备份文件放本地同一主机,主机故障一起丢
  • 未做恢复演练,恢复流程不熟

验证与巡检

ETCDCTL_API=3 etcdctl endpoint health --endpoints=127.0.0.1:2379
ls -lh /backup/etcd-*.db | tail -3
  • 巡检:每日快照存在、异地保留、季度恢复演练

小结

集群运维的三个"必须演练":etcd 恢复、节点下线、证书续期。三件事都演练过,才算能兜住生产。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。