背景介绍
OpenShift是一个开源产品,自2015年3.0版本开始,它使用Kubernetes作为底层的编排引擎,已经有将近5年了。同时它也有企业级版本,服务了众多大中小企业。经过这些年生产上的实践,OpenShift 3不断完善,已经非常稳定了,但是它依赖组件多,不断增加新的功能,使用量不断增多,一些漏洞和问题会被发现。在生产环境中,运行着大量的生产级应用,我们该如何升级Docker等组件,把业务影响降到最小,这是每个企业都无法绕过的问题。
Docker作为OpenShift 3默认的容器运行,它的可靠性也尤为重要。本篇就以Docker升级为例介绍如何对OpenShift组件进行升级。
升级不同OpenShift组件的思路是一样,主要是如下两条。
- 逐个节点升级
- 升级前将业务应用迁走
升级Docker实操
- 更新yum源中的docker包
1 2
| $ cp docker-rpm/* ./extras/Packages/d/ $ createrepo --update extras
|
- 迁移节点上的POD并将它设置为不可调度
1
| $ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets
|
- 排除不需要升级的软件
1 2
| $ atomic-openshift-docker-excluder exclude $ atomic-openshift-excluder exclude
|
- 升级docker
1 2
| $ yum clean all $ yum update docker
|
- 重启服务或者重启主机
Master节点
1 2 3 4
| $ systemctl restart docker $ master-restart api $ master-restart controllers $ systemctl restart origin-node
|
Node节点
1 2
| $ systemctl restart docker $ systemctl restart origin-node
|
或者
- 将节点设置为可调度
1
| $ oc adm uncordon <node_name>
|
参考文章
https://access.redhat.com/solutions/3874691