7.4. 更新集群中的RHEL compute 系统

在对集群进行更新后,必须更新集群中的Red Hat Enterprise Linux(RHEL)compute 系统。

重要

因为 worker (compute) 机器只支持 Red Hat Enterprise Linux (RHEL) 版本 7.9 或更高版本,所以不能将 RHEL worker 机器升级到版本 8。

如果您使用 RHEL 作为操作系统,您还可以将计算机器更新至 OpenShift Container Platform 的另一个次要版本。当执行次版本更新时,您不需要排除 RHEL 中的任何 RPM 软件包。

先决条件

  • 已更新了集群

    重要

    因为 RHEL 机器需要集群生成的资产才能完成更新过程,所以您必须在更新其中的 RHEL worker 机器前更新集群。

  • 您可以访问用于将 RHEL 计算机器添加到集群的本地机器。您必须有权访问定义了 RHEL 系统及 upgrade playbook 的hosts Ansible 清单文件。
  • 对于次版本的更新,RPM 存储库使用的是集群上运行的相同版本的 OpenShift Container Platform。

流程

  1. 停止并禁用主机上的防火墙:

    # systemctl disable --now firewalld.service
    注意

    默认情况下,使用 "Minimal" 安装选项的基础操作系统 RHEL 启用 firewalld 保护。在主机上启用了 firewalld 服务会阻止您访问 worker 上的 OpenShift Container Platform 日志。如果您希望继续访问 worker 上的 OpenShift Container Platform 日志,以后不要启用 firewalld。

  2. 启用 OpenShift Container Platform 4.6 所需的存储库:

    1. 在运行 Ansible playbook 的机器上,更新所需的存储库:

      # subscription-manager repos --disable=rhel-7-server-ose-4.5-rpms \
                                   --enable=rhel-7-server-ansible-2.9-rpms \
                                   --enable=rhel-7-server-ose-4.6-rpms
    2. 在运行 Ansible playbook 的机器上,更新所需的软件包,包括 openshift-ansible

      # yum update openshift-ansible openshift-clients
    3. 在每个 RHEL 计算节点上,更新所需的软件仓库:

      # subscription-manager repos --disable=rhel-7-server-ose-4.5-rpms \
                                   --enable=rhel-7-server-ose-4.6-rpms  \
                                   --enable=rhel-7-fast-datapath-rpms   \
                                   --enable=rhel-7-server-optional-rpms
  3. 更新 RHEL worker 机器:

    1. 查看当前节点状态,以确定要更新哪个 RHEL worker:

      # oc get node

      输出示例

      NAME                        STATUS                        ROLES    AGE    VERSION
      mycluster-control-plane-0   Ready                         master   145m   v1.19.0
      mycluster-control-plane-1   Ready                         master   145m   v1.19.0
      mycluster-control-plane-2   Ready                         master   145m   v1.19.0
      mycluster-rhel7-0           NotReady,SchedulingDisabled   worker   98m    v1.14.6+97c81d00e
      mycluster-rhel7-1           Ready                         worker   98m    v1.14.6+97c81d00e
      mycluster-rhel7-2           Ready                         worker   98m    v1.14.6+97c81d00e
      mycluster-rhel7-3           Ready                         worker   98m    v1.14.6+97c81d00e

      记录下哪个机器具有 NotReady,SchedulingDisabled 状态。

    2. 查看位于 /<path>/inventory/hosts 中的 Ansible 清单文件,并更新其内容,以便只有具有 NotReady,SchedulingDisabled 状态的机器才列在 [workers] 部分中,如下例所示:

      [all:vars]
      ansible_user=root
      #ansible_become=True
      
      openshift_kubeconfig_path="~/.kube/config"
      
      [workers]
      mycluster-rhel7-0.example.com
    3. 进入 openshift-ansible 目录:

      $ cd /usr/share/ansible/openshift-ansible
    4. 运行 upgrade playbook:

      $ ansible-playbook -i /<path>/inventory/hosts playbooks/upgrade.yml 1
      1
      对于<path> ,指定您创建的Ansible库存文件的路径。
      注意

      upgrade playbook 仅升级 OpenShift Container Platform 软件包。它不会更新操作系统软件包。

  4. 按照上一步中的流程更新集群中的每个 RHEL worker 机器。
  5. 更新完所有 worker 后,确认所有集群节点已更新至新版本:

    # oc get node

    输出示例

    NAME                        STATUS                        ROLES    AGE    VERSION
    mycluster-control-plane-0   Ready                         master   145m   v1.19.0
    mycluster-control-plane-1   Ready                         master   145m   v1.19.0
    mycluster-control-plane-2   Ready                         master   145m   v1.19.0
    mycluster-rhel7-0           NotReady,SchedulingDisabled   worker   98m    v1.19.0
    mycluster-rhel7-1           Ready                         worker   98m    v1.19.0
    mycluster-rhel7-2           Ready                         worker   98m    v1.19.0
    mycluster-rhel7-3           Ready                         worker   98m    v1.19.0

  6. 可选:更新 upgrade playbook 没有更新的操作系统软件包。要更新不在 4.6 上的软件包,请使用以下命令:

    # yum update
    注意

    如果您使用安装 4.6 时使用的相同 RPM 存储库,则不需要排除 RPM 软件包。