2018-12-06 10:04:27 +08:00
|
|
|
|
## k8s 集群升级
|
2017-12-19 11:01:17 +08:00
|
|
|
|
|
2018-12-06 10:04:27 +08:00
|
|
|
|
集群升级存在一定风险,请谨慎操作。
|
2017-12-19 11:01:17 +08:00
|
|
|
|
|
2019-11-24 21:26:55 +08:00
|
|
|
|
- 项目分支`master`安装的集群可以在当前支持k8s大版本基础上升级任意小版本,比如当前安装集群为1.16.0,你可以方便的升级到任何1.16.x版本
|
2018-06-23 12:42:02 +08:00
|
|
|
|
- 项目分支`closed`(已停止更新)安装的集群目前只能进行小版本1.8.x的升级
|
2017-12-19 15:06:00 +08:00
|
|
|
|
|
2018-05-11 12:02:41 +08:00
|
|
|
|
### 备份etcd数据
|
2017-12-19 11:01:17 +08:00
|
|
|
|
|
2018-12-06 10:04:27 +08:00
|
|
|
|
- 升级前对 etcd数据做备份,在任意 etcd节点上执行:
|
2018-10-16 22:47:56 +08:00
|
|
|
|
|
2018-05-29 16:11:18 +08:00
|
|
|
|
``` bash
|
|
|
|
|
# snapshot备份
|
|
|
|
|
$ ETCDCTL_API=3 etcdctl snapshot save backup.db
|
|
|
|
|
# 查看备份
|
|
|
|
|
$ ETCDCTL_API=3 etcdctl --write-out=table snapshot status backup.db
|
|
|
|
|
```
|
2018-09-17 22:20:52 +08:00
|
|
|
|
- `kubeasz`项目也可以方便执行 `ansible-playbook /etc/ansible/23.backup.yml`,详情阅读文档[备份恢复](cluster_restore.md)
|
2018-05-29 16:11:18 +08:00
|
|
|
|
|
2018-12-06 10:04:27 +08:00
|
|
|
|
### 快速k8s版本升级
|
2017-12-19 11:01:17 +08:00
|
|
|
|
|
2018-12-06 10:04:27 +08:00
|
|
|
|
快速升级是指只升级`k8s`版本,比较常见如`Bug修复` `重要特性发布`时使用。
|
2018-08-10 15:58:08 +08:00
|
|
|
|
|
2018-12-06 10:04:27 +08:00
|
|
|
|
- 首先去官网release下载待升级的k8s版本,例如`https://dl.k8s.io/v1.11.5/kubernetes-server-linux-amd64.tar.gz`
|
2019-06-10 22:47:20 +08:00
|
|
|
|
- 解压下载的tar.gz文件,找到如下`kube*`开头的二进制,复制替换ansible控制端目录`/etc/ansible/bin`对应文件
|
2018-12-06 10:04:27 +08:00
|
|
|
|
- kube-apiserver
|
|
|
|
|
- kube-controller-manager
|
|
|
|
|
- kubectl
|
|
|
|
|
- kubelet
|
|
|
|
|
- kube-proxy
|
|
|
|
|
- kube-scheduler
|
2019-06-10 22:47:20 +08:00
|
|
|
|
- 在ansible控制端执行`ansible-playbook -t upgrade_k8s 22.upgrade.yml`即可完成k8s 升级,不会中断业务应用
|
2018-08-10 15:58:08 +08:00
|
|
|
|
|
2019-03-30 23:34:46 +08:00
|
|
|
|
如果使用 easzctl 命令行,可按如下执行:
|
|
|
|
|
|
|
|
|
|
- 首先确认待升级的集群(如果有多集群的话) `easzctl checkout <cluster_name>`
|
|
|
|
|
- 执行升级 `easzctl upgrade`
|
|
|
|
|
|
2018-12-06 10:04:27 +08:00
|
|
|
|
### 其他升级说明
|
2018-08-10 15:58:08 +08:00
|
|
|
|
|
2018-12-06 10:04:27 +08:00
|
|
|
|
其他升级是指升级k8s组件包括:`etcd版本` `docker版本`,一般不需要用到,以下仅作说明。
|
|
|
|
|
|
|
|
|
|
- 1.下载所有组件相关新的二进制解压并替换 `/etc/ansible/bin/` 目录下文件
|
|
|
|
|
|
2019-01-13 23:16:35 +08:00
|
|
|
|
- 2.升级 etcd: `ansible-playbook -t upgrade_etcd 02.etcd.yml`,**注意:etcd 版本只能升级不能降低!**
|
2018-12-06 10:04:27 +08:00
|
|
|
|
|
|
|
|
|
- 3.升级 docker (建议使用k8s官方支持的docker稳定版本)
|
|
|
|
|
- 如果可以接受短暂业务中断,执行 `ansible-playbook -t upgrade_docker 03.docker.yml`
|
|
|
|
|
- 如果要求零中断升级,执行 `ansible-playbook -t download_docker 03.docker.yml`,然后手动执行如下
|
|
|
|
|
- 待升级节点,先应用`kubectl cordon`和`kubectl drain`命令迁移业务pod
|
|
|
|
|
- 待升级节点执行 `systemctl restart docker`
|
2018-08-10 15:58:08 +08:00
|
|
|
|
- 恢复节点可调度 `kubectl uncordon`
|