长期支持版本

    社区创新版本

      安装与部署

      本章介绍如何安装和部署容器 OS 升级工具。

      软硬件要求

      硬件要求

      • 当前仅支持 x86 架构

      软件要求

      • 操作系统:openEuler 21.09

      环境准备

      安装容器OS升级工具

      安装容器 OS 升级工具的操作步骤如下:

      1. 配置yum源:openEuler21.09和openEuler21.09:Epol

        [openEuler21.09] # openEuler 21.09 官方发布源
        name=openEuler21.09
        baseurl=http://repo.openeuler.org/openEuler-21.09/everything/$basearch/ 
        enabled=1
        gpgcheck=1
        gpgkey=http://repo.openeuler.org/openEuler-21.09/everything/$basearch/RPM-GPG-KEY-openEuler
        
        [Epol] # openEuler 21.09:Epol 官方发布源
        name=Epol
        baseurl=http://repo.openeuler.org/openEuler-21.09/EPOL/main/$basearch/
        enabled=1
        gpgcheck=1
        gpgkey=http://repo.openeuler.org/openEuler-21.09/OS/$basearch/RPM-GPG-KEY-openEuler 
        
      2. 使用 root 账户安装容器 OS 升级工具:

        # yum install KubeOS KubeOS-scripts -y
        

      说明

      容器 OS 升级工具会安装在 /opt/kubeOS 目录下,包括os-operator,os-proxy,os-agent二进制,制作容器 OS 工具及相应配置文件 。

      部署容器OS升级工具

      容器OS升级工具安装完成后,需要对此进行配置部署,本章介绍如何配置和部署容器OS升级工具。

      制作os-operator和os-proxy镜像

      环境准备

      使用 Docker 制作容器镜像,请先确保 Docker 已经安装和配置完成。

      操作步骤

      1. 进入工作目录。

        cd /opt/kubeOS
        
      2. 指定 proxy 的镜像仓库、镜像名及版本。

        export IMG_PROXY=your_imageRepository/os-proxy_imageName:version
        
      3. 指定 operator 的镜像仓库、镜像名及版本。

        export IMG_OPERATOR=your_imageRepository/os-operator_imageName:version
        
      4. 请用户自行编写Dockerfile来构建镜像 ,Dockfile编写请注意以下几项

        • os-operator和os-proxy镜像需要基于baseimage进行构建,请用户保证baseimage的安全性
        • 需将os-operator和os-proxy二进制文件分别拷贝到对应的镜像中
        • 请确保os-proxy镜像中os-proxy二进制文件属主和属组为root,文件权限为500
        • 请确保os-operator镜像中os-operator二进制文件属主和属组为容器内运行os-operator进程的用户,文件权限为500
        • os-operator和os-proxy的二进制文件在镜像内的位置和容器启动时运行的命令需与部署的yaml中指定的字段相对应。

        Dockerfile示例如下

        FROM your_baseimage
        COPY ./bin/proxy /proxy
        ENTRYPOINT ["/proxy"]
        
        FROM your_baseimage
        COPY --chown=6552:6552 ./bin/operator /operator
        ENTRYPOINT ["/operator"]
        

        Dockerfile也可以使用多阶段构建。

      5. 构建容器镜像(os-operator 和 os-proxy 镜像)。

        # 指定proxy的Dockerfile地址
        export DOCKERFILE_PROXY=your_dockerfile_proxy
        # 指定operator的Dockerfile路径
        export DOCKERFILE_OPERATOR=your_dockerfile_operator
        # 镜像构建
        docker build -t ${IMG_OPERATOR} -f ${DOCKERFILE_OPERATOR} .
        docker build -t ${IMG_PROXY} -f ${DOCKERFILE_PROXY} .
        
      6. 将容器镜像 push 到镜像仓库。

        docker push ${IMG_OPERATOR}
        docker push ${IMG_PROXY}
        

      制作容器OS镜像

      注意事项

      • 制作容器 OS 镜像需要使用 root 权限
      • 容器 OS 镜像制作工具的 rpm 包源为 openEuler 的全量 ISO ,例如openEuler-21.09-everything-x86_64-dvd.iso
      • 使用默认 rpmlist 制作的容器OS镜像,默认和制作工具保存在相同路径,该分区至少有 25GiB 的剩余磁盘空间
      • 制作容器 OS 镜像时,不支持用户自定义配置挂载文件

      操作步骤

      制作容器OS的命令格式为:

      generate.sh ISO_PATH VERSION AGENT_PATH ENCRYPTED_PASSWD

      其中各参数含义为:

      • ISO_PATH :全量 ISO 路径
      • AGENT_PATH:os-agent 二进制路径
      • VERSION :制作的容器 OS 镜像的版本

      • ENCRYPTED_PASSWD:容器 OS 镜像的 root 用户密码,加密后的带盐值的密码,可以用 openssl、kiwi 等命令生成

      制作容器OS的步骤如下:

      1. 进入执行目录:

        cd /opt/kubeOS/scripts
        
      2. 执行 generate.sh 制作容器 OS,参考命令如下:

        bash generate.sh openEuler-21.09-everything-x86_64-dvd.iso v1 ../bin/os-agent '''$1$xyz$RdLyKTL32WEvK3lg8CXID0'''
        

        容器 OS 镜像制作完成后,会在 /opt/kubeOS/scripts 目录下生成:

        • qcow2 格式的系统镜像 system.qcow2。system.qcow2 大小默认为 20GiB,支持的根文件系统分区大小 < 2020 MiB,持久化分区 < 16GiB 。
        • 可用于升级的根文件系统分区镜像 update.img 。

        制作出来的容器 OS 镜像目前只能用于 CPU 架构为 x86 的虚拟机场景。

      部署CRD、operator和proxy

      注意事项

      • 请先部署 Kubernetes 集群,部署方法参考《openEuler 21.09 Kubernetes 集群部署指南》
      • 集群中准备进行升级的 Worker 节点的 OS 需要为使用上一节方式制作出来的容器 OS,如不是,请用 system.qcow2重新部署虚拟机,虚拟机部署请见《openEuler 21.09 虚拟化用户指南》,Master节点目前不支持容器 OS 升级,请用openEuler 21.09部署Master节点
      • 部署 OS 的 CRD(CustomResourceDefinition),os-operator,os-proxy 以及 RBAC (Role-based access control) 机制的 YAML 需要用户自行编写。
      • operator 和 proxy 部署在 kubernetes 集群中,operator 应部署为 deployment,proxy 应部署为damonset
      • 尽量部署好 kubernetes 的安全措施,如 rbac 机制,pod 的 service account 和 security policy 配置等

      操作步骤

      1. 准备 YAML 文件,包括用于部署 OS 的CRD、RBAC 机制、os- operator 和os- proxy 的 YAML 文件,可参考yaml-example。假设分别为 crd.yaml、rbac.yaml、manager.yaml 。

      2. 部署 CRD、RBAC、os-operator 和 os-proxy。假设 crd.yaml、rbac.yaml、manager.yaml 文件分别存放在当前目录的 config/crd、config/rbac、config/manager 目录下 ,参考命令如下:

        kubectl apply -f config/crd
        kubectl apply -f config/rbac 
        kubectl apply -f config/manager
        
      3. 部署完成后,执行以下命令,确认各个组件是否正常启动。如果所有组件的 STATUS 为 Running,说明组件已经正常启动。

        kubectl get pods -A
        

      文档捉虫

      “有虫”文档片段

      问题描述

      提交类型 issue

      有点复杂...

      找人问问吧。

      PR

      小问题,全程线上修改...

      一键搞定!

      问题类型
      规范和低错类

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

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

      ● 英文中包含中文字符;

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

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

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

      易用性

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

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

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

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

      正确性

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

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

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

      ● 代码片段错误;

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

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

      风险提示

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

      内容合规

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

      ● 内容侵权;

      您对文档的总体满意度

      非常不满意
      非常满意
      提交
      根据您的反馈,会自动生成issue模板。您只需点击按钮,创建issue即可。
      文档捉虫
      编组 3备份