背景介绍

OpenShift是一个开源产品,自2015年3.0版本开始,它使用Kubernetes作为底层的编排引擎,已经有将近5年了。同时它也有企业级版本,服务了众多大中小企业。经过这些年生产上的实践,OpenShift 3不断完善,已经非常稳定了,但是它依赖组件多,不断增加新的功能,使用量不断增多,一些漏洞和问题会被发现。在生产环境中,运行着大量的生产级应用,我们该如何升级Docker等组件,把业务影响降到最小,这是每个企业都无法绕过的问题。
Docker作为OpenShift 3默认的容器运行,它的可靠性也尤为重要。本篇就以Docker升级为例介绍如何对OpenShift组件进行升级。
升级不同OpenShift组件的思路是一样,主要是如下两条。

  1. 逐个节点升级
  2. 升级前将业务应用迁走

升级Docker实操

  1. 更新yum源中的docker包
    1
    2
    $ cp docker-rpm/* ./extras/Packages/d/
    $ createrepo --update extras
  2. 迁移节点上的POD并将它设置为不可调度
    1
    $ oc adm drain <node_name> --force --delete-local-data --ignore-daemonsets 
  3. 排除不需要升级的软件
    1
    2
    $ atomic-openshift-docker-excluder exclude 
    $ atomic-openshift-excluder exclude
  4. 升级docker
    1
    2
    $ yum clean all
    $ yum update docker
  5. 重启服务或者重启主机

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
$ reboot
  1. 将节点设置为可调度
    1
    $ oc adm uncordon <node_name> 

参考文章

https://access.redhat.com/solutions/3874691