Skip to main content

Docker 重启后恢复

Docker Desktop 或 Docker daemon 重启后,k3d 节点、MySQL 容器 IP、Redis Cluster 或 etcd 状态可能变化。

快速体检

docker ps --format '{{.Names}} {{.Status}} {{.Networks}}'
k3d cluster list
kubectl get nodes -o wide
kubectl -n ovra-zero get pods,svc,statefulset,ingress,endpointslice

修复 k3d 节点

如果节点 NotReady

docker restart k3d-ovra-agent-1
kubectl get nodes -o wide

替换成实际异常节点容器名。

修复 MySQL EndpointSlice

查看新 IP:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' ovra-zero-mysql

更新 Helm:

helm upgrade ovra-zero deploy/helm/ovra-zero \
--namespace ovra-zero \
--set mysql.external.ip=<MYSQL_CONTAINER_IP> \
--wait \
--timeout 5m

恢复 Redis Cluster

开发环境可重建 Redis:

kubectl -n ovra-zero delete statefulset redis --ignore-not-found
kubectl -n ovra-zero delete pod -l app.kubernetes.io/component=redis --ignore-not-found
kubectl -n ovra-zero delete job redis-cluster-init --ignore-not-found
helm upgrade ovra-zero deploy/helm/ovra-zero -n ovra-zero --wait --timeout 5m

恢复 etcd

开发环境使用 emptyDir 时可以重建 Pod:

kubectl -n ovra-zero delete pod etcd-0 etcd-1 etcd-2 --ignore-not-found

生产环境不要直接删除有持久化数据的 etcd 节点。