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
```
->  **说明:**
+> [!NOTE]说明
>
-> 安装完成后,需要手工启动isula-build服务。启动请参见[管理服务](isula-build构建工具.md#管理服务)。
+> 安装完成后,需要手工启动isula-build服务。启动请参见[管理服务](#管理服务)。
# 配置与管理服务
@@ -77,7 +77,7 @@
* /etc/isula-build/policy.json:镜像pull/push策略文件。当前不支持对其进行配置。
->  **说明:**
+> [!NOTE]说明
>
> * isula-build 支持最大 1MiB 的上述配置文件。
> * isula-build 不支持将持久化工作目录 dataroot 配置在内存盘上,比如 tmpfs。
@@ -88,7 +88,7 @@
目前 openEuler 采用 systemd 管理软件服务,isula-build 软件包已经自带了 systemd 的服务文件,用户安装完 isula-build 软件包之后,可以直接通过 systemd 工具对它进行服务启停等操作。用户同样可以手动启动 isula-build 服务端软件。需要注意的是,同一个节点上不可以同时启动多个 isula-build 服务端软件。
-> **说明:**
+>[!NOTE]说明
>
> 同一个节点上不可以同时启动多个 isula-build 服务端软件。
@@ -133,7 +133,7 @@ sudo systemctl daemon-reload
* --group: 设置本地套接字isula_build.sock文件属组使得加入该组的非特权用户可以操作isula-build,默认为“isula”。
* --experimental: 是否开启实验特性,默认为false。
-> **说明:**
+>[!NOTE]说明
>
> 当命令行启动参数中传递了与配置文件相同的配置选项时,优先使用命令行参数启动。
@@ -159,7 +159,7 @@ sudo yum install -y docker-runc
sudo yum install -y docker-engine
```
-> **说明:**
+>[!NOTE]说明
>
> 用户需保证OCI runtime(runc)可执行文件的安全性,避免被恶意替换。
@@ -183,7 +183,7 @@ isula-build 客户端提供了一系列命令用于构建和管理容器镜像
* version,查看isula-build和isula-builder的版本号。
* manifest(实验特性),管理manifest列表。
-> **说明:**
+>[!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
```
->  **说明:**
+> [!NOTE]说明
>
> * isula-build最大支持并发构建100个容器镜像。
> * isula-build支持Dockerfile最大为1MiB。
@@ -394,7 +394,7 @@ localhost:5000/library/alpine latest a24bb4013296 2022-01
--------------------------------------- ----------- ----------------- ------------------------ ------------
```
->  **说明:**
+> [!NOTE]说明
>
> 通过`isula-build ctr-img images`查看的镜像大小与`docker images`的显示上有一定差异。这是因为统计镜像大小时,isula-build是直接计算每层tar包大小之和,而docker是通过解压tar遍历diff目录计算文件大小之和,因此存在统计上的差异。
@@ -426,7 +426,7 @@ mybusybox latest 173b3cf612f8 2022-01
--------------------------------------- ----------- ----------------- ------------------------ ------------
```
-> **说明:**
+>[!NOTE]说明
>
> isula-build 支持导入最大1GiB的容器基础镜像。
@@ -469,7 +469,7 @@ Storing signatures
Loaded image as c07ddb44daa97e9e8d2d68316b296cc9343ab5f3d2babc5e6e03b80cd580478e
```
-> **说明:**
+>[!NOTE]说明
>
> * isula-build 支持导入最大50G的容器层叠镜像。
> * isula-build 会自动识别容器层叠镜像的格式并进行导入。
@@ -555,7 +555,7 @@ Storing signatures
Save success with image: [busybox:latest nginx:latest]
```
-> **说明:**
+>[!NOTE]说明
>
> * save 导出的镜像默认格式为未压缩的tar格式,如有需求,用户可以再save之后手动压缩。
> * 在使用镜像名导出镜像时,需要给出完整的镜像名格式:REPOSITORY:TAG。
@@ -631,7 +631,7 @@ Storing signatures
Push success with image: example-registry/library/mybusybox:latest
```
-> **说明:**
+>[!NOTE]说明
>
> 推送镜像时,需要先登录对应的镜像仓库
@@ -757,7 +757,7 @@ Server:
## manifest: manifest列表管理
manifest列表包含不同系统架构对应的镜像信息,通过使用manifest列表,用户可以在不同的架构中使用相同的manifest(例如openeuler:latest)获取对应架构的镜像,manifest包含create、annotate、inspect和push子命令。
->  **说明:**
+> [!NOTE]说明
>
> manifest为实验特性,使用时需开启客户端和服务端的实验选项,方式详见客户端总体说明和配置服务章节。
@@ -875,7 +875,7 @@ REPOSITORY TAG IMAGE ID CREATED
busybox 2.0 2d414a5cad6d 2020-08-01 06:41:36 5.577 MB
```
->  **说明:**
+> [!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
```
->  **说明:**
+> [!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为客户端,

->  **说明:**
+> [!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 文件系统布局

-
-
如图所示,容器 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
```
-> **说明**:
+> [!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'
+ ```
-> **说明**:
+> [!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均不能为空