使用方法

注意事项

  1. 容器 OS 升级为所有软件包原子升级,默认不在容器 OS 内提供单包升级能力。
  2. 容器 OS 升级为双区升级的方式,不支持更多分区数量。
  3. 单节点的升级过程的日志可在节点的 /var/log/messages 文件查看。
  4. 请严格按照提供的升级和回退流程进行操作,异常调用顺序可能会导致系统无法升级或回退。
  5. 使用 docker 镜像升级和 mtls 双向认证仅支持 openEuler 22.09 及之后的版本
  6. 不支持跨大版本升级

升级指导

在集群中创建类别为 OS 的定制对象,设置相应字段。类别 OS 来自于安装和部署章节创建的 CRD 对象,字段及说明如下:

参数参数类型参数说明使用说明是否必选
imagetypestring使用的升级镜像的类型需为 docker 或者 disk ,其他值无效,且该参数仅在升级场景有效
opstypestring进行的操作,升级或者回退需为 upgrade ,或者 rollback ,其他值无效
osversionstring用于升级或回退的镜像的 OS 版本需为 KubeOS version , 例如: KubeOS 1.0.0
maxunavailableint同时进行升级或回退的节点数maxunavailable 值设置为大于实际集群的节点数时也可正常部署,升级或回退时会按照集群内实际节点数进行
dockerimagestring用于升级的容器镜像需要为容器镜像格式:repository/name:tag,仅在使用容器镜像升级场景下有效
imageurlstring用于升级的磁盘镜像的地址imageurl 中包含协议,只支持 http 或 https 协议,例如:https://192.168.122.15/update.img 仅在使用磁盘镜像升级场景下有效
checksumstring用于升级的磁盘镜像校验的 checksum(SHA-256) 值仅在使用磁盘镜像升级场景下有效
flagSafebool当 imageurl 的地址使用 http 协议表示是否是安全的需为 true 或者 false ,仅在 imageurl 使用 http 协议时有效
mtlsbool用于表示与 imageurl 连接是否采用 https 双向认证需为 true 或者 false ,仅在 imageurl 使用 https 协议时有效
cacertstringhttps 或者 https 双向认证时使用的根证书文件仅在 imageurl 使用 https 协议时有效imageurl 使用 https 协议时必选
clientcertstringhttps 双向认证时使用的客户端证书文件仅在使用 https 双向认证时有效mtls 为true时必选
clientkeystringhttps 双向认证时使用的客户端公钥仅在使用 https 双向认证时有效mtls 为 true 时必选

imageurl 指定的地址里包含协议,只支持 http 或 https 协议。imageurl 为 https 协议时为安全传输,imageurl 为 http 地址时,需指定 flagSafe 为 true,即用户明确该地址为安全时,才会下载镜像。如 imageurl 为 http 地址且没有指定 flagSafe 为 true,默认该地址不安全,不会下载镜像并且在升级节点的日志中提示用户该地址不安全

对于 imageurl,推荐使用 https 协议,使用 https 协议需要升级的机器已安装相应证书。如果镜像服务器由用户自己维护,需要用户自己进行签名,并保证升级节点已安装对应证书。用户需要将证书放在容器 OS /etc/KubeOS/certs 目录下。地址由管理员传入,管理员应该保证网址的安全性,推荐采用内网地址。

容器 OS 镜像的合法性检查需要由容器 OS 镜像服务提供者做合法性检查,确保下载的容器 OS 镜像来源可靠

编写 YAML 文件,在集群中部署 OS 的 cr 实例,用于部署 cr 实例的 YAML 示例如下:

  • 使用磁盘镜像进行升级

    apiVersion: upgrade.openeuler.org/v1alpha1
    kind: OS
    metadata:
      name: os-sample
    spec:
      imagetype: disk
      opstype: upgrade
      osversion: edit.os.version
      maxunavailable: edit.node.upgrade.number
      dockerimage: ""
      imageurl: edit.image.url
      checksum: image.checksum
      flagSafe: imageurl.safety
      mtls: imageurl use mtls or not
      cacert:  ca certificate 
      clientcert:  client certificate 
      clientkey:  client certificate key 
    
  • 使用容器镜像升级

    apiVersion: upgrade.openeuler.org/v1alpha1
    kind: OS
    metadata:
      name: os-sample
    spec:
      imagetype: docker
      opstype: upgrade
      osversion: edit.os.version
      maxunavailable: edit.node.upgrade.number
      dockerimage: dockerimage like repository/name:tag
      imageurl: ""
      checksum: ""
      flagSafe: false
      mtls: true
    

    使用容器镜像进行升级前请先制作升级所需的容器镜像,制作方式请见《容器OS镜像制作指导》

假定将上面的 YAML 保存到 upgrade_v1alpha1_os.yaml

查看未升级的节点的 OS 版本

kubectl get nodes -o custom-columns='NAME:.metadata.name,OS:.status.nodeInfo.osImage'

执行命令,在集群中部署 cr 实例后,节点会根据配置的参数信息进行升级。

kubectl apply -f upgrade_v1alpha1_os.yaml

再次查看节点的 OS 版本来确认节点是否升级完成

kubectl get nodes -o custom-columns='NAME:.metadata.name,OS:.status.nodeInfo.osImage'

说明

如果后续需要再次升级,与上面相同对 upgrade_v1alpha1_os.yaml 的 imageurl ,osversion,checksum,maxunavailable,flagSafe 或者 dockerimage 字段进行相应修改。

回退指导

使用场景

  • 虚拟机无法正常启动时,需要退回到上一可以启动的版本时进行回退操作,仅支持手动回退容器 OS 。
  • 虚拟机能够正常启动并且进入系统,需要将当前版本退回到老版本时进行回退操作,支持工具回退(类似升级方式)和手动回退,建议使用工具回退。

手动回退

手动重启虚拟机,选择第二启动项进行回退,手动回退仅支持回退到本次升级之前的版本。

工具回退

  • 回退至任意版本

    • 修改 OS 的 cr 实例的YAML 配置文件(例如 upgrade_v1alpha1_os.yaml),设置相应字段为期望回退的老版本镜像信息。类别 OS 来自于安装和部署章节创建的CRD对象,字段说明及示例请见上一节升级指导。

    • YAML 修改完成后执行更新命令,在集群中更新定制对象后,节点会根据配置的字段信息进行回退

      kubectl apply -f upgrade_v1alpha1_os.yaml
      
  • 回退至上一版本

    • 修改 upgrade_v1alpha1_os.yaml,设置 osversion 为上一版本,opstype 为 rollback,回退至上一版本(即切换至上一分区)。YAML 示例如下:

      apiVersion: upgrade.openeuler.org/v1alpha1
      kind: OS
      metadata:
        name: os-sample
      spec:
        imagetype: ""
        opstype: rollback
        osversion: KubeOS pervious version
        maxunavailable: 2
        dockerimage: ""
        imageurl: ""
        checksum: ""
        flagSafe: false
        mtls:true
      
    • YAML 修改完成后执行更新命令,在集群中更新定制对象后,节点会根据配置的字段信息进行回退

      kubectl apply -f upgrade_v1alpha1_os.yaml
      

      更新完成后,节点会根据配置信息回退容器 OS。

  • 查看节点容器 OS 版本,确认回退是否成功。

    kubectl get nodes -o custom-columns='NAME:.metadata.name,OS:.status.nodeInfo.osImage'
    

文档捉虫

“有虫”文档片段

问题描述

提交类型 issue
有点复杂...
找人问问吧。
PR
小问题,全程线上修改...
一键搞定!
问题类型
规范和低错类

● 错别字或拼写错误;标点符号使用错误;

● 链接错误、空单元格、格式错误;

● 英文中包含中文字符;

● 界面和描述不一致,但不影响操作;

● 表述不通顺,但不影响理解;

● 版本号不匹配:如软件包名称、界面版本号;

易用性

● 关键步骤错误或缺失,无法指导用户完成任务;

● 缺少必要的前提条件、注意事项等;

● 图形、表格、文字等晦涩难懂;

● 逻辑不清晰,该分类、分项、分步骤的没有给出;

正确性

● 技术原理、功能、规格等描述和软件不一致,存在错误;

● 原理图、架构图等存在错误;

● 命令、命令参数等错误;

● 代码片段错误;

● 命令无法完成对应功能;

● 界面错误,无法指导操作;

风险提示

● 对重要数据或系统存在风险的操作,缺少安全提示;

内容合规

● 违反法律法规,涉及政治、领土主权等敏感词;

● 内容侵权;

您对文档的总体满意度

非常不满意
非常满意
提交
根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。