docker版本升级
docker作为目前最热门的容器平台,不仅与容器编排框架kubernetes紧密关联,对DomeOS而言,也是非常重要的基础技术之一。为了方便用户使用docker新版本的特性,我们提供了docker版本升级脚本,确保在不影响DomeOS中部署的服务的情况下,对Kubernetes集群的docker版本进行升级。
注意: 该脚本只适用于CentOS系统。
脚本
docker版本升级脚本如下表所示:
文件名 | 说明 | 下载地址 |
---|---|---|
update_docker.sh | docker版本升级脚本 | http://domeos-script.bjctc.scs.sohucs.com/update_docker.sh |
使用方式
- 显示帮助信息
bash update_docker.sh help
- 升级docker版本在各个需要升级docker版本的主机节点上执行如下命令
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容器将会停止服务,待升级完成后会被启动。参数说明
--new-version:新的docker版本,可选值为{1.10.3,1.12.3,1.13.1}(必需)。
--api-server:kubernetes集群kube-apiserver服务地址,格式为“http://ip:port”或者“https://ip:port”(必需)。
--kube-node-name:主机在kubernetes集群中的节点名称,默认为主机名。
--old-docker-graph:原docker运行时的根路径,默认为“/var/lib/docker”。
--docker-graph:新的docker运行时的根路径,容器、本地镜像等会存储在该路径下,占用空间大,建议设置到大容量磁盘上,默认为“/data/docker”。
--need-migrate-pods:是否需要迁移实例。若该参数为true,在升级过程中,会先将当前主机上所有由kubernetes创建的实例(DaemonSet类型除外)都调度到别的主机上,期间不会有新的实例被调度到该主机上,升级完成后会恢复至原状态。默认为“true”。
--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创建的实例都迁移走,则需要在主机上执行:
sudo bash update_docker.sh \
--new-version 1.12.3 \
--api-server http://10.10.10.10:8080 \
--kube-node-name test-150-100 \
--old-docker-graph /var/lib/docker \
--docker-graph /data/docker \
--need-migrate-pods true \
--need-change-storage true
验证
通过docker —version
查看docker版本信息。
$ docker --version
Docker version 1.12.3, build 6b644ec
参考
- Docker官方文档:https://docs.docker.com/
- Docker安装包(rpm)下载地址:https://yum.dockerproject.org/repo/main/centos/7/Packages/
- Docker安装包(deb)下载地址:https://apt.dockerproject.org/repo/pool/main/d/docker-engine/
问题汇总
1. 升级失败,提示“error: jobs.batch … not found”
将kubernetes集群中所有处于Completed状态的Pod都删除,即可解决该问题。
2. 升级成功后,集群出现了处于ImagePullBackOff状态的Pod
在DomeOS系统中找到Pod对应的部署,不用修改任何配置,直接以当前配置进行一次升级即可解决该问题。