当前位置: 首页 > 工具软件 > kubeasz > 使用案例 >

kubeasz-5 备份、升级

沃盛
2023-12-01
一、etcd备份与恢复

kubeasz 项目在中控机执行/etc/ansible/23.backup.yml

1、执行备份、查看备份
ansible-playbook /etc/ansible/23.backup.yml

ETCDCTL_API=3 etcdctl --write-out=table snapshot status /etc/ansible/.cluster/backup/snapshot.db
2、模拟误删除操作(谨慎操作)
kubectl -n kube-system delete deployments.apps kubernetes-dashboard
3、恢复备份(默认备份位置/etc/ansible/.cluster/backup)(恢复方式不推荐,会丢数据服务异常)
1>指定需要恢复的 etcd 数据备份,默认使用最近的一次备份
cat /etc/ansible/roles/cluster-restore/defaults/main.yml
2>通过etcd恢复
ansible-playbook /etc/ansible/24.restore.yml
3>确认备份是否恢复
kubectl -n kube-system get pod
4>测试结果:pod可以恢复正常,但是pod如果重启会一直Terminating,强制删除后无法自动创建新的pod,其他类型资源未测试,网络插件flannel异常(恢复方式不推荐)

二、集群故障恢复

1、模拟误删除集群核心组件(或者出现不可恢复问题)备份ETCD后可以通过清理集群、创建集群、恢复集群来恢复服务
sudo rm -rf /opt/kube/bin/kube-apiserver
systemctl restart kube-apiserver.service
2、恢复集群(服务可以恢复正常,configmap deployment等不会丢失)
1>卸载集群(如果不重启和删除残留容器恢复后pod状态一直是crash)
ansible-playbook /etc/ansible/99.clean.yml
docker ps -q -a|xargs docker  rm -f
reboot
2>安装集群
/etc/ansible/tools/easzup -S
ansible-playbook /etc/ansible/90.setup.yml
3>恢复集群
docker exec -it kubeasz bash
ansible-playbook /etc/ansible/24.restore.yml

三、升级集群

1、小版本升级集群:支持k8s大版本基础上升级任意小版本,比如当前安装集群为1.18.1,你可以方便的升级到任何1.18.x(本次是1.18.1升级到1.20.1)
1>备份集群:
    ansible-playbook /etc/ansible/23.backup.yml
2> 停止k8s服务
    systemctl stop kube-apiserver.service
    systemctl stop kube-controller-manager.service
    systemctl stop kubelet.service
    systemctl stop kube-proxy.service
    systemctl stop kube-scheduler.service

3>下载二进制包:
    wget https://dl.k8s.io/v1.20.1/kubernetes-server-linux-amd64.tar.gz
tar -xf kubernetes-server-linux-amd64.tar.gz
 \cp kubernetes/server/bin/kube* /etc/ansible/bin/
 sudo rm -rf /etc/ansible/bin/kube*.tar
 ansible-playbook -t upgrade_k8s /etc/ansible/22.upgrade.yml
2、测试结果失败,api-server起不来

3、跨大版本升级k8s或者kubeasz只能通过服务迁移实现

 类似资料: