docker版本升级

docker作为目前最热门的容器平台,不仅与容器编排框架kubernetes紧密关联,对DomeOS而言,也是非常重要的基础技术之一。为了方便用户使用docker新版本的特性,我们提供了docker版本升级脚本,确保在不影响DomeOS中部署的服务的情况下,对Kubernetes集群的docker版本进行升级。

注意: 该脚本只适用于CentOS系统。

脚本

docker版本升级脚本如下表所示:

文件名说明下载地址
update_docker.shdocker版本升级脚本http://domeos-script.bjctc.scs.sohucs.com/update_docker.sh

使用方式

  • 显示帮助信息
  1. bash update_docker.sh help
  • 升级docker版本在各个需要升级docker版本的主机节点上执行如下命令
  1. sudo bash update_docker.sh [options]

说明

  • 请在确保当前主机已经安装了docker的情况下,执行该脚本。
  • docker建议使用1.10.3以上的版本,本脚本提供了1.10.3、1.12.3和1.13.1三个版本的下载和配置。
  • 如果—need-change-storage参数为true,会删除当前所有的docker storage相关的配置,如果需要保留原配置,请勿使用该脚本。
  • 升级期间,当前主机上由用户手动创建的docker容器将会停止服务,待升级完成后会被启动。参数说明
  1. --new-version:新的docker版本,可选值为{1.10.31.12.31.13.1}(必需)。
  2. --api-serverkubernetes集群kube-apiserver服务地址,格式为“http://ip:port”或者“https://ip:port”(必需)。
  3. --kube-node-name:主机在kubernetes集群中的节点名称,默认为主机名。
  4. --old-docker-graph:原docker运行时的根路径,默认为“/var/lib/docker”。
  5. --docker-graph:新的docker运行时的根路径,容器、本地镜像等会存储在该路径下,占用空间大,建议设置到大容量磁盘上,默认为“/data/docker”。
  6. --need-migrate-pods:是否需要迁移实例。若该参数为true,在升级过程中,会先将当前主机上所有由kubernetes创建的实例(DaemonSet类型除外)都调度到别的主机上,期间不会有新的实例被调度到该主机上,升级完成后会恢复至原状态。默认为“true”。
  7. --need-change-storage:是否需要改变docker数据存储路径。若该参数为true,会删除原docker-storage相关的参数,并重新配置graph路径,然后将原docker数据目录移动到新的数据目录。默认为“true”。

样例

若需要将docker升级到1.12.3版本,需要升级docker版本的主机为 10.10.150.100,主机名为test-150-100,kubernetes集群kube-apiserver服务地址为http://10.10.10.10:8080,需要改变docker的数据存储目录,原docker的graph路径为/var/lib/docker,新的graph路径为/data/docker,升级过程需要将主机上通过kubernetes创建的实例都迁移走,则需要在主机上执行:

  1. sudo bash update_docker.sh \
  2. --new-version 1.12.3 \
  3. --api-server http://10.10.10.10:8080 \
  4. --kube-node-name test-150-100 \
  5. --old-docker-graph /var/lib/docker \
  6. --docker-graph /data/docker \
  7. --need-migrate-pods true \
  8. --need-change-storage true

验证

通过docker —version查看docker版本信息。

  1. $ docker --version
  2. Docker version 1.12.3, build 6b644ec

参考

问题汇总

1. 升级失败,提示“error: jobs.batch … not found”

将kubernetes集群中所有处于Completed状态的Pod都删除,即可解决该问题。

2. 升级成功后,集群出现了处于ImagePullBackOff状态的Pod

在DomeOS系统中找到Pod对应的部署,不用修改任何配置,直接以当前配置进行一次升级即可解决该问题。