diff --git a/docs/zh/docs/.DS_Store b/docs/zh/docs/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..7e46cfba1fa19245e5afcef8ec61dd7fc034229f Binary files /dev/null and b/docs/zh/docs/.DS_Store differ diff --git "a/docs/zh/docs/Container/isula-build\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" "b/docs/zh/docs/Container/isula-build\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" deleted file mode 100644 index 587eb62ec76152fe737be756305f05025b71600b..0000000000000000000000000000000000000000 --- "a/docs/zh/docs/Container/isula-build\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" +++ /dev/null @@ -1,6 +0,0 @@ -# 常见问题与解决方法 -## **问题1:isula-build拉取镜像报错:pinging container registry xx: get xx: dial tcp host:repo: connect: connection refused** - -原因:拉取的镜像来源于非授信仓库。 - -解决方法:修改isula-build镜像仓库的配置文件/etc/isula-build/registries.toml,将该非授信仓库加入[registries.insecure],重启isula-build。 \ No newline at end of file diff --git "a/docs/zh/docs/Container/isula\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" "b/docs/zh/docs/Container/isula\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" deleted file mode 100644 index b41f205b7a5dc5bb145da44a387ec15742a39480..0000000000000000000000000000000000000000 --- "a/docs/zh/docs/Container/isula\345\270\270\350\247\201\351\227\256\351\242\230\344\270\216\350\247\243\345\206\263\346\226\271\346\263\225.md" +++ /dev/null @@ -1,22 +0,0 @@ -# 常见问题与解决方法 - -## **问题1:修改`iSulad`默认运行时为`lxc`,启动容器报错:Failed to initialize engine or runtime** - -原因:`iSulad`默认运行时为`runc`,设置默认运行时为`lxc`时缺少依赖。 - -解决方法:若需修改`iSulad`默认运行时为`lxc`,需要安装`lcr`、`lxc`软件包依赖,且配置`iSulad`配置文件中`runtime`为`lcr` -或者启动容器时指定`--runtime lcr`。启动容器后不应该随意卸载`lcr`、`lxc`软件包,否则可能会导致删除容器时的资源残留。 - -## **问题2:使用`iSulad` `CRI V1`接口,报错:rpc error: code = Unimplemented desc =** - -原因:`iSulad`同时支持`CRI V1alpha2`和`CRI V1`接口,默认使用`CRI V1alpha2`,若使用`CRI V1`,需要开启相应的配置。 - -解决方法:在`iSulad`配置文件`/etc/isulad/daemon.json`中开启`CRI V1`的配置。 - -```json -{ - "enable-cri-v1": true, -} -``` - -若使用源码编译`iSulad`,还需在编译时增加`cmake`编译选项`-D ENABLE_CRI_API_V1=ON`。 diff --git a/docs/zh/docs/KubeOS/public_sys-resources/icon-note.gif b/docs/zh/docs/KubeOS/public_sys-resources/icon-note.gif deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 Binary files a/docs/zh/docs/KubeOS/public_sys-resources/icon-note.gif and /dev/null differ diff --git a/docs/zh/docs/cloud/.DS_Store b/docs/zh/docs/cloud/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..51e6f471b80ef74e0dafe4f8c2ad42d0ab93923b Binary files /dev/null and b/docs/zh/docs/cloud/.DS_Store differ diff --git a/docs/zh/docs/cloud/image_builder/.DS_Store b/docs/zh/docs/cloud/image_builder/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/docs/zh/docs/cloud/image_builder/.DS_Store differ diff --git a/docs/zh/docs/cloud/image_builder/isula-build/_toc.yaml b/docs/zh/docs/cloud/image_builder/isula-build/_toc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..f04f29c2e9abd15e65fd875697c32fd5032cd755 --- /dev/null +++ b/docs/zh/docs/cloud/image_builder/isula-build/_toc.yaml @@ -0,0 +1,10 @@ +label: 容器镜像构建 +isManual: true +description: 支持通过Dockerfile文件快速构建容器镜像 +sections: + - label: 概述 + href: ./overview.md + - label: 使用指南 + href: ./isula_build.md + - label: 附录 + href: ./isula_build_appendix.md diff --git a/docs/zh/docs/cloud/image_builder/isula-build/figures/isula-build_arch.png b/docs/zh/docs/cloud/image_builder/isula-build/figures/isula-build_arch.png new file mode 100644 index 0000000000000000000000000000000000000000..911a9ae6f46988586ab49f15de282948f5470c37 Binary files /dev/null and b/docs/zh/docs/cloud/image_builder/isula-build/figures/isula-build_arch.png differ diff --git "a/docs/zh/docs/Container/isula-build\344\275\277\347\224\250\346\214\207\345\215\227.md" b/docs/zh/docs/cloud/image_builder/isula-build/isula_build.md similarity index 97% rename from "docs/zh/docs/Container/isula-build\344\275\277\347\224\250\346\214\207\345\215\227.md" rename to docs/zh/docs/cloud/image_builder/isula-build/isula_build.md index a388e45504de9f2e3252481bd0f87cc57c7fc3de..e85a681fd3b4c914ae0d88db85b2f1997af59792 100644 --- "a/docs/zh/docs/Container/isula-build\344\275\277\347\224\250\346\214\207\345\215\227.md" +++ b/docs/zh/docs/cloud/image_builder/isula-build/isula_build.md @@ -34,9 +34,9 @@ sudo rpm -ivh /home/isula-build-*.rpm ``` -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > -> 安装完成后,需要手工启动isula-build服务。启动请参见[管理服务](isula-build构建工具.md#管理服务)。 +> 安装完成后,需要手工启动isula-build服务。启动请参见[管理服务](#管理服务)。 # 配置与管理服务 @@ -77,7 +77,7 @@ * /etc/isula-build/policy.json:镜像pull/push策略文件。当前不支持对其进行配置。 -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > > * isula-build 支持最大 1MiB 的上述配置文件。 > * isula-build 不支持将持久化工作目录 dataroot 配置在内存盘上,比如 tmpfs。 @@ -88,7 +88,7 @@ 目前 openEuler 采用 systemd 管理软件服务,isula-build 软件包已经自带了 systemd 的服务文件,用户安装完 isula-build 软件包之后,可以直接通过 systemd 工具对它进行服务启停等操作。用户同样可以手动启动 isula-build 服务端软件。需要注意的是,同一个节点上不可以同时启动多个 isula-build 服务端软件。 ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > 同一个节点上不可以同时启动多个 isula-build 服务端软件。 @@ -133,7 +133,7 @@ sudo systemctl daemon-reload * --group: 设置本地套接字isula_build.sock文件属组使得加入该组的非特权用户可以操作isula-build,默认为“isula”。 * --experimental: 是否开启实验特性,默认为false。 ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > 当命令行启动参数中传递了与配置文件相同的配置选项时,优先使用命令行参数启动。 @@ -159,7 +159,7 @@ sudo yum install -y docker-runc sudo yum install -y docker-engine ``` ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > 用户需保证OCI runtime(runc)可执行文件的安全性,避免被恶意替换。 @@ -183,7 +183,7 @@ isula-build 客户端提供了一系列命令用于构建和管理容器镜像 * version,查看isula-build和isula-builder的版本号。 * manifest(实验特性),管理manifest列表。 ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > * isula-build completion 和 isula-builder completion 命令用于生成bash命令补全脚本。该命令为命令行框架隐式提供,不会显示在help信息中。 > * isula-build客户端不包含配置文件,当用户需要使用isula-build实验特性时,需要在客户端通过命令`export ISULABUILD_CLI_EXPERIMENTAL=enabled`配置环境变量ISULABUILD_CLI_EXPERIMENTAL来开启实验特性。 @@ -362,7 +362,7 @@ isula-build ctr-img build --cap-add ${CAP} sudo isula-build ctr-img build --cap-add CAP_SYS_ADMIN --cap-add CAP_SYS_PTRACE -f Dockerfile ``` -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > > * isula-build最大支持并发构建100个容器镜像。 > * isula-build支持Dockerfile最大为1MiB。 @@ -394,7 +394,7 @@ localhost:5000/library/alpine latest a24bb4013296 2022-01 --------------------------------------- ----------- ----------------- ------------------------ ------------ ``` -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > > 通过`isula-build ctr-img images`查看的镜像大小与`docker images`的显示上有一定差异。这是因为统计镜像大小时,isula-build是直接计算每层tar包大小之和,而docker是通过解压tar遍历diff目录计算文件大小之和,因此存在统计上的差异。 @@ -426,7 +426,7 @@ mybusybox latest 173b3cf612f8 2022-01 --------------------------------------- ----------- ----------------- ------------------------ ------------ ``` ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > isula-build 支持导入最大1GiB的容器基础镜像。 @@ -469,7 +469,7 @@ Storing signatures Loaded image as c07ddb44daa97e9e8d2d68316b296cc9343ab5f3d2babc5e6e03b80cd580478e ``` ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > * isula-build 支持导入最大50G的容器层叠镜像。 > * isula-build 会自动识别容器层叠镜像的格式并进行导入。 @@ -555,7 +555,7 @@ Storing signatures Save success with image: [busybox:latest nginx:latest] ``` ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > * save 导出的镜像默认格式为未压缩的tar格式,如有需求,用户可以再save之后手动压缩。 > * 在使用镜像名导出镜像时,需要给出完整的镜像名格式:REPOSITORY:TAG。 @@ -631,7 +631,7 @@ Storing signatures Push success with image: example-registry/library/mybusybox:latest ``` ->![](./public_sys-resources/icon-note.gif) **说明:** +>[!NOTE]说明 > > 推送镜像时,需要先登录对应的镜像仓库 @@ -757,7 +757,7 @@ Server: ## manifest: manifest列表管理 manifest列表包含不同系统架构对应的镜像信息,通过使用manifest列表,用户可以在不同的架构中使用相同的manifest(例如openeuler:latest)获取对应架构的镜像,manifest包含create、annotate、inspect和push子命令。 -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > > manifest为实验特性,使用时需开启客户端和服务端的实验选项,方式详见客户端总体说明和配置服务章节。 @@ -875,7 +875,7 @@ REPOSITORY TAG IMAGE ID CREATED busybox 2.0 2d414a5cad6d 2020-08-01 06:41:36 5.577 MB ``` -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > > * 要求isula-build和iSulad在同一节点。 > * 直接导出镜像到iSulad时,isula-build client端需要将构建成功的镜像暂存成 `/var/lib/isula-build/tmp/[buildid]/isula-build-tmp-%v.tar` 再导入至 iSulad,用户需要保证 /var/lib/isula-build/tmp/ 目录有足够磁盘空间;同时如果在导出过程中 isula-build client进程被KILL或Ctrl+C终止,需要依赖用户手动清理 `/var/lib/isula-build/tmp/[buildid]/isula-build-tmp-%v.tar` 文件。 @@ -898,7 +898,7 @@ REPOSITORY TAG IMAGE ID busybox 2.0 2d414a5cad6d 2 months ago 5.22MB ``` -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > > 要求isula-build和Docker在同一节点。 @@ -931,4 +931,4 @@ busybox 2.0 2d414a5c 7. `ADD`命令不支持远端URL格式。 8. 暂不支持对单次构建进行资源限额,可采取对isula-builder配置资源限额的方式进行限制。 9. 统计镜像大小时,isula-build是直接计算每层tar包大小之和,而docker是通过解压tar遍历diff目录计算文件大小之和,因此通过`isula-build ctr-img images`查看的镜像大小与`docker images`的显示上有一定差异。 -10. 操作时的镜像名称需要明确,格式为IMAGE_NAME:IMAGE_TAG。例如 busybox:latest, 其中latest不可省略。 \ No newline at end of file +10. 操作时的镜像名称需要明确,格式为IMAGE_NAME:IMAGE_TAG。例如 busybox:latest, 其中latest不可省略。 diff --git "a/docs/zh/docs/Container/isula-build\351\231\204\345\275\225.md" b/docs/zh/docs/cloud/image_builder/isula-build/isula_build_appendix.md similarity index 100% rename from "docs/zh/docs/Container/isula-build\351\231\204\345\275\225.md" rename to docs/zh/docs/cloud/image_builder/isula-build/isula_build_appendix.md diff --git "a/docs/zh/docs/Container/isula-build\346\236\204\345\273\272\345\267\245\345\205\267.md" b/docs/zh/docs/cloud/image_builder/isula-build/overvew.md similarity index 94% rename from "docs/zh/docs/Container/isula-build\346\236\204\345\273\272\345\267\245\345\205\267.md" rename to docs/zh/docs/cloud/image_builder/isula-build/overvew.md index 682b7a3e6dc17e6f6818bb2224ff07f1c3c5448b..8301d42c65af9bac8ea82ae5a573831edb80d2b4 100644 --- "a/docs/zh/docs/Container/isula-build\346\236\204\345\273\272\345\267\245\345\205\267.md" +++ b/docs/zh/docs/cloud/image_builder/isula-build/overvew.md @@ -6,7 +6,6 @@ isula-build采用服务端/客户端模式,其中,isula-build为客户端, ![isula-build architecture](./figures/isula-build_arch.png) -> ![](./public_sys-resources/icon-note.gif) **说明:** +> [!NOTE]说明 > > isula-build当前支持OCI镜像格式([OCI Image Format Specification](https://github.com/opencontainers/image-spec/blob/main/spec.md/))以及Docker镜像格式([Image Manifest Version 2, Schema 2](https://docs.docker.com/registry/spec/manifest-v2-2/))。通过命令`export ISULABUILD_CLI_EXPERIMENTAL=enabled`开启实验特性以支持OCI镜像格式。不开启实验特性时,isula-build默认采用Docker镜像格式;当开启实验特性后,将默认采用OCI镜像格式。 - diff --git a/docs/zh/docs/cloud/kubeos/.DS_Store b/docs/zh/docs/cloud/kubeos/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..5008ddfcf53c02e82d7eee2e57c38e5672ef89f6 Binary files /dev/null and b/docs/zh/docs/cloud/kubeos/.DS_Store differ diff --git a/docs/zh/docs/cloud/kubeos/kubeos/_toc.yaml b/docs/zh/docs/cloud/kubeos/kubeos/_toc.yaml new file mode 100644 index 0000000000000000000000000000000000000000..1a6979dc0ffe805123535c3ebbd854659413bccf --- /dev/null +++ b/docs/zh/docs/cloud/kubeos/kubeos/_toc.yaml @@ -0,0 +1,14 @@ +label: 容器OS升级用户指南 +isManual: true +description: KubeOS是专为容器化业务涉及的轻量级操作系统,支持原子化升级,确保版本一致性,降低运维复杂性 +sections: + - label: 概述 + href: ./overview.md + - label: 认识容器OS升级 + href: ./about_kubeos.md + - label: 安装与部署 + href: ./installation_and_deployment.md + - label: 使用方法 + href: ./usage_instructions.md + - label: 容器OS镜像制作指导 + href: ./kubeos_image_creation.md diff --git "a/docs/zh/docs/KubeOS/\350\256\244\350\257\206\345\256\271\345\231\250OS\345\215\207\347\272\247.md" b/docs/zh/docs/cloud/kubeos/kubeos/about_kubos.md similarity index 98% rename from "docs/zh/docs/KubeOS/\350\256\244\350\257\206\345\256\271\345\231\250OS\345\215\207\347\272\247.md" rename to docs/zh/docs/cloud/kubeos/kubeos/about_kubos.md index 5a9622e00cb18bf512aa8e0db51a498ade99ea5a..f70e17fd3aa1cf96cb5c4715adeb6d29d8f2b047 100644 --- "a/docs/zh/docs/KubeOS/\350\256\244\350\257\206\345\256\271\345\231\250OS\345\215\207\347\272\247.md" +++ b/docs/zh/docs/cloud/kubeos/kubeos/about_kubos.md @@ -24,19 +24,16 @@ openEuler 容器 OS 升级工具通过 kubernetes operator 扩展机制控制容 - os-agent:接收来自 proxy 的信息,从 OSImage Server 下载用于更新的容器 OS 镜像,然后进行升级并重启节点。 - ### 容器 OS 文件系统 **图 2** 容器 OS 文件系统布局 ![](./figures/容器OS文件布局.png) - - 如图所示,容器 OS 包含四个分区: - boot 分区:grub2文件分区 - Persist 分区:用于存放持久性用户数据,容器 OS 升级时,该分区的数据也会保留。 - 两个 root 分区:容器 OS 采用双分区模式,将 root 分区划分为 rootA 和 rootB。假定初始化时,系统运行在 rootA 分区上,当进行系统更新时,会下载新系统到 rootB 分区,grub会有两个启动项分别为A,B,将 grub 默认启动项设置为B,最后会重启虚拟机。虚拟机启动后容器 OS 将运行在刚更新过的 rootB 分区上。 -容器OS的root文件系统为只读,用户的持久化数据存放在Persist持久化数据分区 。 \ No newline at end of file +容器OS的root文件系统为只读,用户的持久化数据存放在Persist持久化数据分区 。 diff --git "a/docs/zh/docs/KubeOS/figures/\345\256\271\345\231\250OS\346\226\207\344\273\266\345\270\203\345\261\200.png" "b/docs/zh/docs/cloud/kubeos/kubeos/figures/\345\256\271\345\231\250OS\346\226\207\344\273\266\345\270\203\345\261\200.png" similarity index 100% rename from "docs/zh/docs/KubeOS/figures/\345\256\271\345\231\250OS\346\226\207\344\273\266\345\270\203\345\261\200.png" rename to "docs/zh/docs/cloud/kubeos/kubeos/figures/\345\256\271\345\231\250OS\346\226\207\344\273\266\345\270\203\345\261\200.png" diff --git "a/docs/zh/docs/KubeOS/figures/\345\256\271\345\231\250OS\346\236\266\346\236\204.png" "b/docs/zh/docs/cloud/kubeos/kubeos/figures/\345\256\271\345\231\250OS\346\236\266\346\236\204.png" similarity index 100% rename from "docs/zh/docs/KubeOS/figures/\345\256\271\345\231\250OS\346\236\266\346\236\204.png" rename to "docs/zh/docs/cloud/kubeos/kubeos/figures/\345\256\271\345\231\250OS\346\236\266\346\236\204.png" diff --git "a/docs/zh/docs/KubeOS/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" b/docs/zh/docs/cloud/kubeos/kubeos/installation_and_deployment.md similarity index 68% rename from "docs/zh/docs/KubeOS/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" rename to docs/zh/docs/cloud/kubeos/kubeos/installation_and_deployment.md index e678699819a38166cc3e1508d19b3baa4f5930c0..5a5395936457c5327c5edf14e6a8eb4dee65f879 100644 --- "a/docs/zh/docs/KubeOS/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" +++ b/docs/zh/docs/cloud/kubeos/kubeos/installation_and_deployment.md @@ -2,27 +2,6 @@ 本章介绍如何安装和部署容器 OS 升级工具。 - - -- [安装与部署](#安装与部署) - - [软硬件要求](#软硬件要求) - - [硬件要求](#硬件要求) - - [软件要求](#软件要求) - - [环境准备](#环境准备) - - [安装容器OS升级工具](#安装容器os升级工具) - - [部署容器OS升级工具](#部署容器os升级工具) - - [制作os-operator和os-proxy镜像](#制作os-operator和os-proxy镜像) - - [环境准备](#环境准备-1) - - [操作步骤](#操作步骤) - - [制作容器OS虚拟机镜像](#制作容器os虚拟机镜像) - - [注意事项](#注意事项) - - [操作步骤](#操作步骤-1) - - [部署CRD,operator和proxy](#部署crdoperator和proxy) - - [注意事项](#注意事项-1) - - [操作步骤](#操作步骤-2) - - - ## 软硬件要求 ### 硬件要求 @@ -35,7 +14,7 @@ ### 环境准备 -* 安装 openEuler 系统,安装方法参考《[安装指南](../Installation/installation.md)》 +* 安装 openEuler 系统,安装方法参考《[安装指南](../../../Installation/installation.md)》 * 安装 qemu-img,bc,parted,tar,yum,docker,dosfstools ## 安装容器OS升级工具 @@ -44,7 +23,7 @@ 1. 配置 openEuler 24.03-LTS-SP1 yum 源: - ``` + ```sh [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/ @@ -59,7 +38,7 @@ yum install KubeOS KubeOS-scripts -y ``` -> ![](./public_sys-resources/icon-note.gif)**说明**: +> [!NOTE]说明 > > 容器 OS 升级工具会安装在 /opt/kubeOS 目录下,包括os-operator,os-proxy,os-agent二进制,制作容器 OS 工具及相应配置文件 。 @@ -95,11 +74,11 @@ 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中指定的字段相对应。 + * 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示例如下 @@ -140,7 +119,7 @@ #### 注意事项 -* 以虚拟机镜像为例,如需进行物理机的镜像制作请见《[容器OS镜像制作指导](./容器OS镜像制作指导.md)》。 +* 以虚拟机镜像为例,如需进行物理机的镜像制作请见《[容器OS镜像制作指导](./kubeos_image_creation.md)》。 * 制作容器OS 镜像需要使用 root 权限。 * 容器OS 镜像制作工具的 rpm 包源为 openEuler 具体版本的 everything 仓库和 EPOL 仓库。制作镜像时提供的 repo 文件中,yum 源建议同时配置 openEuler 具体版本的 everything 仓库和 EPOL 仓库。 * 使用默认 rpmlist 制作的容器OS虚拟机镜像,默认保存在调用`kbimg`路径下的`scripts-auto`文件夹内,该分区至少有 25GiB 的剩余磁盘空间。 @@ -148,7 +127,7 @@ #### 操作步骤 -制作容器OS 虚拟机镜像使用 kbimg,命令详情请见《[容器OS镜像制作指导](./容器OS镜像制作指导.md)》。 +制作容器OS 虚拟机镜像使用 kbimg,命令详情请见《[容器OS镜像制作指导](./kubeos_image_creation.md)》。 制作容器OS 虚拟机镜像的步骤如下: @@ -166,9 +145,9 @@ 容器 OS 镜像制作完成后,会在 /opt/kubeOS/scripts/scripts-auto 目录下生成: - - raw格式的系统镜像system.img,system.img大小默认为20G,支持的根文件系统分区大小<2560MiB,持久化分区<15GB。 - - qcow2 格式的系统镜像 system.qcow2。 - - 可用于升级的根文件系统 kubeos.tar。 + * raw格式的系统镜像system.img,system.img大小默认为20G,支持的根文件系统分区大小<2560MiB,持久化分区<15GB。 + * qcow2 格式的系统镜像 system.qcow2。 + * 可用于升级的根文件系统 kubeos.tar。 制作出来的容器 OS 虚拟机镜像目前只能用于 CPU 架构为 x86 和 AArch64 的虚拟机场景,不支持 x86 架构的虚拟机使用 legacy 启动模式启动。 @@ -176,12 +155,12 @@ #### 注意事项 -* 请先部署 Kubernetes 集群,部署方法参考[《openEuler 24.03-LTS-SP1 Kubernetes 集群部署指南》](../Kubernetes/Kubernetes.md)。 +* 请先部署 Kubernetes 集群,部署方法参考[《openEuler 24.03-LTS-SP1 Kubernetes 集群部署指南》](../../cluster_deployment/kubernetes/overview.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 配置等。 +* 集群中准备进行升级的 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 配置等。 #### 操作步骤 diff --git "a/docs/zh/docs/KubeOS/\345\256\271\345\231\250OS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274.md" b/docs/zh/docs/cloud/kubeos/kubeos/kubeos_image_creation.md similarity index 72% rename from "docs/zh/docs/KubeOS/\345\256\271\345\231\250OS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274.md" rename to docs/zh/docs/cloud/kubeos/kubeos/kubeos_image_creation.md index 332404fef063e87d16823181213fd80346b1dc48..9e8f38e21968e0e6436312b424172c511177e34a 100644 --- "a/docs/zh/docs/KubeOS/\345\256\271\345\231\250OS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274.md" +++ b/docs/zh/docs/cloud/kubeos/kubeos/kubeos_image_creation.md @@ -1,36 +1,5 @@ # 容器OS镜像制作指导 -- [容器OS镜像制作指导](#容器os镜像制作指导) - - [简介](#简介) - - [命令介绍](#命令介绍) - - [命令格式](#命令格式) - - [配置文件说明](#配置文件说明) - - [from\_repo](#from_repo) - - [admin\_container](#admin_container) - - [pxe\_config](#pxe_config) - - [users](#users) - - [copy\_files](#copy_files) - - [grub](#grub) - - [systemd\_service](#systemd_service) - - [chroot\_script](#chroot_script) - - [disk\_partition](#disk_partition) - - [persist\_mkdir](#persist_mkdir) - - [dm\_verity](#dm_verity) - - [使用说明](#使用说明) - - [注意事项](#注意事项) - - [KubeOS OCI 镜像制作](#kubeos-oci-镜像制作) - - [注意事项](#注意事项-1) - - [使用示例](#使用示例) - - [KubeOS 虚拟机镜像制作](#kubeos-虚拟机镜像制作) - - [注意事项](#注意事项-2) - - [使用示例](#使用示例-1) - - [KubeOS 物理机安装所需镜像及文件制作](#kubeos-物理机安装所需镜像及文件制作) - - [注意事项](#注意事项-3) - - [使用示例](#使用示例-2) - - [附录](#附录) - - [异常退出清理方法](#异常退出清理方法) - - [详细toml配置文件示例](#详细toml配置文件示例) - ## 简介 kbimg是KubeOS部署和升级所需的镜像制作工具,可以使用kbimg制作KubeOS docker,虚拟机和物理机镜像。 @@ -195,11 +164,11 @@ Options: * 不支持并发执行。如果使用脚本`&`连续执行可能会出现异常情况。制作过程中碰到异常掉电或中断后无法清理环境时,可参考[异常退出清理方法](#异常退出清理方法)清理后重新制作。 * 容器 OS 镜像制作工具的 rpm 包源为 openEuler 具体版本的 everything 仓库和 EPOL 仓库。制作镜像时提供的 repo 文件中,yum 源建议同时配置 openEuler 具体版本的 everything 仓库和 EPOL 仓库。 * dm-verity使用说明: - * 仅支持虚拟机场景,暂不支持物理机环境。 - * 不支持通过 HTTP/HTTPS 服务器下载升级镜像进行系统升级。仅支持从容器镜像仓库下载升级镜像进行升级。 - * 启动虚拟机时,必须配置使用 virtio 类型设备。 - * 启用dm-verity功能的升级容器镜像不可用于升级未开启dm-verity的容器OS。同理,未启动dm-verity功能的升级容器镜像不可用于升级开启dm-verity功能的容器OS。在集群内,部分节点开启dm-verity功能,部分未开启,需要用户控制下发对应的升级镜像。 - * 制作升级容器镜像和虚拟机镜像时,推荐使用相同的密钥(配置`keys_dir`为先前制作镜像时创建的密钥文件路径。配置`efi_key`或`grub_key`一致不能保证密钥文件是一模一样的)。若密钥不一致,在切换备用分区时可能导致证书校验失败,从而无法启动系统。出现证书校验失败问题时,需要重新导入备用分区证书进行修复。 + * 仅支持虚拟机场景,暂不支持物理机环境。 + * 不支持通过 HTTP/HTTPS 服务器下载升级镜像进行系统升级。仅支持从容器镜像仓库下载升级镜像进行升级。 + * 启动虚拟机时,必须配置使用 virtio 类型设备。 + * 启用dm-verity功能的升级容器镜像不可用于升级未开启dm-verity的容器OS。同理,未启动dm-verity功能的升级容器镜像不可用于升级开启dm-verity功能的容器OS。在集群内,部分节点开启dm-verity功能,部分未开启,需要用户控制下发对应的升级镜像。 + * 制作升级容器镜像和虚拟机镜像时,推荐使用相同的密钥(配置`keys_dir`为先前制作镜像时创建的密钥文件路径。配置`efi_key`或`grub_key`一致不能保证密钥文件是一模一样的)。若密钥不一致,在切换备用分区时可能导致证书校验失败,从而无法启动系统。出现证书校验失败问题时,需要重新导入备用分区证书进行修复。 ### KubeOS OCI 镜像制作 @@ -244,8 +213,8 @@ version = "v1" ``` * 结果说明 - * 制作完成后,通过`docker images`查看制作出来的KubeOS容器镜像 - * update-boot.img/update-root.img/update-hash.img: 仅在dm-verity模式下生成,可忽略。 + * 制作完成后,通过`docker images`查看制作出来的KubeOS容器镜像 + * update-boot.img/update-root.img/update-hash.img: 仅在dm-verity模式下生成,可忽略。 ### KubeOS 虚拟机镜像制作 @@ -292,17 +261,18 @@ version = "v1" * 结果说明 容器 OS 镜像制作完成后,会在 ./scripts-auto 目录下生成 - * system.qcow2: 用于启动虚拟机的qcow2 格式的系统镜像,大小默认为 20GiB,支持的根文件系统分区大小 < 2560 MiB,持久化分区 < 15GB 。 - * system.img: 用于启动虚拟机的img 格式的系统镜像,大小默认为 20GiB,支持的根文件系统分区大小 < 2560 MiB,持久化分区 < 15GB 。 - * kubeos.tar: 用于升级的根文件系统tar包。 - * update-boot.img/update-root.img/update-hash.img: 仅在dm-verity模式下生成,可忽略。 + + * system.qcow2: 用于启动虚拟机的qcow2 格式的系统镜像,大小默认为 20GiB,支持的根文件系统分区大小 < 2560 MiB,持久化分区 < 15GB。 + * system.img: 用于启动虚拟机的img 格式的系统镜像,大小默认为 20GiB,支持的根文件系统分区大小 < 2560 MiB,持久化分区 < 15GB。 + * kubeos.tar: 用于升级的根文件系统tar包。 + * update-boot.img/update-root.img/update-hash.img: 仅在dm-verity模式下生成,可忽略。 ### KubeOS 物理机安装所需镜像及文件制作 #### 注意事项 * 制作出来的容器 OS 物理安装所需的镜像目前只能用于 CPU 架构为 x86 和 AArch64 的物理机安装。 -* `pxe_config`配置中指定的ip为安装时使用的临时ip,请在系统安装启动后请参考[《openEuler 24.03-LTS-SP1 管理员指南-配置网络》](../Administration/配置网络.md)进行网络配置。 +* `pxe_config`配置中指定的ip为安装时使用的临时ip,请在系统安装启动后请参考[《openEuler 24.03-LTS-SP1 管理员指南-配置网络》](../../../Administration/配置网络.md)进行网络配置。 * 不支持多个磁盘都安装KubeOS,可能会造成启动失败或挂载紊乱。 * 容器OS 目前不支持 x86 架构的物理机使用 legacy 启动模式启动。 * 使用默认rpmlist进行镜像制作时所需磁盘空间至少为5G,如自已定义 rpmlist 可能会超过5G。 @@ -390,49 +360,49 @@ version = "v1" ``` * 结果说明 - * initramfs.img: 用于pxe启动用的 initramfs 镜像 - * kubeos.tar: pxe安装所用的根分区文件系统 + * initramfs.img: 用于pxe启动用的 initramfs 镜像 + * kubeos.tar: pxe安装所用的根分区文件系统 ## 附录 ### 异常退出清理方法 -1. 若在使用`kbimg`制作镜像过程中,异常退出,无法清理环境,可使用如下方法进行清理: - -```bash -function unmount_dir() { - local dir=$1 - if [ -L "${dir}" ] || [ -f "${dir}" ]; then - echo "${dir} is not a directory, please check it." - return 1 - fi - if [ ! -d "${dir}" ]; then +1.若在使用`kbimg`制作镜像过程中,异常退出,无法清理环境,可使用如下方法进行清理: + + ```bash + function unmount_dir() { + local dir=$1 + if [ -L "${dir}" ] || [ -f "${dir}" ]; then + echo "${dir} is not a directory, please check it." + return 1 + fi + if [ ! -d "${dir}" ]; then + return 0 + fi + local real_dir=$(readlink -e "${dir}") + local mnts=$(awk '{print $2}' < /proc/mounts | grep "^${real_dir}" | sort -r) + for m in ${mnts}; do + echo "Unmount ${m}" + umount -f "${m}" || true + done return 0 - fi - local real_dir=$(readlink -e "${dir}") - local mnts=$(awk '{print $2}' < /proc/mounts | grep "^${real_dir}" | sort -r) - for m in ${mnts}; do - echo "Unmount ${m}" - umount -f "${m}" || true - done - return 0 -} -ls -l ./scripts-auto/test.lock && rm -rf ./scripts-auto/test.lock -unmount_dir ./scripts-auto/rootfs/proc -unmount_dir ./scripts-auto/rootfs/sys -unmount_dir ./scripts-auto/rootfs/dev/pts -unmount_dir ./scripts-auto/rootfs/dev -unmount_dir ./scripts-auto/mnt/boot/grub2 -unmount_dir ./scripts-auto/mnt -rm -rf ./scripts-auto/rootfs ./scripts-auto/mnt -``` + } + ls -l ./scripts-auto/test.lock && rm -rf ./scripts-auto/test.lock + unmount_dir ./scripts-auto/rootfs/proc + unmount_dir ./scripts-auto/rootfs/sys + unmount_dir ./scripts-auto/rootfs/dev/pts + unmount_dir ./scripts-auto/rootfs/dev + unmount_dir ./scripts-auto/mnt/boot/grub2 + unmount_dir ./scripts-auto/mnt + rm -rf ./scripts-auto/rootfs ./scripts-auto/mnt + ``` -2. 如果执行以上命令仍然无法删除目录,可尝试先调用如下命令,再重新执行第一步的命令。 +2.如果执行以上命令仍然无法删除目录,可尝试先调用如下命令,再重新执行第一步的命令。 -```bash -fuser -kvm ./scripts-auto/rootfs -fuser -kvm ./scripts-auto/mnt -``` + ```bash + fuser -kvm ./scripts-auto/rootfs + fuser -kvm ./scripts-auto/mnt + ``` ### 详细toml配置文件示例 diff --git a/docs/zh/docs/KubeOS/overview.md b/docs/zh/docs/cloud/kubeos/kubeos/overview.md similarity index 100% rename from docs/zh/docs/KubeOS/overview.md rename to docs/zh/docs/cloud/kubeos/kubeos/overview.md diff --git "a/docs/zh/docs/KubeOS/\344\275\277\347\224\250\346\226\271\346\263\225.md" b/docs/zh/docs/cloud/kubeos/kubeos/usage_instructions.md similarity index 54% rename from "docs/zh/docs/KubeOS/\344\275\277\347\224\250\346\226\271\346\263\225.md" rename to docs/zh/docs/cloud/kubeos/kubeos/usage_instructions.md index 6c143abdaf0eb8958a370fef16bbcd882a0f7581..1d95780b6ca5eb031443166bc222e2b166419c79 100644 --- "a/docs/zh/docs/KubeOS/\344\275\277\347\224\250\346\226\271\346\263\225.md" +++ b/docs/zh/docs/cloud/kubeos/kubeos/usage_instructions.md @@ -1,57 +1,37 @@ # 使用方法 - - -- [使用方法](#使用方法) - - [注意事项](#注意事项) - - [OS CR参数说明](#os-cr参数说明) - - [升级指导](#升级指导) - - [配置(Settings)指导](#配置settings指导) - - [回退指导](#回退指导) - - [使用场景](#使用场景) - - [手动回退指导](#手动回退指导) - - [工具回退指导](#工具回退指导) - - [附录](#附录) - - [Setting 列表](#setting-列表) - - [kernel Settings](#kernel-settings) - - [Grub Settings](#grub-settings) - - [kubelet配置](#kubelet配置) - - [containerd配置](#containerd配置) - - [Pam Limits配置](#pam-limits配置) - - ## 注意事项 * 公共注意事项 - * 仅支持虚拟机和物理机x86和arm64 UEFI场景。 - * 使用kubectl apply通过YAML创建或更新OS的CR时,不建议并发apply,当并发请求过多时,kube-apiserver会无法处理请求导致失败。 - * 如用户配置了容器镜像仓的证书或密钥,请用户保证证书或密钥文件的权限最小。 + * 仅支持虚拟机和物理机x86和arm64 UEFI场景。 + * 使用kubectl apply通过YAML创建或更新OS的CR时,不建议并发apply,当并发请求过多时,kube-apiserver会无法处理请求导致失败。 + * 如用户配置了容器镜像仓的证书或密钥,请用户保证证书或密钥文件的权限最小。 * 升级注意事项 - * 升级为所有软件包原子升级,默认不提供单包升级能力。 - * 升级为双区升级的方式,不支持更多分区数量。 - * 当前暂不支持跨大版本升级。 - * 单节点的升级过程的日志可在节点的 /var/log/messages 文件查看。 - * 请严格按照提供的升级和回退流程进行操作,异常调用顺序可能会导致系统无法升级或回退。 - * 节点上containerd如需配置ctr使用的私有镜像,请将配置文件host.toml按照ctr指导放在/etc/containerd/certs.d目录下。 - * 使用OCI 镜像升级和mtls双向认证仅支持 openEuler 22.09 及之后的版本。 - * nodeselector、executionmode、timewindow和timeinterval 仅支持openEuler 24.09及之后版本。 - * KubeOS 24.03-LTS-SP1 版本与历史版本不兼容。 - * 使用从http/https服务器下载升级镜像功能需要同步使用对应版本镜像制作工具。 + * 升级为所有软件包原子升级,默认不提供单包升级能力。 + * 升级为双区升级的方式,不支持更多分区数量。 + * 当前暂不支持跨大版本升级。 + * 单节点的升级过程的日志可在节点的 /var/log/messages 文件查看。 + * 请严格按照提供的升级和回退流程进行操作,异常调用顺序可能会导致系统无法升级或回退。 + * 节点上containerd如需配置ctr使用的私有镜像,请将配置文件host.toml按照ctr指导放在/etc/containerd/certs.d目录下。 + * 使用OCI 镜像升级和mtls双向认证仅支持 openEuler 22.09 及之后的版本。 + * nodeselector、executionmode、timewindow和timeinterval 仅支持openEuler 24.09及之后版本。 + * KubeOS 24.03-LTS-SP1 版本与历史版本不兼容。 + * 使用从http/https服务器下载升级镜像功能需要同步使用对应版本镜像制作工具。 * 配置注意事项 - * 用户自行指定配置内容,用户需保证配置内容安全可靠 ,尤其是持久化配置(kernel.sysctl.persist、grub.cmdline.current、grub.cmdline.next、kubernetes.kubelet、container.containerd、pam.limits),KubeOS不对参数有效性进行检验。 - * opstype=config时,若osversion与当前集群节点的OS版本不一致,配置不会进行。 - * 当前仅支持kernel参数临时配置(kernel.sysctl)、持久化配置(kernel.sysctl.persist)和grub cmdline配置(grub.cmdline.current和grub.cmdline.next)、kubelet配置(kubernetes.kubelet)、containerd配置(container.containerd)和pam limits配置(pam.limits)。 - * 持久化配置会写入persist持久化分区,升级重启后配置保留;kernel参数临时配置重启后不保留。 - * 配置grub.cmdline.current或grub.cmdline.next时,如为单个参数(非key=value格式参数),请指定key为该参数,value为空。 - * 进行配置删除(operation=delete)时,key=value形式的配置需保证key、value和实际配置一致。 - * 配置不支持回退,如需回退,请修改配置版本和配置内容,重新下发配置。 - * 配置出现错误,节点状态陷入config时,请将配置版本恢复成上一版本并重新下发配置,从而使节点恢复至idle状态。 但是请注意:出现错误前已经配置完成的参数无法恢复。 - * 在配置grub.cmdline.current或grub.cmdline.next时,若需要将已存在的“key=value”格式的参数更新为只有key无value格式,比如将“rd.info=0”更新成rd.info,需要先删除“key=value”,然后在下一次配置时,添加key。不支持直接更新或者更新删除动作在同一次完成。 + * 用户自行指定配置内容,用户需保证配置内容安全可靠 ,尤其是持久化配置(kernel.sysctl.persist、grub.cmdline.current、grub.cmdline.next、kubernetes.kubelet、container.containerd、pam.limits),KubeOS不对参数有效性进行检验。 + * opstype=config时,若osversion与当前集群节点的OS版本不一致,配置不会进行。 + * 当前仅支持kernel参数临时配置(kernel.sysctl)、持久化配置(kernel.sysctl.persist)和grub cmdline配置(grub.cmdline.current和grub.cmdline.next)、kubelet配置(kubernetes.kubelet)、containerd配置(container.containerd)和pam limits配置(pam.limits)。 + * 持久化配置会写入persist持久化分区,升级重启后配置保留;kernel参数临时配置重启后不保留。 + * 配置grub.cmdline.current或grub.cmdline.next时,如为单个参数(非key=value格式参数),请指定key为该参数,value为空。 + * 进行配置删除(operation=delete)时,key=value形式的配置需保证key、value和实际配置一致。 + * 配置不支持回退,如需回退,请修改配置版本和配置内容,重新下发配置。 + * 配置出现错误,节点状态陷入config时,请将配置版本恢复成上一版本并重新下发配置,从而使节点恢复至idle状态。 但是请注意:出现错误前已经配置完成的参数无法恢复。 + * 在配置grub.cmdline.current或grub.cmdline.next时,若需要将已存在的“key=value”格式的参数更新为只有key无value格式,比如将“rd.info=0”更新成rd.info,需要先删除“key=value”,然后在下一次配置时,添加key。不支持直接更新或者更新删除动作在同一次完成。 ## OS CR参数说明 -在集群中创建类别为OS的定制对象,设置相应字段。类别OS来自于[安装和部署章节](./安装与部署.md)创建的CRD对象,字段及说明如下: +在集群中创建类别为OS的定制对象,设置相应字段。类别OS来自于[安装和部署章节](./installation_and_deployment.md)创建的CRD对象,字段及说明如下: * imageurl指定的地址里包含协议,只支持http或https协议。imageurl为https协议时为安全传输,imageurl为http地址时,需指定flagSafe为true,即用户明确该地址为安全时,才会下载镜像。如imageurl为http地址且没有指定flagSafe为true,默认该地址不安全,不会下载镜像并且在升级节点的日志中提示用户该地址不安全。 * 对于imageurl,推荐使用https协议,使用https协议需要升级的机器已安装相应证书。如果镜像服务器由用户自己维护,需要用户自己进行签名,并保证升级节点已安装对应证书。用户需要将证书放在容器OS```/etc/KubeOS/certs```目录下。地址由管理员传入,管理员应该保证网址的安全性,推荐采用内网地址。 @@ -60,11 +40,11 @@ * 当有OS的nodeselector为all-label时,集群只能存在这一个OS的有效实例(有效实例为存在与这个OS对应的节点)。 * nodeselector不配置的OS也只能有一个,因为nodeselector不配置时认为是对没有label的节点进行操作。 * timewinterval参数说明: - * 参数不设置时默认为15s。 - * 参数设置为0时,由于k8s controller-runtime的rate limit限制,operator下发任务的时间间隔会逐渐增加直至1000s。 - * 并行时为每批次operator下发升级/配置的时间间隔。 - * 在串行时为每批次节点串行升级完毕后与下次升级/配置下发的时间间隔,批次内部的时间间隔为15s。 - * OS的实例字段进行更新会立刻触发operator。 + * 参数不设置时默认为15s。 + * 参数设置为0时,由于k8s controller-runtime的rate limit限制,operator下发任务的时间间隔会逐渐增加直至1000s。 + * 并行时为每批次operator下发升级/配置的时间间隔。 + * 在串行时为每批次节点串行升级完毕后与下次升级/配置下发的时间间隔,批次内部的时间间隔为15s。 + * OS的实例字段进行更新会立刻触发operator。 | 参数 |参数类型 | 参数说明 | 使用说明 | 是否必选 | | -------------- | ------ | ------------------------------------------------------------ | ----- | ---------------- | @@ -84,14 +64,15 @@ | sysconfigs | / | 配置设置 | 1. “opstype=config”时只进行配置。
2.“opstype=upgrade/rollback”时,代表升级/回退后配置,即在升级/回退重启后进行配置,详细字段说明请见[配置(Settings)指导](#配置settings指导) | “opstype=config”时必选 | | upgradeconfigs | / | 升级前配置设置 | 在升级或者回退时有效,在升级或者回退操作之前起效,详细字段说明请见[配置(Settings)指导](#配置settings指导)| 可选 | | nodeselector | string | 需要进行升级/配置/回滚操作的节点label | 用于只对具有某些特定label的节点而不是集群所有worker节点进行运维的场景,需要进行运维操作的节点需要包含key为upgrade.openeuler.org/node-selector的label,nodeselector为该label的value值。
注意事项:
1.此参数不配置时,或者配置为“no-label”时对没有upgrade.openeuler.org/node-selector的节点进行操作
2.此参数为“”时,对具有upgrade.openeuler.org/node-selector=“”的节点进行操作
3.如需忽略label,对所有节点进行操作,需指定此参数为all-label| 可选 | - | timewindow | / | 升级/配置/回滚操作的时间窗口 |1.指定时间窗口时starttime和endtime都需指定,即二者需要同时为空或者同时不为空
2.starttime和endtime类型为string,需要为YYYY-MM-DD HH:MM:SS格式或者HH:MM:SS格式,且二者格式需一致
3.为HH:MM:SS格式时,starttime < endtime认为starttime是下一天的该时间
4.timewindow不配置时默认为不存在时间窗限制| 可选 | + | timewindow | / | 升级/配置/回滚操作的时间窗口 |1.指定时间窗口时starttime和endtime都需指定,即二者需要同时为空或者同时不为空
2.starttime和endtime类型为string,需要为YYYY-MM-DD HH:MM:SS格式或者HH:MM:SS格式,且二者格式需一致
3.为HH:MM:SS格式时,starttime 小于endtime认为starttime是下一天的该时间
4.timewindow不配置时默认为不存在时间窗限制| 可选 | | timeinterval | int | 升级/配置/回滚操作每批次任务下发的时间间隔 |参数单位为秒,时间间隔为operator下发任务的时间间隔,如k8s集群繁忙无法立即响应operator请求,实际时间间隔可能会大于指定时间| 可选 | | executionmode | string | 升级/配置/回滚操作执行的方式 |仅支持serial或者parallel,即串行或者并行,当次参数不设置时,默认采用并行的方式| 可选 | ## 升级指导 -1.编写YAML文件,在集群中部署 OS 的cr实例,用于部署cr实例的YAML示例如下,假定将上面的YAML保存到upgrade_v1alpha1_os.yaml; - * 使用磁盘镜像进行升级 +1. 编写YAML文件,在集群中部署 OS 的cr实例,用于部署cr实例的YAML示例如下,假定将上面的YAML保存到upgrade_v1alpha1_os.yaml; + + * 使用磁盘镜像进行升级 ```yaml apiVersion: upgrade.openeuler.org/v1alpha1 @@ -114,152 +95,160 @@ clientkey: client certificate key ``` - * 使用容器镜像进行升级 - * 使用容器镜像进行升级前请先制作升级所需的容器镜像,制作方式请见[《容器OS镜像制作指导》](./容器OS镜像制作指导.md)中 [KubeOS OCI 镜像制作](./容器OS镜像制作指导.md#kubeos-oci-镜像制作)。 - * 节点容器引擎为docker + * 使用容器镜像进行升级 - ``` yaml - 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 - containerimage: container image like repository/name:tag - evictpodforce: true/false - imageurl: "" - checksum: container image digests - flagSafe: false - mtls: true - ``` + * 使用容器镜像进行升级前请先制作升级所需的容器镜像,制作方式请见[《容器OS镜像制作指导》](./kubeos_image_creation.md)中 [KubeOS OCI 镜像制作](./kubeos_image_creation.md#kubeos-oci-镜像制作)。 - * 节点容器引擎为containerd + * 节点容器引擎为docker - ```yaml - apiVersion: upgrade.openeuler.org/v1alpha1 - kind: OS - metadata: - name: os-sample - spec: - imagetype: containerd - opstype: upgrade - osversion: edit.os.version - maxunavailable: edit.node.upgrade.number - containerimage: container image like repository/name:tag - evictpodforce: true/false - imageurl: "" - checksum: container image digests - flagSafe: false - mtls: true - ``` + ``` yaml + 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 + containerimage: container image like repository/name:tag + evictpodforce: true/false + imageurl: "" + checksum: container image digests + flagSafe: false + mtls: true + ``` - * 升级并且进行配置的示例如下: - * 以节点容器引擎为containerd为例,升级方式对配置无影响,upgradeconfigs在升级前起效,sysconfigs在升级后起效,配置参数说明请见[配置(Settings)指导](#配置settings指导)。 - * 升级并且配置时opstype字段需为upgrade。 - * upgradeconfig为升级之前执行的配置,sysconfigs为升级机器重启后执行的配置,用户可按需进行配置。 + * 节点容器引擎为containerd ```yaml apiVersion: upgrade.openeuler.org/v1alpha1 kind: OS metadata: - name: os-sample + name: os-sample spec: - imagetype: "" - opstype: upgrade - osversion: edit.os.version - maxunavailable: edit.node.upgrade.number - containerimage: "" - evictpodforce: true/false - imageurl: "" - checksum: container image digests - flagSafe: false - mtls: false - sysconfigs: - version: edit.os.version - configs: - - model: kernel.sysctl - contents: - - key: kernel param key1 - value: kernel param value1 - - key: kernel param key2 - value: kernel param value2 - - model: kernel.sysctl.persist - configpath: persist file path - contents: - - key: kernel param key3 - value: kernel param value3 - - key: "" - value: "" - upgradeconfigs: - version: 1.0.0 - configs: - - model: kernel.sysctl - contents: - - key: kernel param key4 - value: kernel param value4 + imagetype: containerd + opstype: upgrade + osversion: edit.os.version + maxunavailable: edit.node.upgrade.number + containerimage: container image like repository/name:tag + evictpodforce: true/false + imageurl: "" + checksum: container image digests + flagSafe: false + mtls: true ``` - * 设置nodeselector、timewindow、timeinterval、executionmode升级部分节点示例如下: - * 以节点容器引擎为containerd为例,升级方式对节点筛选无影响。 - * 需要进行升级的节点需包含key为`upgrade.openeuler.org/node-selector`的label,nodeselector的值为该label的value,即假定nodeselector值为kubeos,则只对包含`upgrade.openeuler.org/node-selector=kubeos`的label的worker节点进行升级。 - * nodeselector、timewindow、timeinterval、executionmode对配置和回滚同样有效。 - * 节点添加label、修改label、删除label和查看label命令示例如下: - ``` shell - # 为节点kubeos-node1增加label - kubectl label nodes kubeos-node1 upgrade.openeuler.org/node-selector=kubeos-v1 - # 修改节点kubeos-node1的label - kubectl label --overwrite nodes kubeos-node1 upgrade.openeuler.org/node-selector=kubeos-v2 - # 删除节点kubeos-node1的label - kubectl label nodes kubeos-node1 upgrade.openeuler.org/node-selector- - # 查看节点的label - kubectl get nodes --show-labels - ``` - * yaml示例如下: - ```yaml - apiVersion: upgrade.openeuler.org/v1alpha1 - kind: OS - metadata: - name: os-sample - spec: - imagetype: containerd - opstype: upgrade - osversion: edit.os.version - maxunavailable: edit.node.upgrade.number - containerimage: container image like repository/name:tag - evictpodforce: true/false - imageurl: "" - checksum: container image digests - flagSafe: false - mtls: true - nodeselector: edit.node.label.key - timewindow: - starttime: "HH::MM::SS/YYYY-MM-DD HH::MM::SS" - endtime: "HH::MM::SS/YYYY-MM-DD HH::MM::SS" - timeinterval: time intervel like 30 - executionmode: serial/parallel - ``` -2. 查看未升级的节点的 OS 版本。 + * 升级并且进行配置的示例如下: + + * 以节点容器引擎为containerd为例,升级方式对配置无影响,upgradeconfigs在升级前起效,sysconfigs在升级后起效,配置参数说明请见[配置(Settings)指导](#配置settings指导)。 + * 升级并且配置时opstype字段需为upgrade。 + * upgradeconfig为升级之前执行的配置,sysconfigs为升级机器重启后执行的配置,用户可按需进行配置。 + + ```yaml + apiVersion: upgrade.openeuler.org/v1alpha1 + kind: OS + metadata: + name: os-sample + spec: + imagetype: "" + opstype: upgrade + osversion: edit.os.version + maxunavailable: edit.node.upgrade.number + containerimage: "" + evictpodforce: true/false + imageurl: "" + checksum: container image digests + flagSafe: false + mtls: false + sysconfigs: + version: edit.os.version + configs: + - model: kernel.sysctl + contents: + - key: kernel param key1 + value: kernel param value1 + - key: kernel param key2 + value: kernel param value2 + - model: kernel.sysctl.persist + configpath: persist file path + contents: + - key: kernel param key3 + value: kernel param value3 + - key: "" + value: "" + upgradeconfigs: + version: 1.0.0 + configs: + - model: kernel.sysctl + contents: + - key: kernel param key4 + value: kernel param value4 + ``` + + * 设置nodeselector、timewindow、timeinterval、executionmode升级部分节点示例如下: + + * 以节点容器引擎为containerd为例,升级方式对节点筛选无影响。 + * 需要进行升级的节点需包含key为`upgrade.openeuler.org/node-selector`的label,nodeselector的值为该label的value,即假定nodeselector值为kubeos,则只对包含`upgrade.openeuler.org/node-selector=kubeos`的label的worker节点进行升级。 + * nodeselector、timewindow、timeinterval、executionmode对配置和回滚同样有效。 + * 节点添加label、修改label、删除label和查看label命令示例如下: + + ```shell + # 为节点kubeos-node1增加label + kubectl label nodes kubeos-node1 upgrade.openeuler.org/node-selector=kubeos-v1 + # 修改节点kubeos-node1的label + kubectl label --overwrite nodes kubeos-node1 upgrade.openeuler.org/node-selector=kubeos-v2 + # 删除节点kubeos-node1的label + kubectl label nodes kubeos-node1 upgrade.openeuler.org/node-selector- + # 查看节点的label + kubectl get nodes --show-labels + ``` + + * yaml示例如下: + + ```yaml + apiVersion: upgrade.openeuler.org/v1alpha1 + kind: OS + metadata: + name: os-sample + spec: + imagetype: containerd + opstype: upgrade + osversion: edit.os.version + maxunavailable: edit.node.upgrade.number + containerimage: container image like repository/name:tag + evictpodforce: true/false + imageurl: "" + checksum: container image digests + flagSafe: false + mtls: true + nodeselector: edit.node.label.key + timewindow: + starttime: "HH::MM::SS/YYYY-MM-DD HH::MM::SS" + endtime: "HH::MM::SS/YYYY-MM-DD HH::MM::SS" + timeinterval: time intervel like 30 + executionmode: serial/parallel + ``` + +2.查看未升级的节点的 OS 版本。 - ```shell - kubectl get nodes -o custom-columns='NAME:.metadata.name,OS:.status.nodeInfo.osImage' - ``` + ```shell + kubectl get nodes -o custom-columns='NAME:.metadata.name,OS:.status.nodeInfo.osImage' + ``` -3. 执行命令,在集群中部署cr实例后,节点会根据配置的参数信息进行升级。 +3.执行命令,在集群中部署cr实例后,节点会根据配置的参数信息进行升级。 - ```shell - kubectl apply -f upgrade_v1alpha1_os.yaml - ``` + ```shell + kubectl apply -f upgrade_v1alpha1_os.yaml + ``` -4. 再次查看节点的 OS 版本来确认节点是否升级完成。 +4.再次查看节点的 OS 版本来确认节点是否升级完成。 - ```shell - kubectl get nodes -o custom-columns='NAME:.metadata.name,OS:.status.nodeInfo.osImage' - ``` + ```shell + kubectl get nodes -o custom-columns='NAME:.metadata.name,OS:.status.nodeInfo.osImage' + ``` -> ![](./public_sys-resources/icon-note.gif)**说明**: +> [!NOTE]说明 > > 如果后续需要再次升级,与上面相同对 upgrade_v1alpha1_os.yaml 的 相应字段进行相应修改。 @@ -328,26 +317,26 @@ | value | string | 参数值 | key=value形式的参数中,value不能为空,不建议配置含空格、tab键的字符串,具体请看附录下的[Settings列表](#setting-列表)中对每种配置类型对value的说明。 | key=value形式的参数必选 | | operation | string | 对参数进行的操作 | 仅对kernel.sysctl.persist、grub.cmdline.current、grub.cmdline.next类型的参数生效。默认为添加或更新。仅支持配置为delete,代表删除已存在的参数(key=value需完全一致才能删除)。 | 否 | - * upgradeconfigs与sysconfigs参数相同,upgradeconfigs为升级/回退前进行的配置,仅在upgrade/rollback场景起效,sysconfigs既支持只进行配置,也支持在升级/回退重启后进行配置。 + * upgradeconfigs与sysconfigs参数相同,upgradeconfigs为升级/回退前进行的配置,仅在upgrade/rollback场景起效,sysconfigs既支持只进行配置,也支持在升级/回退重启后进行配置。 * 使用说明 - * 编写YAML文件,在集群中部署 OS 的cr实例,用于部署cr实例的YAML示例如上,假定将上面的YAML保存到upgrade_v1alpha1_os.yaml。 + * 编写YAML文件,在集群中部署 OS 的cr实例,用于部署cr实例的YAML示例如上,假定将上面的YAML保存到upgrade_v1alpha1_os.yaml。 - * 查看配置之前的节点的配置的版本和节点状态(NODESTATUS状态为idle)。 + * 查看配置之前的节点的配置的版本和节点状态(NODESTATUS状态为idle)。 ```shell kubectl get osinstances -o custom-columns='NAME:.metadata.name,NODESTATUS:.spec.nodestatus,SYSCONFIG:status.sysconfigs.version,UPGRADECONFIG:status.upgradeconfigs.version' ``` - * 执行命令,在集群中部署cr实例后,节点会根据配置的参数信息进行配置,再次查看节点状态(NODESTATUS变成config)。 + * 执行命令,在集群中部署cr实例后,节点会根据配置的参数信息进行配置,再次查看节点状态(NODESTATUS变成config)。 ```shell kubectl apply -f upgrade_v1alpha1_os.yaml kubectl get osinstances -o custom-columns='NAME:.metadata.name,NODESTATUS:.spec.nodestatus,SYSCONFIG:status.sysconfigs.version,UPGRADECONFIG:status.upgradeconfigs.version' ``` - * 再次查看节点的配置的版本确认节点是否配置完成(NODESTATUS恢复为idle)。 + * 再次查看节点的配置的版本确认节点是否配置完成(NODESTATUS恢复为idle)。 ```shell kubectl get osinstances -o custom-columns='NAME:.metadata.name,NODESTATUS:.spec.nodestatus,SYSCONFIG:status.sysconfigs.version,UPGRADECONFIG:status.upgradeconfigs.version' @@ -362,8 +351,9 @@ * 虚拟机无法正常启动时,可在grub启动项页面手动切换启动项,使系统回退至上一版本(即手动回退)。 * 虚拟机能够正常启动并且进入系统时,支持工具回退和手动回退,建议使用工具回退。 * 工具回退有两种方式: - 1. rollback模式直接回退至上一版本。 - 2. upgrade模式重新升级至上一版本。 + + 1. rollback模式直接回退至上一版本。 + 2. upgrade模式重新升级至上一版本。 ### 手动回退指导 @@ -372,16 +362,18 @@ ### 工具回退指导 * 回退至任意版本 - 1. 修改 OS 的cr实例的YAML 配置文件(例如 upgrade_v1alpha1_os.yaml),设置相应字段为期望回退的老版本镜像信息。类别OS来自于安装和部署章节创建的CRD对象,字段说明及示例请见上一节升级指导。 - 2. YAML修改完成后执行更新命令,在集群中更新定制对象后,节点会根据配置的字段信息进行回退 + 1. 修改 OS 的cr实例的YAML 配置文件(例如 upgrade_v1alpha1_os.yaml),设置相应字段为期望回退的老版本镜像信息。类别OS来自于安装和部署章节创建的CRD对象,字段说明及示例请见上一节升级指导。 - ```shell - kubectl apply -f upgrade_v1alpha1_os.yaml - ``` + 2. YAML修改完成后执行更新命令,在集群中更新定制对象后,节点会根据配置的字段信息进行回退 + + ```shell + kubectl apply -f upgrade_v1alpha1_os.yaml + ``` * 回退至上一版本 - * OS回退至上一版本:修改upgrade_v1alpha1_os.yaml,设置osversion为上一版本,opstype为rollback,回退至上一版本(即切换至上一分区)。YAML示例如下: + + * OS回退至上一版本:修改upgrade_v1alpha1_os.yaml,设置osversion为上一版本,opstype为rollback,回退至上一版本(即切换至上一分区)。YAML示例如下: ```yaml apiVersion: upgrade.openeuler.org/v1alpha1 @@ -391,7 +383,7 @@ spec: imagetype: "" opstype: rollback - osversion: KubeOS pervious version + osversion: KubeOS previous version maxunavailable: 2 containerimage: "" evictpodforce: true/false @@ -401,7 +393,7 @@ mtls: true ``` - * 配置回退至上一版本:修改upgrade_v1alpha1_os.yaml,设置sysconfigs/upgradeconfigs的version为上一版本,回退至上一版本(已配置的参数无法回退)。YAML示例如下: + * 配置回退至上一版本:修改upgrade_v1alpha1_os.yaml,设置sysconfigs/upgradeconfigs的version为上一版本,回退至上一版本(已配置的参数无法回退)。YAML示例如下: ```yaml apiVersion: upgrade.openeuler.org/v1alpha1 @@ -454,7 +446,7 @@ #### kernel Settings -* kenerl.sysctl:临时设置内核参数,重启后无效,key/value 表示内核参数的 key/value, key与value均不能为空且key不能包含“=”,该参数不支持删除操作(operation=delete)示例如下: +* kernel.sysctl:临时设置内核参数,重启后无效,key/value 表示内核参数的 key/value, key与value均不能为空且key不能包含“=”,该参数不支持删除操作(operation=delete)示例如下: ```yaml configs: @@ -468,6 +460,7 @@ ``` * kernel.sysctl.persist: 设置持久化内核参数,key/value表示内核参数的key/value,key与value均不能为空且key不能包含“=”, configpath为配置文件路径,支持新建(需保证父目录存在),如不指定configpath默认修改/etc/sysctl.conf,示例如下: + ```yaml configs: - model: kernel.sysctl.persist @@ -487,17 +480,17 @@ ```shell linux /boot/vmlinuz root=/dev/sda2 ro rootfstype=ext4 nomodeset quiet oops=panic softlockup_panic=1 nmi_watchdog=1 rd.shell=0 selinux=0 crashkernel=256M panic=3 ``` - - * 在dm-verity模式下,grub.cmdline配置下发无效。 - * KubeOS使用双分区,grub.cmdline.current/next支持对当前分区或下一分区进行配置: + * 在dm-verity模式下,grub.cmdline配置下发无效。 + + * KubeOS使用双分区,grub.cmdline.current/next支持对当前分区或下一分区进行配置: - * grub.cmdline.current:对当前分区的启动项参数进行配置。 - * grub.cmdline.next:对下一分区的启动项参数进行配置。 + * grub.cmdline.current:对当前分区的启动项参数进行配置。 + * grub.cmdline.next:对下一分区的启动项参数进行配置。 - * 注意:升级/回退前后的配置,始终基于升级/回退操作下发时的分区位置进行current/next的区分。假设当前分区为A分区,下发升级操作并在sysconfigs(升级重启后配置)中配置grub.cmdline.current,重启后进行配置时仍修改A分区对应的grub cmdline。 + * 注意:升级/回退前后的配置,始终基于升级/回退操作下发时的分区位置进行current/next的区分。假设当前分区为A分区,下发升级操作并在sysconfigs(升级重启后配置)中配置grub.cmdline.current,重启后进行配置时仍修改A分区对应的grub cmdline。 - * grub.cmdline.current/next支持“key=value”(value不能为空),也支持单key。若value中有“=”,例如“root=UUID=some-uuid”,key应设置为第一个“=”前的所有字符,value为第一个“=”后的所有字符。 配置方法示例如下: + * grub.cmdline.current/next支持“key=value”(value不能为空),也支持单key。若value中有“=”,例如“root=UUID=some-uuid”,key应设置为第一个“=”前的所有字符,value为第一个“=”后的所有字符。 配置方法示例如下: ```yaml configs: @@ -525,12 +518,12 @@ #### kubelet配置 -* kuberntes.kubelet: 配置节点kubelet的配置文件中的参数,参数说明和约束如下: - * 仅支持```KubeletConfiguration```中的配置参数。 - * 节点kubelet配置文件需要为yaml格式的文件。 - * 如不指定configpath,默认配置文件路径为```/var/lib/kubelet/config.yaml```,并且需要注意的是配置文件的路径需要与kubelet启动时的```-- config```参数指定的路径一致才能生效,用户需保证配置文件路径有效。 - * kubelet配置的value参数类型支持为空/null、int、float、string、boolean和数组。当为数组时,数组元素允许重复,数组参数进行更新时会追加到已有数组中。如需修改数组中的元素,需要先删除数组,再新增数组来完成修改。 - * 如配置存在嵌套,则通过```'.'```连接嵌套的key值,例如如果修改如下yaml示例中```cacheAuthorizedTTL```参数为1s。 +* kubernetes.kubelet: 配置节点kubelet的配置文件中的参数,参数说明和约束如下: + * 仅支持```KubeletConfiguration```中的配置参数。 + * 节点kubelet配置文件需要为yaml格式的文件。 + * 如不指定configpath,默认配置文件路径为```/var/lib/kubelet/config.yaml```,并且需要注意的是配置文件的路径需要与kubelet启动时的```-- config```参数指定的路径一致才能生效,用户需保证配置文件路径有效。 + * kubelet配置的value参数类型支持为空/null、int、float、string、boolean和数组。当为数组时,数组元素允许重复,数组参数进行更新时会追加到已有数组中。如需修改数组中的元素,需要先删除数组,再新增数组来完成修改。 + * 如配置存在嵌套,则通过```'.'```连接嵌套的key值,例如如果修改如下yaml示例中```cacheAuthorizedTTL```参数为1s。 ```yaml authorization: @@ -538,28 +531,34 @@ webhook: cacheAuthorizedTTL: 0s ``` + 参数配置示例如下: + ```yaml configs: - - model: kuberntes.kubelet + - model: kubernetes.kubelet configpath: /etc/test.yaml contents: - key: authorization.webhook.cacheAuthorizedTTL value: 1s ``` - * kubernetes.kubelet进行删除时,不对value与配置文件中的值进行比较。 + + * kubernetes.kubelet进行删除时,不对value与配置文件中的值进行比较。 #### containerd配置 * container.containerd: 配置节点上containerd的配置文件中的参数,参数说明和约束如下: - * containerd需要配置文件为toml格式,所以key为toml中该参数的表头.键名,例如希望修改如下toml示例中```no_shim```为true。 + * containerd需要配置文件为toml格式,所以key为toml中该参数的表头.键名,例如希望修改如下toml示例中```no_shim```为true。 + ```toml [plugins."io.containerd.runtime.v1.linux"] no_shim=false runtime="runc" runtime_root=" ``` + 参数配置示例如下: + ```yaml configs: - model: container.containerd @@ -568,15 +567,17 @@ - key: plugins."io.containerd.runtime.v1.linux".no_shim value: true ``` - * toml使用```.```分割键,os-agent识别时与toml保持一致,所以当键名中包含```.```时,该键名需要使用```""```,例如上例中的```"io.containerd.runtime.v1.linux"```为一个键 - * 如不指定configpath,默认配置文件路径为```/etc/containerd/config.toml```,用户需要保证配置文件路径有效。 - * container.conatainerd配置的key和value均不能为空,value参数类型支持int、float、string、boolean和数组。当为数组时,数组元素允许重复,数组参数进行更新时会追加到已有数组中。如需修改数组中的元素,需要先删除数组,再新增数组来完成修改。 - * container.containerd进行删除时,不对value与配置文件中的值进行比较。 + + * toml使用```.```分割键,os-agent识别时与toml保持一致,所以当键名中包含```.```时,该键名需要使用```""```,例如上例中的```"io.containerd.runtime.v1.linux"```为一个键 + * 如不指定configpath,默认配置文件路径为```/etc/containerd/config.toml```,用户需要保证配置文件路径有效。 + * container.conatainerd配置的key和value均不能为空,value参数类型支持int、float、string、boolean和数组。当为数组时,数组元素允许重复,数组参数进行更新时会追加到已有数组中。如需修改数组中的元素,需要先删除数组,再新增数组来完成修改。 + * container.containerd进行删除时,不对value与配置文件中的值进行比较。 #### Pam Limits配置 * pam.limits:配置节点上/etc/security/limits.conf文件 - * key为domain值,value的格式需要为type.item.value(limits.conf文件要求每行格式为:\ \ \ \),例如: + * key为domain值,value的格式需要为type.item.value(limits.conf文件要求每行格式为:\ \ \ \),例如: + ```yaml configs: - model: pam.limits @@ -584,7 +585,9 @@ - key: ftp value: soft.core.0 ``` - * 更新时,如不需要对type/item/value更新时,可以使用```_```,忽略对此参数的更新,但value必须为点隔的三段式,例如: + + * 更新时,如不需要对type/item/value更新时,可以使用```_```,忽略对此参数的更新,但value必须为点隔的三段式,例如: + ```yaml configs: - model: pam.limits @@ -592,6 +595,7 @@ - key: ftp value: hard._.1 ``` - * pam.limits新增时,value中不允许包含```_``` - * pam.limits删除时,会对value进行校验,当value与配置文件中的值不同时,删除失败 - * pam.limits配置的key和value均不能为空 + + * pam.limits新增时,value中不允许包含```_``` + * pam.limits删除时,会对value进行校验,当value与配置文件中的值不同时,删除失败 + * pam.limits配置的key和value均不能为空