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的存放路径)

  1. 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

检查:

  1. 检查集群是否启动
    netstat -pnlt | grep 6443  
    # netstat -pnlt:列出所有网络连接,包括监听的端口,显示进程ID和进程名称,以长格式显示。  
    # grep 6443:过滤出包含字符串"6443"的行。
  2. 检查集群状态:

列出所有命名空间下的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)

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值