diff --git a/docs/op/cluster_restore.md b/docs/op/cluster_restore.md index 294a7c6..2f20ab2 100644 --- a/docs/op/cluster_restore.md +++ b/docs/op/cluster_restore.md @@ -7,10 +7,12 @@ ## 备份与恢复操作说明 -- 1.首先搭建一个测试集群,部署几个测试deployment,验证集群各项正常后,进行一次备份: +- 1.首先搭建一个测试集群,部署几个测试deployment,验证集群各项正常后,进行一次备份(假设集群名为k8s-01): ``` bash -$ ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/94.backup.yml +$ ezctl backup k8s-01 +# 或者如下手动执行ansible命令 +# ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/94.backup.yml ``` 执行完毕可以在部署主机的备份目录下检查备份情况,示例如下: @@ -30,19 +32,24 @@ $ ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml play 可以在 `roles/cluster-restore/defaults/main.yml` 文件中配置需要恢复的 etcd备份版本(从上述备份目录中选取),默认使用最近一次备份;执行恢复后,需要一定时间等待 pod/svc 等资源恢复重建。 ``` bash -$ ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/94.backup.yml95.restore.yml +$ ezctl restore k8s-01 +# 或者如下手动执行ansible命令 +# ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/95.restore.yml ``` 如果集群主要组件(master/etcd/node)等出现不可恢复问题,可以尝试使用如下步骤 [清理]() --> [创建]() --> [恢复]() ``` bash -$ ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/99.clean.yml +$ ezctl clean k8s-01 +# 或者如下手动执行ansible命令 +# ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/99.clean.yml $ ezctl setup k8s-01 01 $ ezctl setup k8s-01 02 $ ezctl setup k8s-01 03 $ ezctl setup k8s-01 04 $ ezctl setup k8s-01 05 ... -$ ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/95.restore.yml +$ ezctl restore k8s-01 +# ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml playbooks/95.restore.yml ``` ## 参考 diff --git a/docs/op/upgrade.md b/docs/op/upgrade.md index be75a1a..328beb1 100644 --- a/docs/op/upgrade.md +++ b/docs/op/upgrade.md @@ -2,8 +2,7 @@ 集群升级存在一定风险,请谨慎操作。 -- 项目分支`master`安装的集群可以在当前支持k8s大版本基础上升级任意小版本,比如当前安装集群为1.16.0,你可以方便的升级到任何1.16.x版本 -- 项目分支`closed`(已停止更新)安装的集群目前只能进行小版本1.8.x的升级 +- 在当前支持k8s大版本基础上升级任意小版本,比如当前安装集群为1.19.0,你可以方便的升级到任何1.19.x版本 ### 备份etcd数据 @@ -15,7 +14,10 @@ $ ETCDCTL_API=3 etcdctl snapshot save backup.db # 查看备份 $ ETCDCTL_API=3 etcdctl --write-out=table snapshot status backup.db ``` -- `kubeasz`项目也可以方便执行 `ansible-playbook /etc/ansible/23.backup.yml`,详情阅读文档[备份恢复](cluster_restore.md) + +`kubeasz`项目也可以如下方便执行备份(假设集群名为k8s-01) + +- `ezctl backup k8s-01`,详情阅读文档[备份恢复](cluster_restore.md) ### 快速k8s版本升级 @@ -29,24 +31,21 @@ $ ETCDCTL_API=3 etcdctl --write-out=table snapshot status backup.db - kubelet - kube-proxy - kube-scheduler -- 在ansible控制端执行`ansible-playbook -t upgrade_k8s 22.upgrade.yml`即可完成k8s 升级,不会中断业务应用 -如果使用 ezctl 命令行,可按如下执行: +- 在ansible控制端执行`ezctl upgrade k8s-01` 即可完成k8s 升级,不会中断业务应用 -- 首先确认待升级的集群(如果有多集群的话) `ezctl checkout ` -- 执行升级 `ezctl upgrade` ### 其他升级说明 -其他升级是指升级k8s组件包括:`etcd版本` `docker版本`,一般不需要用到,以下仅作说明。 +其他升级是指升级k8s组件包括:`etcd版本` `docker版本`,一般不需要用到,不建议升级,以下仅作说明。 - 1.下载所有组件相关新的二进制解压并替换 `/etc/ansible/bin/` 目录下文件 -- 2.升级 etcd: `ansible-playbook -t upgrade_etcd 02.etcd.yml`,**注意:etcd 版本只能升级不能降低!** +- 2.升级 etcd: `ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml -t upgrade_etcd playbooks/02.etcd.yml` - 3.升级 docker (建议使用k8s官方支持的docker稳定版本) - 如果可以接受短暂业务中断,执行 `ansible-playbook -t upgrade_docker 03.docker.yml` - - 如果要求零中断升级,执行 `ansible-playbook -t download_docker 03.docker.yml`,然后手动执行如下 + - 如果要求零中断升级,执行 `ansible-playbook -i clusters/k8s-01/hosts -e @clusters/k8s-01/config.yml -t download_docker playbooks/03.runtime.yml`,然后手动执行如下 - 待升级节点,先应用`kubectl cordon`和`kubectl drain`命令迁移业务pod - 待升级节点执行 `systemctl restart docker` - 恢复节点可调度 `kubectl uncordon` diff --git a/roles/clean/tasks/clean_etcd.yml b/roles/clean/tasks/clean_etcd.yml index 50bbeb7..05bc397 100644 --- a/roles/clean/tasks/clean_etcd.yml +++ b/roles/clean/tasks/clean_etcd.yml @@ -10,7 +10,8 @@ - name: remove files and dirs file: name={{ item }} state=absent with_items: - - "/var/lib/etcd" + - {{ ETCD_DATA_DIR }} + - {{ ETCD_WAL_DIR }} - "/backup/k8s" - "/etc/systemd/system/etcd.service" when: "inventory_hostname in groups['etcd']"