利用 Kubernetes(K8s)进行故障恢复,核心在于利用集群的自愈能力、冗余设计、备份与恢复机制,以及对应用和基础设施的可观测性与自动化运维。下面从原理、常见故障场景、恢复策略、最佳实践几个方面系统说明。
Kubernetes 的故障恢复能力,本质上依赖以下机制:
K8s 会自动检测并修复多种故障:
这些能力来自:
✅ 自动恢复
livenessProbe:
httpGet:
path: /health
port: 8080
initialDelaySeconds: 30
periodSeconds: 10
✅ 手动干预
kubectl delete pod <pod-name> # 强制重建
kubectl rollout restart deployment <name>
NotReadyPending 或 Terminating✅ 自动恢复
✅ 手动恢复
kubectl get nodes
kubectl cordon <node> # 禁止调度
kubectl drain <node> # 驱逐 Pod
kubectl rollout undo deployment/<name>
kubectl rollout undo deployment/<name> --to-revision=2
✅ 建议:
maxUnavailable / maxSurgekubectl get pvc
kubectl describe pv
✅ 恢复策略:
✅ etcd 备份恢复
etcdctl snapshot restore snapshot.db
✅ 高可用架构
replicas: 3
affinity:
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- labelSelector:
matchLabels:
app: myapp
topologyKey: kubernetes.io/hostname
| 探针类型 | 作用 |
|---|---|
| livenessProbe | 判断是否需要重启 |
| readinessProbe | 判断是否可以接收流量 |
| startupProbe | 启动阶段保护慢启动应用 |
minReplicas: 2
maxReplicas: 10
etcdctl snapshot save /backup/etcd.db
Velero 是 K8s 备份与灾难恢复的事实标准。
velero backup create my-backup
velero restore create --from-backup my-backup
preStop hook)Kubernetes 的故障恢复不是“事后补救”,而是通过冗余、自愈、备份和自动化,把故障变成“可预期、可恢复的正常事件”。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。