From 6d8b7a7ef2109e1a985d11451ab3d2179793b8da Mon Sep 17 00:00:00 2001 From: fanqinyuan Date: Sat, 19 Apr 2025 02:12:44 +0000 Subject: [PATCH] =?UTF-8?q?=E6=8B=BC=E5=86=99=E9=94=99=E8=AF=AF=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: fanqinyuan --- ...11\350\243\205\345\207\206\345\244\207.md" | 230 ++++++++++++------ 1 file changed, 162 insertions(+), 68 deletions(-) diff --git "a/docs/zh/docs/Installation/\345\256\211\350\243\205\345\207\206\345\244\207.md" "b/docs/zh/docs/Installation/\345\256\211\350\243\205\345\207\206\345\244\207.md" index ac6d9fc45..90b68910e 100644 --- "a/docs/zh/docs/Installation/\345\256\211\350\243\205\345\207\206\345\244\207.md" +++ "b/docs/zh/docs/Installation/\345\256\211\350\243\205\345\207\206\345\244\207.md" @@ -1,108 +1,202 @@ -# 安装准备 +# 安装与部署 -介绍安装前需要考虑软硬件兼容性状况,以及相关的配置和准备工作。 +本章介绍如何安装和部署容器 OS 升级工具。 -## 获取安装源 + -在安装开始前,您需要获取openEuler的发布包和校验文件。 +- [安装与部署](#安装与部署) + - [软硬件要求](#软硬件要求) + - [硬件要求](#硬件要求) + - [软件要求](#软件要求) + - [环境准备](#环境准备) + - [安装容器OS升级工具](#安装容器os升级工具) + - [部署容器OS升级工具](#部署容器os升级工具) + - [制作os-operator和os-proxy镜像](#制作os-operator和os-proxy镜像) + - [环境准备](#环境准备-1) + - [操作步骤](#操作步骤) + - [制作容器OS虚拟机镜像](#制作容器os虚拟机镜像) + - [注意事项](#注意事项) + - [操作步骤](#操作步骤-1) + - [部署CRD,operator和proxy](#部署crdoperator和proxy) + - [注意事项](#注意事项-1) + - [操作步骤](#操作步骤-2) -请按以下步骤获取openEuler的发布包和校验文件: + -1. 登录[openEuler社区](https://openeuler.org)网站。 -2. 单击“下载”。 -3. 单击“社区发行版”,显示版本列表。 -4. 在版本列表的“openEuler 24.03 LTS SP1”版本处单击“前往下载”按钮,进入openEuler 24.03_LTS_SP1版本下载列表。 -5. 根据实际待安装环境的架构和场景选择需要下载的 openEuler 的发布包和校验文件。 - 1. 若为AArch64架构。 - 1. 单击“AArch64”。 - 2. 若选择本地安装,选择“Offline Standard ISO”或者“Offline Everything ISO”对应的“立即下载”将发布包 “openEuler-24.03-LTS-SP1-aarch64-dvd.iso”下载到本地。 - 3. 若选择网络安装,选择“Network Install ISO”将发布包 “openEuler-24.03-LTS-SP1-netinst-aarch64-dvd.iso”下载到本地。 - 2. 若为x86_64架构。 - 1. 单击“x86_64”。 - 2. 若选择本地安装,选择“Offline Standard ISO”或者“Offline Everything ISO”对应的“立即下载”将发布包 “openEuler-24.03-LTS-SP1-x86_64-dvd.iso”下载到本地。 - 3. 若选择网络安装,选择“Network Install ISO”将发布包 “openEuler-24.03-LTS-SP1-netinst-x86_64-dvd.iso ”下载到本地。 +## 软硬件要求 ->![](./public_sys-resources/icon-note.gif) **说明:** +### 硬件要求 + +*当前仅支持 x86和 AArch64 架构 + +### 软件要求 + +*操作系统:openEuler 24.03-LTS-SP1 + +### 环境准备 + +*安装 openEuler 系统,安装方法参考《[安装指南](../Installation/installation.md)》 +*安装 qemu-img,bc,parted,tar,yum,docker,dosfstools + +## 安装容器OS升级工具 + +安装容器 OS 升级工具的操作步骤如下: + +1. 配置 openEuler 24.03-LTS-SP1 yum 源: + + ```shell + [openEuler24.03-LTS-SP1] # openEuler 24.03-LTS-SP1 官方发布源 + name=openEuler24.03-LTS-SP1 + baseurl=http://repo.openeuler.org/openEuler-24.03-LTS-SP1/everything/$basearch/ + enabled=1 + gpgcheck=1 + gpgkey=http://repo.openeuler.org/openEuler-24.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler + ``` + +2. 使用 root 帐户安装容器 OS 升级工具: + + ```shell + yum install KubeOS KubeOS-scripts -y + ``` + +> ![](./public_sys-resources/icon-note.gif)**说明**: > -> - 网络安装方式的 ISO 发布包较小,在有网络的安装环境可以选择网络安装方式。 -> - AArch64架构的发布包支持UEFI模式,x86\_64架构的发布包支持UEFI模式和Legacy模式。 +> 容器 OS 升级工具会安装在 /opt/kubeOS 目录下,包括os-operator,os-proxy,os-agent二进制,制作容器 OS 工具及相应配置文件 。 + +## 部署容器OS升级工具 + +容器OS升级工具安装完成后,需要对此进行配置部署,本章介绍如何配置和部署容器OS升级工具。 + +### 制作os-operator和os-proxy镜像 + +#### 环境准备 + +使用 Docker 制作容器镜像,请先确保 Docker 已经安装和配置完成。 + +#### 操作步骤 + +1. 进入工作目录。 + + ```shell + cd /opt/kubeOS + ``` + +2. 指定 proxy 的镜像仓库、镜像名及版本。 + + ```shell + export IMG_PROXY=your_imageRepository/os-proxy_imageName:version + ``` + +3. 指定 operator 的镜像仓库、镜像名及版本。 + + ```shell + export IMG_OPERATOR=your_imageRepository/os-operator_imageName:version + ``` -## 发布包完整性校验 +4. 请用户自行编写Dockerfile来构建镜像 ,Dockerfile编写请注意以下几项 ->![](./public_sys-resources/icon-note.gif) **说明:** ->本章节以AArch64架构的发布包完整性校验为例,x86\_64架构的发布包完整性校验的操作方法相同。 + *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示例如下 -为了确认软件包在传输过程中由于网络原因或者存储设备原因是否出现下载不完整的问题,在获取到软件包后,需要对软件包的完整性进行校验,通过了校验的软件包才能部署。 + ```dockerfile + FROM your_baseimage + COPY ./bin/proxy /proxy + ENTRYPOINT ["/proxy"] + ``` -这里通过对比校验文件中记录的校验值和手动方式计算的iso文件校验值,判断软件包是否完整。若两个值相同,说明iso文件完整,否则,iso完整性被破坏,请重新获取iso发布包。 + ```dockerfile + FROM your_baseimage + COPY --chown=6552:6552 ./bin/operator /operator + ENTRYPOINT ["/operator"] + ``` -### 前提条件 + Dockerfile也可以使用多阶段构建。 -在校验发布包完整性之前,需要准备如下文件: +5. 构建容器镜像(os-operator 和 os-proxy 镜像)。 -- iso文件:openEuler-24.03-LTS-SP1-aarch64-dvd.iso。 + ```shell + # 指定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} . + ``` -- 校验文件:ISO对应完整性校验值,复制保存对应的ISO值。 +6. 将容器镜像 push 到镜像仓库。 -### 操作指导 + ```shell + docker push ${IMG_OPERATOR} + docker push ${IMG_PROXY} + ``` -文件完整性校验操作步骤如下: +### 制作容器OS虚拟机镜像 -1. 计算文件的sha256校验值。执行命令如下: +#### 注意事项 - ``` - sha256sum openEuler-24.03-LTS-SP1-aarch64-dvd.iso - ``` +*以虚拟机镜像为例,如需进行物理机的镜像制作请见《[容器OS镜像制作指导](./容器OS镜像制作指导.md)》。 +*制作容器OS 镜像需要使用 root 权限。 +*容器OS 镜像制作工具的 rpm 包源为 openEuler 具体版本的 everything 仓库和 EPOL 仓库。制作镜像时提供的 repo 文件中,yum 源建议同时配置 openEuler 具体版本的 everything 仓库和 EPOL 仓库。 +*使用默认 rpmlist 制作的容器OS虚拟机镜像,默认保存在调用`kbimg`路径下的`scripts-auto`文件夹内,该分区至少有 25GiB 的剩余磁盘空间。 +*制作容器 OS 镜像时,不支持用户自定义配置挂载文件。 - 命令执行完成后,输出校验值。 +#### 操作步骤 -2. 对比步骤1计算的校验值与对刚刚复制的SHA256的值是否一致。 +制作容器OS 虚拟机镜像使用 kbimg,命令详情请见《[容器OS镜像制作指导](./容器OS镜像制作指导.md)》。 - 如果校验值一致说明iso文件完整,如果校验值不一致则可以确认文件完整性已被破坏,需要重新获取。 +制作容器OS 虚拟机镜像的步骤如下: -## 物理机的安装要求 +1. 进入执行目录: -若需要在物理机环境上安装openEuler操作系统,则物理机需要满足如下的硬件兼容性和最小硬件要求。 + ```shell + cd /opt/kubeOS/scripts + ``` -### 硬件兼容支持 +2. 执行 kbming 制作容器OS,参考命令如下: -openEuler安装时,应注意硬件兼容性方面的问题,当前已支持的服务器类型请参考[兼容性列表](https://www.openeuler.org/zh/compatibility/)。 + ```shell + ./kbimg create -f ./kbimg.toml vm-img + ``` -### 最小硬件要求 + 容器 OS 镜像制作完成后,会在 /opt/kubeOS/scripts/scripts-auto 目录下生成: -openEuler所需的最小硬件要求如[表2](#tff48b99c9bf24b84bb602c53229e2541)所示。 + -raw格式的系统镜像system.img,system.img大小默认为20G,支持的根文件系统分区大小<2560MiB,持久化分区<15GB。 + -qcow2 格式的系统镜像 system.qcow2。 + -可用于升级的根文件系统 kubeos.tar。 -**表 2** 最小硬件要求 + 制作出来的容器 OS 虚拟机镜像目前只能用于 CPU 架构为 x86 和 AArch64 的虚拟机场景,不支持 x86 架构的虚拟机使用 legacy 启动模式启动。 -| 部件名称 | 最小硬件要求 | -| :---- | :---- | -| 架构 | AArch64或x86_64 | -| CPU | 2个CPU | -| 内存 | 不小于4GB(为了获得更好的应用体验,建议不小于8GB) | -| 硬盘 | 不小于32GB(为了获得更好的应用体验,建议不小于120GB) | +### 部署CRD,operator和proxy -## 虚拟机的安装要求 +#### 注意事项 -若需要在虚拟机环境上安装openEuler操作系统,则虚拟机需要满足如下的虚拟化平台兼容性和最小虚拟化要求。 +*请先部署 Kubernetes 集群,部署方法参考[《openEuler 24.03-LTS-SP1 Kubernetes 集群部署指南》](../Kubernetes/Kubernetes.md)。 -### 虚拟化平台兼容性 +- 集群中准备进行升级的 Worker 节点的 OS 需要为使用上一节方式制作出来的容器 OS,如不是,请用 system.qcow2重新部署虚拟机,虚拟机部署请见[《openEuler 24.03-LTS-SP1 虚拟化用户指南》](../Virtualization/virtualization.md),Master节点目前不支持容器 OS 升级,请用openEuler 24.03-LTS-SP1部署Master节点。 +- 部署 OS 的 CRD(CustomResourceDefinition),os-operator,os-proxy 以及 RBAC (Role-based access control) 机制的 YAML 需要用户自行编写。 +- operator 和 proxy 部署在 kubernetes 集群中,operator 应部署为 deployment,proxy 应部署为daemonset。 +- 尽量部署好 kubernetes 的安全措施,如 rbac 机制,pod 的 service account 和 security policy 配置等。 -openEuler安装时,应注意虚拟化平台兼容性的问题,当前已支持的虚拟化平台为: +#### 操作步骤 -- openEuler自有的虚拟化组件(HostOS为openEuler,虚拟化组件为发布包中的qemu、KVM)创建的虚拟化平台。 -- 华为公有云的x86虚拟化平台。 +1. 准备 YAML 文件,包括用于部署 OS 的CRD、RBAC 机制、os- operator 和os- proxy 的 YAML 文件,可参考[yaml-example](https://gitee.com/openeuler/KubeOS/tree/master/docs/example/config)。假设分别为 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 目录下 ,参考命令如下: -openEuler所需的最小虚拟化空间要求如[表3](#tff48b99c9bf24b84bb602c53229e2541)所示。 + ```shell + kubectl apply -f config/crd + kubectl apply -f config/rbac + kubectl apply -f config/manager + ``` -**表 3** 最小虚拟化空间要求 +3. 部署完成后,执行以下命令,确认各个组件是否正常启动。如果所有组件的 STATUS 为 Running,说明组件已经正常启动。 -| 部件名称 | 最小虚拟化空间要求 | -| :---- | :---- | -| 架构 | AArch64或x86_64 | -| CPU | 2个CPU | -| 内存 | 不小于4GB(为了获得更好的应用体验,建议不小于8GB) | -| 硬盘 | 不小于32GB(为了获得更好的应用体验,建议不小于120GB) | + ```shell + kubectl get pods -A + ``` -- Gitee