k8s集群宕机之后,恢复集群
昨天由于服务器重启导致的;我有多台master服务器,理论上k8s集群应该不会挂,可能同时重启所有master服务器,导致k8s集群无法正常运行。或者是服务器宕机之后,导致的k8s集群挂掉。
·
k8s集群宕机之后,恢复集群
起因:
昨天由于服务器重启导致的;我有多台master服务器,理论上k8s集群应该不会挂,可能同时重启所有master服务器,导致k8s集群无法正常运行。
或者是服务器宕机之后,导致的k8s集群挂掉。
前提条件:
必须在k8s集群好的时候备份数据
ETCDCTL_API=3 etcdctl snapshot save snap.20231206.db --cacert=/etc/ssl/etcd/ssl/ca.pem --cert=/etc/ssl/etcd/ssl/node1.pem --key=/etc/ssl/etcd/ssl/node1-key.pem --endpoints="https://10.0.0.1:2379"
我的etcd采用二进制方式部署:K8s集群中的数据存放在/var/lib/etcd目录下;
补充:etcd证书的存放路径:/etc/ssl/etcd/ssl(可以查找自己的etcd的存放路径)
- find / -name 'ca.pem‘ /etc/ssl/etcd/ssl/ca.pem
解决步骤:
关闭etcd、kube-apiserver服务
1. systemctl stop etcd
2. systemctl stop kube-apiserver
进入k8s集群中存储数据的目录:
1. 可以先把原有数据备份 : mv xxx xxx.back 2. 删除该文件下的内容 :rm -r xxx
恢复:
- ETCDCTL_API=3 etcdctl snapshot restore /root/snap.20231206.db --data-dir=/var/lib/etcd
- 启动服务:
- • systemctl start etcd
- • systemctl start kube-apiserver
检查:
-
检查集群是否启动
netstat -pnlt | grep 6443 # netstat -pnlt:列出所有网络连接,包括监听的端口,显示进程ID和进程名称,以长格式显示。 # grep 6443:过滤出包含字符串"6443"的行。
-
检查集群状态:
列出所有命名空间下的Pod:
kubectl get pods --all-namespaces
列出所有命名空间下的服务:
kubectl get services --all-namespaces
列出所有节点:
kubectl get nodes
列出所有无状态副本集(ReplicaSets):
kubectl get replicasets
列出所有部署(Deployments):
kubectl get deployments
列出所有持久卷(PersistentVolumes)和持久卷声明(PersistentVolumeClaims):
kubectl get pv,pvc
列出所有自定义资源定义(CustomResourceDefinitions,CRDs):
kubectl get crd
列出所有命名空间(Namespaces):
kubectl get namespaces
列出所有Ingress资源:
kubectl get ingress
列出所有ConfigMaps:
kubectl get configmaps
列出所有Secrets:
kubectl get secrets
参考文章:K8s集群的Etcd数据库的备份与还原_kubernetes_lihongbao80-华为云开发者联盟 (csdn.net)
更多推荐
已为社区贡献3条内容
所有评论(0)