2 Star 2 Fork 18

Ken / kubeasz

forked from gjmzj / kubeasz 
加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
upgrade.md 2.28 KB
一键复制 编辑 原始数据 按行查看 历史
gjmzj 提交于 2019-06-10 22:47 . docs: minor update

k8s 集群升级

集群升级存在一定风险,请谨慎操作。

  • 项目分支master安装的集群可以在k8s 1.8/1.9/1.10/1.11/1.12/1.13 任意小版本、大版本间升级
  • 项目分支closed(已停止更新)安装的集群目前只能进行小版本1.8.x的升级

备份etcd数据

  • 升级前对 etcd数据做备份,在任意 etcd节点上执行:
# snapshot备份
$ 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,详情阅读文档备份恢复

快速k8s版本升级

快速升级是指只升级k8s版本,比较常见如Bug修复 重要特性发布时使用。

  • 首先去官网release下载待升级的k8s版本,例如https://dl.k8s.io/v1.11.5/kubernetes-server-linux-amd64.tar.gz
  • 解压下载的tar.gz文件,找到如下kube*开头的二进制,复制替换ansible控制端目录/etc/ansible/bin对应文件
    • kube-apiserver
    • kube-controller-manager
    • kubectl
    • kubelet
    • kube-proxy
    • kube-scheduler
  • 在ansible控制端执行ansible-playbook -t upgrade_k8s 22.upgrade.yml即可完成k8s 升级,不会中断业务应用

如果使用 easzctl 命令行,可按如下执行:

  • 首先确认待升级的集群(如果有多集群的话) easzctl checkout <cluster_name>
  • 执行升级 easzctl upgrade

其他升级说明

其他升级是指升级k8s组件包括:etcd版本 docker版本,一般不需要用到,以下仅作说明。

  • 1.下载所有组件相关新的二进制解压并替换 /etc/ansible/bin/ 目录下文件

  • 2.升级 etcd: ansible-playbook -t upgrade_etcd 02.etcd.yml注意:etcd 版本只能升级不能降低!

  • 3.升级 docker (建议使用k8s官方支持的docker稳定版本)

    • 如果可以接受短暂业务中断,执行 ansible-playbook -t upgrade_docker 03.docker.yml
    • 如果要求零中断升级,执行 ansible-playbook -t download_docker 03.docker.yml,然后手动执行如下
      • 待升级节点,先应用kubectl cordonkubectl drain命令迁移业务pod
      • 待升级节点执行 systemctl restart docker
      • 恢复节点可调度 kubectl uncordon
1
https://gitee.com/kenstime_admin/kubeasz.git
git@gitee.com:kenstime_admin/kubeasz.git
kenstime_admin
kubeasz
kubeasz
master

搜索帮助