From 37139bc77d1de84b35425442890c78f3ba888a8f Mon Sep 17 00:00:00 2001 From: chopupu <1123478123@qq.com> Date: Mon, 12 May 2025 19:22:51 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=A7=84=E8=8C=83kmesh=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit update update update update update --- .../Kmesh/figures/get_kubeconfig_error.png | Bin 7743 -> 0 bytes .../docs/Kmesh/figures/not_set_cluster_ip.png | Bin 28666 -> 0 bytes ...43\345\206\263\346\226\271\346\263\225.md" | 23 - docs/zh/docs/cloud/_toc.yaml | 32 + .../container_runtime/.markdownlint.json | 24 - .../hybrid_deployment/oncn_bwm/_toc.yaml | 6 + .../hybrid_deployment/oncn_bwm}/overview.md | 12 +- .../cloud/hybrid_deployment/rubik/_toc.yaml | 16 + .../cloud/hybrid_deployment/rubik/appendix.md | 22 +- .../hybrid_deployment/rubik/configuration.md | 16 +- ..._isolation_for_hybrid_deployed_services.md | 2 +- .../rubik/feature_introduction.md} | 52 +- .../rubik/figures/icon-note.gif | Bin 0 -> 629 bytes .../rubik/figures/iocost.PNG | Bin 0 -> 115102 bytes .../rubik/installation_and_deployment.md | 54 +- .../hybrid_deployment}/rubik/overview.md | 8 +- docs/zh/docs/cloud/kmesh/kemsh/_toc.yaml | 14 + .../zh/docs/cloud/kmesh/kemsh/appendixes.md | 0 .../kmesh/kemsh}/figures/kmesh-arch.png | Bin .../kmesh/kemsh/getting_to_know_kmesh.md | 2 - .../kemsh/installation_and_deployment.md | 10 +- .../kmesh/kemsh/overview.md} | 0 .../zh/docs/cloud/kmesh/kemsh/usage.md | 0 docs/zh/docs/cloud/nestos/nestos/_toc.yaml | 10 + .../nestos/nestos/feature_description.md | 105 ++ .../cloud/nestos/nestos/figures/figure1.png | Bin 0 -> 252471 bytes .../cloud/nestos/nestos/figures/figure2.png | Bin 0 -> 69490 bytes .../nestos/nestos/nestos_for_container.md | 995 ++++++++++++++++++ docs/zh/docs/cloud/nestos/nestos/overview.md | 4 + docs/zh/docs/rubik/figures/icon-note.gif | Bin 394 -> 0 bytes docs/zh/docs/rubik/figures/iocost.PNG | Bin 65642 -> 0 bytes 31 files changed, 1275 insertions(+), 132 deletions(-) delete mode 100644 docs/zh/docs/Kmesh/figures/get_kubeconfig_error.png delete mode 100644 docs/zh/docs/Kmesh/figures/not_set_cluster_ip.png delete mode 100644 "docs/zh/docs/Kmesh/\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" create mode 100644 docs/zh/docs/cloud/_toc.yaml delete mode 100644 docs/zh/docs/cloud/container_runtime/.markdownlint.json create mode 100644 docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/_toc.yaml rename docs/zh/docs/{oncn-bwm => cloud/hybrid_deployment/oncn_bwm}/overview.md (90%) create mode 100644 docs/zh/docs/cloud/hybrid_deployment/rubik/_toc.yaml rename "docs/zh/docs/rubik/\351\231\204\345\275\225.md" => docs/zh/docs/cloud/hybrid_deployment/rubik/appendix.md (93%) rename "docs/zh/docs/rubik/\351\205\215\347\275\256\346\226\207\346\241\243.md" => docs/zh/docs/cloud/hybrid_deployment/rubik/configuration.md (95%) rename "docs/zh/docs/rubik/\346\267\267\351\203\250\351\232\224\347\246\273\347\244\272\344\276\213.md" => docs/zh/docs/cloud/hybrid_deployment/rubik/example_of_isolation_for_hybrid_deployed_services.md (99%) rename docs/zh/docs/{rubik/modules.md => cloud/hybrid_deployment/rubik/feature_introduction.md} (89%) create mode 100644 docs/zh/docs/cloud/hybrid_deployment/rubik/figures/icon-note.gif create mode 100644 docs/zh/docs/cloud/hybrid_deployment/rubik/figures/iocost.PNG rename "docs/zh/docs/rubik/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" => docs/zh/docs/cloud/hybrid_deployment/rubik/installation_and_deployment.md (86%) rename docs/zh/docs/{ => cloud/hybrid_deployment}/rubik/overview.md (81%) create mode 100644 docs/zh/docs/cloud/kmesh/kemsh/_toc.yaml rename "docs/zh/docs/Kmesh/\351\231\204\345\275\225.md" => docs/zh/docs/cloud/kmesh/kemsh/appendixes.md (100%) rename docs/zh/docs/{Kmesh => cloud/kmesh/kemsh}/figures/kmesh-arch.png (100%) rename "docs/zh/docs/Kmesh/\350\256\244\350\257\206Kmesh.md" => docs/zh/docs/cloud/kmesh/kemsh/getting_to_know_kmesh.md (99%) rename "docs/zh/docs/Kmesh/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" => docs/zh/docs/cloud/kmesh/kemsh/installation_and_deployment.md (94%) rename docs/zh/docs/{Kmesh/Kmesh.md => cloud/kmesh/kemsh/overview.md} (100%) rename "docs/zh/docs/Kmesh/\344\275\277\347\224\250\346\226\271\346\263\225.md" => docs/zh/docs/cloud/kmesh/kemsh/usage.md (100%) create mode 100644 docs/zh/docs/cloud/nestos/nestos/_toc.yaml create mode 100644 docs/zh/docs/cloud/nestos/nestos/feature_description.md create mode 100644 docs/zh/docs/cloud/nestos/nestos/figures/figure1.png create mode 100644 docs/zh/docs/cloud/nestos/nestos/figures/figure2.png create mode 100644 docs/zh/docs/cloud/nestos/nestos/nestos_for_container.md create mode 100644 docs/zh/docs/cloud/nestos/nestos/overview.md delete mode 100644 docs/zh/docs/rubik/figures/icon-note.gif delete mode 100644 docs/zh/docs/rubik/figures/iocost.PNG diff --git a/docs/zh/docs/Kmesh/figures/get_kubeconfig_error.png b/docs/zh/docs/Kmesh/figures/get_kubeconfig_error.png deleted file mode 100644 index 99087b68c6fafea1506e5f8bd862c371e93bdc97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7743 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 diff --git a/docs/zh/docs/Kmesh/figures/not_set_cluster_ip.png b/docs/zh/docs/Kmesh/figures/not_set_cluster_ip.png deleted file mode 100644 index 9c879f37fa93c0f4fe0ab0f6220beff174e5f436..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28666 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 z 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 diff --git "a/docs/zh/docs/Kmesh/\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/Kmesh/\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 a8b92c15b..000000000 --- "a/docs/zh/docs/Kmesh/\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,23 +0,0 @@ -# 常见问题及解决方法 - -## 问题1:在使用集群启动模式时,若没有配置控制面程序ip信息,Kmesh服务启动后会报错退出 - -![](./figures/not_set_cluster_ip.png) - -原因:集群启动模式下,Kmesh服务需要跟控制面程序通信,然后从控制面获取配置信息,因此需要设置正确的控制面程序ip信息。 - -解决方法:参考[安装与部署](./安装与部署.md)章节中集群启动模式,设置正确的控制面程序ip信息。 - -## 问题2:Kmesh服务在启动时,提示"get kube config error!" - -![](./figures/get_kubeconfig_error.png) - -原因:集群启动模式下,Kmesh服务会根据k8s的配置,自动获取控制面程序ip信息,若环境中没有配置k8s的kubeconfig路径,会导致获取kubeconfig失败,然后提示上述信息。(若已经手动修改Kmesh的配置文件,正确配置控制面程序ip信息,该问题可忽略) - -解决方法:按如下方式配置kubeconfig: - -```shell -mkdir -p $HOME/.kube -sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config -sudo chown $(id -u):$(id -g) $HOME/.kube/config -``` diff --git a/docs/zh/docs/cloud/_toc.yaml b/docs/zh/docs/cloud/_toc.yaml new file mode 100644 index 000000000..b81cf5d17 --- /dev/null +++ b/docs/zh/docs/cloud/_toc.yaml @@ -0,0 +1,32 @@ +label: 云原生 +sections: + - label: 容器引擎 + sections: + - href: ./container_engine/isula_container_engine/_toc.yaml + - href: ./container_engine/docker_engine/_toc.yaml + - label: 容器形态 + sections: + - href: ./container_form/secure_container/_toc.yaml + - href: ./container_form/system_container/_toc.yaml + - label: 容器运行时 + sections: + - href: ./container_runtime/kuasar/_toc.yaml + - label: 容器镜像构建工具 + sections: + - href: ./image_builder/isula_build/_toc.yaml + - label: 云原生操作系统 + sections: + - href: ./kubeos/kubeos/_toc.yaml + - label: 云底座操作系统 + sections: + - href: ./nestos/nestos/_toc.yaml + - label: 混合部署 + sections: + - href: ./hybrid_deployment/rubik/_toc.yaml + - href: ./hybrid_deployment/oncn_bwm/_toc.yaml + - label: 集群部署 + sections: + - href: ./cluster_deployment/kubernetes/_toc.yaml + - label: 服务网格 + sections: + - href: ./kmesh/kmesh/_toc.yaml diff --git a/docs/zh/docs/cloud/container_runtime/.markdownlint.json b/docs/zh/docs/cloud/container_runtime/.markdownlint.json deleted file mode 100644 index 81f0eb7aa..000000000 --- a/docs/zh/docs/cloud/container_runtime/.markdownlint.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "MD003":{"style":"atx"}, - "MD007":{"indent":4}, - "MD029":{"style":"ordered"}, - "MD009":false, - "MD013":false, - "MD014":false, - "MD020":false, - "MD021":false, - "MD024":false, - "MD025":false, - "MD033":false, - "MD036":false, - "MD042":false, - "MD043":false, - "MD044":false, - "MD045":false, - "MD048":false, - "MD049":false, - "MD050":false, - "MD051":false, - "MD052":false, - "MD053":false -} \ No newline at end of file diff --git a/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/_toc.yaml b/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/_toc.yaml new file mode 100644 index 000000000..99b9aebd4 --- /dev/null +++ b/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/_toc.yaml @@ -0,0 +1,6 @@ +label: oncn-bwm用户指南 +isManual: true +description: 混合业务场景下的Pod带宽管理方案 +sections: + - label: 概述 + href: ./overview.md diff --git a/docs/zh/docs/oncn-bwm/overview.md b/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md similarity index 90% rename from docs/zh/docs/oncn-bwm/overview.md rename to docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md index 4f4b973a3..77979db23 100644 --- a/docs/zh/docs/oncn-bwm/overview.md +++ b/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md @@ -31,7 +31,7 @@ yum install oncn-bwm oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行相关配置。`bwmcli`命令的整体格式如下: -**bwmcli** < option(s) > +**bwmcli** \< option(s) > > 说明: > @@ -51,8 +51,8 @@ oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行 | 命令格式 | 功能 | | --------------------------- | ------------------------------------------------------------ | -| **bwmcli -e** <网卡名称> | 使能指定网卡的Pod带宽管理。 | -| **bwmcli -d** <网卡名称> | 去除指定网卡的Pod带宽管理。 | +| **bwmcli -e** \<网卡名称> | 使能指定网卡的Pod带宽管理。 | +| **bwmcli -d** \<网卡名称> | 去除指定网卡的Pod带宽管理。 | | **bwmcli -p devs** | 查询节点所有网卡的Pod带宽管理。 | > 说明: @@ -96,7 +96,7 @@ oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行 | 命令格式 | 功能 | | ------------------------------------------------------------ | ------------------------------------------------------------ | -| **bwmcli -s** *path* ** | 设置Pod网络优先级。其中*path*为Pod对应的cgroup路径,*prio*为优先级。*path*取相对路径或者绝对路径均可。 *prio*默认值为0,可选值为0和-1,0标识为在线业务,-1标识为离线业务。 | +| **bwmcli -s** path / | 设置Pod网络优先级。其中*path*为Pod对应的cgroup路径,*prio*为优先级。*path*取相对路径或者绝对路径均可。 *prio*默认值为0,可选值为0和-1,0标识为在线业务,-1标识为离线业务。 | | **bwmcli -p** *path* | 查询Pod网络优先级。 | > 说明: @@ -123,7 +123,7 @@ oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行 | 命令格式 | 功能 | | ------------------------------------ | ------------------------------------------------------------ | -| **bwmcli -s bandwidth** ** | 设置一个主机/虚拟机的离线带宽。其中*low*表示最低带宽,*high*表示最高带宽,其单位可取值为kb/mb/gb,有效范围为[1mb, 9999gb]。| +| **bwmcli -s bandwidth** / | 设置一个主机/虚拟机的离线带宽。其中*low*表示最低带宽,*high*表示最高带宽,其单位可取值为kb/mb/gb,有效范围为[1mb, 9999gb]。| | **bwmcli -p bandwidth** | 查询设置一个主机/虚拟机的离线带宽。 | > 说明: @@ -156,7 +156,7 @@ oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行 | 命令格式 | 功能 | | ---------------------------------------------- | ------------------------------------------------------------ | -| **bwmcli -s waterline** ** | 设置一个主机/虚拟机的在线业务水线,其中*val*为水线值,单位可取值为kb/mb/gb ,有效范围为[20mb, 9999gb]。 | +| **bwmcli -s waterline** / | 设置一个主机/虚拟机的在线业务水线,其中*val*为水线值,单位可取值为kb/mb/gb ,有效范围为[20mb, 9999gb]。 | | **bwmcli -p waterline** | 查询一个主机/虚拟机的在线业务水线。 | > 说明: diff --git a/docs/zh/docs/cloud/hybrid_deployment/rubik/_toc.yaml b/docs/zh/docs/cloud/hybrid_deployment/rubik/_toc.yaml new file mode 100644 index 000000000..7a93bd0b0 --- /dev/null +++ b/docs/zh/docs/cloud/hybrid_deployment/rubik/_toc.yaml @@ -0,0 +1,16 @@ +label: 云原生混合部署rubik用户指南 +isManual: true +description: 在业务混合部署的场景下,根据QoS分级,对资源进行合理调度 +sections: + - label: 概述 + href: ./overview.md + - label: 安装与部署 + href: ./installation_and_deployment.md + - label: 特性介绍 + href: ./feature_introduction.md + - label: 配置文档 + href: configuration.md + - label: ./混部隔离示例 + href: ./example_of_isolation_for_hybrid_deployed_services.md + - label: 附录 + href: ./appendix.md diff --git "a/docs/zh/docs/rubik/\351\231\204\345\275\225.md" b/docs/zh/docs/cloud/hybrid_deployment/rubik/appendix.md similarity index 93% rename from "docs/zh/docs/rubik/\351\231\204\345\275\225.md" rename to docs/zh/docs/cloud/hybrid_deployment/rubik/appendix.md index 098554e05..047c30c0d 100644 --- "a/docs/zh/docs/rubik/\351\231\204\345\275\225.md" +++ b/docs/zh/docs/cloud/hybrid_deployment/rubik/appendix.md @@ -136,7 +136,7 @@ spec: ## Dockerfile 模板 -```dockefile +```dockerfile FROM scratch COPY ./build/rubik /rubik ENTRYPOINT ["/rubik"] @@ -228,9 +228,9 @@ sed -i "/image:/s/:.*/: ${IMG_NAME_AND_TAG}/" "${YAML_FILE}" - CPU 和 memory 的在线、离线配置需要统一,否则可能导致两个子系统的 QoS 冲突 - 使用混部后,原始的 CPU share 功能存在限制。具体表现为: - - 若当前 CPU 中同时存放在线任务和离线任务,则离线任务的 CPU share 无法生效 - - 若当前 CPU 中只有在线任务或只有离线任务,CPU share 能生效 - - 建议离线业务 Pod 优先级配置为 best effort + - 若当前 CPU 中同时存放在线任务和离线任务,则离线任务的 CPU share 无法生效 + - 若当前 CPU 中只有在线任务或只有离线任务,CPU share 能生效 + - 建议离线业务 Pod 优先级配置为 best effort - 用户态的优先级反转、smt、cache、numa 负载均衡、离线任务的负载均衡,当前不支持 @@ -239,14 +239,14 @@ sed -i "/image:/s/:.*/: ${IMG_NAME_AND_TAG}/" "${YAML_FILE}" 禁止用户直接手动修改 Pod 对应 cgroup 或 resctrl 参数,否则可能出现数据不一致情况。 - CPU cgroup 目录, 如:`/sys/fs/cgroup/cpu/kubepods/burstable//` - - cpu.qos_level - - cpu.cfs_burst_us + - cpu.qos_level + - cpu.cfs_burst_us - memory cgroup 目录,如:`/sys/fs/cgroup/memory/kubepods/burstable//` - - memory.qos_level - - memory.soft_limit_in_bytes - - memory.force_empty - - memory.limit_in_bytes - - memory.high + - memory.qos_level + - memory.soft_limit_in_bytes + - memory.force_empty + - memory.limit_in_bytes + - memory.high - RDT 控制组目录,如:`/sys/fs/resctrl` diff --git "a/docs/zh/docs/rubik/\351\205\215\347\275\256\346\226\207\346\241\243.md" b/docs/zh/docs/cloud/hybrid_deployment/rubik/configuration.md similarity index 95% rename from "docs/zh/docs/rubik/\351\205\215\347\275\256\346\226\207\346\241\243.md" rename to docs/zh/docs/cloud/hybrid_deployment/rubik/configuration.md index 001eb1680..0ac09bc8b 100644 --- "a/docs/zh/docs/rubik/\351\205\215\347\275\256\346\226\207\346\241\243.md" +++ b/docs/zh/docs/cloud/hybrid_deployment/rubik/configuration.md @@ -21,10 +21,10 @@ OS/Arch: linux/amd64 执行rubik二进制时,rubik首先会解析配置文件,配置文件的路径固定为`/var/lib/rubik/config.json`。 -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > -> 1. 为避免配置混乱,暂不支持指定其他路径。 -> 2. rubik支持以daemonset形式运行在kubernetes集群中。我们提供了yaml脚本(`hack/rubik-daemonset.yaml`),并定义了`ConfigMap`作为配置。因此,以daemonset形式运行rubik时,应修改`hack/rubik-daemonset.yaml`中的相应配置。 +> - 为避免配置混乱,暂不支持指定其他路径。 +> - ubik支持以daemonset形式运行在kubernetes集群中。我们提供了yaml脚本(`hack/rubik-daemonset.yaml`),并定义了`ConfigMap`作为配置。因此,以daemonset形式运行rubik时,应修改`hack/rubik-daemonset.yaml`中的相应配置。 配置文件采用json格式,字段键采用驼峰命名规则,且首字母小写。 配置文件示例内容如下: @@ -122,6 +122,7 @@ Rubik配置分为两类:通用配置和特性配置。通用配置由agent关 ### agent `agent`配置用于记录保存rubik运行的通用配置,例如日志、cgroup挂载点等信息。 + | 配置键[=默认值] | 类型 | 描述 | 可选值 | | ------------------------- | ---------- | -------------------------------------- | --------------------------- | | logDriver=stdio | string | 日志驱动,支持标准输出和文件 | stdio, file | @@ -160,6 +161,7 @@ Rubik配置分为两类:通用配置和特性配置。通用配置由agent关 ### quotaTurbo `quotaTurbo`字段用于标识支持弹性限流技术(用户态)配置。 + | 配置键[=默认值] | 类型 | 描述 | 可选值 | | ----------------- | ------ | -------------------------------- | -------------------- | | highWaterMark=60 | int | CPU负载的高水位值 |\[0,警戒水位) | @@ -169,12 +171,14 @@ Rubik配置分为两类:通用配置和特性配置。通用配置由agent关 ### ioCost `ioCost`字段用于标识支持iocost对IO权重控制特性配置。其类型为数组,数组中的每一个元素由节点名称`nodeName`和设备参数数组`config`组成。 + | 配置键 | 类型 | 描述 | 可选值 | | ----------------- | ------ | -------------------------------- | -------------------- | | nodeName | string | 节点名称 | kubernetes中节点名称 | | config | 数组 | 单个设备的配置信息 | / | 单个块设备配置`config`参数: + | 配置键[=默认值] | 类型 | 描述 | 可选值 | | --------------- | ------ | --------------------------------------------- | -------------- | | dev | string | 块设备名称,仅支持物理设备 | / | @@ -182,6 +186,7 @@ Rubik配置分为两类:通用配置和特性配置。通用配置由agent关 | param | / | 设备参数,根据不同模型有不同参数 | / | 模型为linear时,`param`字段支持如下参数: + | 配置键[=默认值] | 类型 | 描述 | 可选值 | | --------------- | ---- | ---- | ------ | |rbps | int64 | 块设备最大读带宽 | (0, $2^{63}$) | @@ -194,6 +199,7 @@ Rubik配置分为两类:通用配置和特性配置。通用配置由agent关 ### psi `psi`字段用于标识基于psi指标的干扰检测特性配置。目前,psi特性支持监测CPU、内存和I/O资源,用户可以按需配置该字段,单独或组合监测资源的PSI取值。 + | 配置键[=默认值] | 类型 | 描述 | 可选值 | | --------------- | ---------- | -------------------------------- | ----------- | | interval=10 |int|psi指标监测间隔(单位:秒)| [10,30]| @@ -203,6 +209,7 @@ Rubik配置分为两类:通用配置和特性配置。通用配置由agent关 ### CPU驱逐水位线控制 `cpuevict`字段用于标识CPU驱逐水位线控制特性配置。该特性依照指定采样间隔采集节点CPU利用率,并统计指定窗口内的CPU平均利用率。若CPU平均利用率大于驱逐水位线,则驱逐离线Pod。一旦rubik驱逐离线Pod,则在冷却时间内不再驱逐Pod。 + | 配置键[=默认值] | 类型 | 描述 | 可选值 | | --------------- | ---------- | -------------------------------- | ----------- | | threshold=60 | int | 窗口期内平均CPU利用率的阈值(%),超过该阈值,则驱逐离线Pod | [1,99]| @@ -213,8 +220,9 @@ Rubik配置分为两类:通用配置和特性配置。通用配置由agent关 ### 内存驱逐水位线控制 `memoryevict`字段用于标识内存驱逐水位线控制特性配置。该特性依照指定采样间隔采集节点内存利用率。若节点内存利用率大于驱逐水位线,则驱逐离线Pod。一旦rubik驱逐离线Pod,则在冷却时间内不再驱逐Pod。 + | 配置键[=默认值] | 类型 | 描述 | 可选值 | | --------------- | ---------- | -------------------------------- | ----------- | | threshold | int | 内存利用率的阈值(%),超过该阈值,则驱逐离线Pod。若不指定该值,则无法使用本功能。 | [1,99]| | interval=1 | int | 节点CPU利用率采集间隔(s) | [1, 3600] | -| cooldown=4 | int | 冷却时间(s),两次驱逐之间至少需要间隔冷却时间 | [1, 9223372036854775806]| \ No newline at end of file +| cooldown=4 | int | 冷却时间(s),两次驱逐之间至少需要间隔冷却时间 | [1, 9223372036854775806]| diff --git "a/docs/zh/docs/rubik/\346\267\267\351\203\250\351\232\224\347\246\273\347\244\272\344\276\213.md" b/docs/zh/docs/cloud/hybrid_deployment/rubik/example_of_isolation_for_hybrid_deployed_services.md similarity index 99% rename from "docs/zh/docs/rubik/\346\267\267\351\203\250\351\232\224\347\246\273\347\244\272\344\276\213.md" rename to docs/zh/docs/cloud/hybrid_deployment/rubik/example_of_isolation_for_hybrid_deployed_services.md index 46ea86342..531a3a7b0 100644 --- "a/docs/zh/docs/rubik/\346\267\267\351\203\250\351\232\224\347\246\273\347\244\272\344\276\213.md" +++ b/docs/zh/docs/cloud/hybrid_deployment/rubik/example_of_isolation_for_hybrid_deployed_services.md @@ -84,7 +84,7 @@ function prepare() { yandex/clickhouse-server) sleep 3 - echo "Clickhouse container lauched." + echo "Clickhouse container launched." } function clickhouse() { diff --git a/docs/zh/docs/rubik/modules.md b/docs/zh/docs/cloud/hybrid_deployment/rubik/feature_introduction.md similarity index 89% rename from docs/zh/docs/rubik/modules.md rename to docs/zh/docs/cloud/hybrid_deployment/rubik/feature_introduction.md index a6e651b0b..07cc3d645 100644 --- a/docs/zh/docs/rubik/modules.md +++ b/docs/zh/docs/cloud/hybrid_deployment/rubik/feature_introduction.md @@ -22,7 +22,7 @@ rubik支持业务优先级配置,针对在离线业务混合部署的场景, ... ``` -配置参数详见[配置文档](./%E9%85%8D%E7%BD%AE%E6%96%87%E6%A1%A3.md#preemption)。 +配置参数详见[配置文档](./configuration.md#preemption)。 同时,用户需要在pod的yaml注解中增加`volcano.sh/preemptable`字段来指定业务优先级。业务优先级配置示例如下: @@ -31,7 +31,7 @@ annotations: volcano.sh/preemptable: true ``` -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > > 在rubik中,所有特性均通过识别`volcano.sh/preemptable`注解作为业务在离线标志。true代表业务为离线业务,false代表业务为在线业务。 @@ -47,8 +47,8 @@ annotations: - /sys/fs/cgroup/cpu 目录下容器的 cgroup 中,如`/sys/fs/cgroup/cpu/kubepods/burstable//`目录。 - cpu.qos_level:开启 CPU 优先级配置,默认值为 0, 有效值为 0 和-1。 - - 0:标识为在线业务。 - - -1:标识为离线业务。 + - 0:标识为在线业务。 + - -1:标识为离线业务。 ### 内存绝对抢占 @@ -62,13 +62,13 @@ annotations: **内核接口** - /proc/sys/vm/memcg_qos_enable:开启内存优先级特性,默认值为 0,有效值为 0 和 1。开启命令为:`echo 1 > /proc/sys/vm/memcg_qos_enable`。 - - 0:表示关闭特性。 - - 1:表示开启特性。 + - 0:表示关闭特性。 + - 1:表示开启特性。 - /sys/fs/cgroup/memory 目录下容器的 cgroup 中,如`/sys/fs/cgroup/memory/kubepods/burstable//`目录 - - memory.qos_level:开启内存优先级配置,默认值为 0,有效值为 0 和-1。 - - 0:标识为在线业务。 - - -1:标识为离线业务。 + - memory.qos_level:开启内存优先级配置,默认值为 0,有效值为 0 和-1。 + - 0:标识为在线业务。 + - -1:标识为离线业务。 ## dynCache 访存带宽和LLC限制 @@ -77,8 +77,8 @@ rubik 支持业务的 Pod 访存带宽(memory bandwidth)和 LLC(Last Level Cache **前置条件**: - cache/访存限制功能仅支持物理机,不支持虚拟机。 - - X86 物理机,需要 OS 支持且开启 intel RDT 的 CAT 和 MBA 功能,内核启动项 cmdline 需要添加`rdt=l3cat,mba` - - ARM 物理机,需要 OS 支持且开启 mpam 功能,内核启动项需要添加`mpam=acpi`。 + - X86 物理机,需要 OS 支持且开启 intel RDT 的 CAT 和 MBA 功能,内核启动项 cmdline 需要添加`rdt=l3cat,mba` + - ARM 物理机,需要 OS 支持且开启 mpam 功能,内核启动项需要添加`mpam=acpi`。 - 由于内核限制,RDT mode 当前不支持 pseudo-locksetup 模式。 - 用户需手动挂载目录`/sys/fs/resctrl`。 rubik 需要读取和设置`/sys/fs/resctrl` 目录下的文件,该目录需在 rubik 启动前挂载,且需保障在 rubik 运行过程中不被卸载。 - rubik运行依赖SYS_ADMIN权限. 设置主机`/sys/fs/resctrl` 目录下的文件需要 rubik 容器被赋有 SYS_ADMIN 权限。 @@ -98,8 +98,8 @@ rubik支持两种方式为业务Pod配置访存带宽和LLC控制组: - 全局方式 用户可在rubik的全局参数中配置`defaultLimitMode`字段,rubik会自动为离线业务Pod(即绝对抢占特性中的注解`volcano.sh/preemptable`)配置控制组。 - - 取值为`static`时,pod将被加入到`rubik_max`控制组。 - - 取值为`dynamic`时,pod将被加入到`rubik_dynamic`控制组。 + - 取值为`static`时,pod将被加入到`rubik_max`控制组。 + - 取值为`dynamic`时,pod将被加入到`rubik_dynamic`控制组。 - 手动指定 用户可手动通过为业务Pod增加注解`volcano.sh/cache-limit`设置其 cache level, 并被加入到指定的控制组中。如下列配置的pod将被加入rubik_low控制组: @@ -109,11 +109,11 @@ rubik支持两种方式为业务Pod配置访存带宽和LLC控制组: volcano.sh/cache-limit: "low" ``` -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > -> 1. cache限制只针对离线业务。 +> - cache限制只针对离线业务。 > -> 2. 手动指定注解优先于全局方式。即,若用户在rubik的全局参数中配置了`defaultLimitMode`字段,并且在业务 Pod yaml 中指定了cache level,则dynCache限制将以Pod yaml中的注解为准。 +> - 手动指定注解优先于全局方式。即,若用户在rubik的全局参数中配置了`defaultLimitMode`字段,并且在业务 Pod yaml 中指定了cache level,则dynCache限制将以Pod yaml中的注解为准。 ### dynCache 内核接口 @@ -278,12 +278,12 @@ quotaBurst通过配置容器的`cpu.cfs_burst_us`内核接口,允许容器在 - cpu.cfs_burst_us -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > > 内核态通过内核接口cpu.cfs_burst_us实现。支持内核态配置需要确认cgroup的cpu子系统目录下存在cpu.cfs_burst_us文件,其值约束如下: > -> 1. 当cpu.cfs_quota_us的值不为-1时,需满足cfs_burst_us + cfs_quota_us <= $2^{44}$-1 且 cfs_burst_us <= cfs_quota_us。 -> 2. 当cpu.cfs_quota_us的值为-1时,CPU burst功能不生效,cfs_burst_us默认为0,不支持配置其他任何值。 +> - 当cpu.cfs_quota_us的值不为-1时,需满足cfs_burst_us + cfs_quota_us <= $2^{44}$-1 且 cfs_burst_us <= cfs_quota_us。 +> - 当cpu.cfs_quota_us的值为-1时,CPU burst功能不生效,cfs_burst_us默认为0,不支持配置其他任何值。 #### quotaBurst配置详解 @@ -317,11 +317,11 @@ quotaBurst 功能相关的配置如下: ### 约束限制 - 用户态通过CFS bandwidth control调整cpu.cfs_period_us和cpu.cfs_quota_us参数实现CPU带宽控制。因此用户态约束如下: - - 禁止第三方更改CFS bandwidth control相关参数(包括但不限于cpu.cfs_quota_us、cpu.cfs_period_us等文件),以避免未知错误。 - - 禁止与具有限制CPU资源功能的同类产品同时使用,否则导致用户态功能无法正常使用。 - - 若用户监控CFS bandwidth control相关指标,使用本特性可能会破坏监测指标的一致性。 + - 禁止第三方更改CFS bandwidth control相关参数(包括但不限于cpu.cfs_quota_us、cpu.cfs_period_us等文件),以避免未知错误。 + - 禁止与具有限制CPU资源功能的同类产品同时使用,否则导致用户态功能无法正常使用。 + - 若用户监控CFS bandwidth control相关指标,使用本特性可能会破坏监测指标的一致性。 - 内核态约束如下: - - 用户应使用k8s接口设置pod的busrt值,禁止用户手动直接修改容器的cpu cgroup目录下的cpu.cfs_burst_us文件。 + - 用户应使用k8s接口设置pod的busrt值,禁止用户手动直接修改容器的cpu cgroup目录下的cpu.cfs_burst_us文件。 - 禁止用户同时使能弹性限流用户态和内核态方案。 ## ioCost 支持iocost对IO权重控制 @@ -380,7 +380,7 @@ rubik 支持通过在 cgroup v1 下的 iocost 控制不同 Pod 的 io 权重分 配置参数详见[配置文档](./%E9%85%8D%E7%BD%AE%E6%96%87%E6%A1%A3.md#iocost)。 -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > > iocost linear 模型相关参数可以通过 iocost_coef_gen.py 脚本获取,可以从[此链接](https://github.com/torvalds/linux/blob/master/tools/cgroup/iocost_coef_gen.py)获得。 @@ -448,7 +448,7 @@ reboot rubik支持通过根据节点CPU利用率驱逐离线Pod从而避免节点CPU资源过载。用户可以配置CPU驱逐水位线,rubik会统计指定窗口期间节点的平均CPU利用率。若窗口期内平均CPU利用率大于CPU驱逐水位线,则rubik则驱逐资源利用率高且运行时间较短的离线Pod,释放相应资源。 -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > > 在离线业务由注解`volcano.sh/preemptable="true"/"false"`标识。 > @@ -481,7 +481,7 @@ rubik支持通过根据节点CPU利用率驱逐离线Pod从而避免节点CPU资 rubik支持通过根据节点内存利用率驱逐离线Pod从而避免节点内存资源过载。用户可以配置内存驱逐水位线。若节点内存利用率大于内存驱逐水位线,则rubik则驱逐资源利用率高且运行时间较短的离线Pod,释放相应资源。 -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > > 在离线业务由注解`volcano.sh/preemptable="true"/"false"`标识。 > diff --git a/docs/zh/docs/cloud/hybrid_deployment/rubik/figures/icon-note.gif b/docs/zh/docs/cloud/hybrid_deployment/rubik/figures/icon-note.gif new file mode 100644 index 0000000000000000000000000000000000000000..eebb838c275843dfaf5b402c550e64eb887c1035 GIT binary patch literal 629 zcmZ?wbhEHblx7fPc)x!y1BgIIceX%yHFY&HQ86h=DK1VfGEy=&RyJ@|ENm<$W+reh z9!5z~iHVU33locuo{ox=3S6a+myd{$NJ?5tNKlB3oD5t%CN2ifc5!oovoRSpRW&MV zDk5Sca48-x9ylA5!9X!k1RBc12r@`d?0qKsB)=s6R9t+ z1afMD7>=reEN2MM6)uRza6;pwM>j-Tf|->~l9@?Ly0Vgo5h&y$BrL+r#V5)vCJu5d zGm8k91W1^Ro0*3T$l&8w0Fpo?AP6L!8JU12D-g4>a{$TX>lOTg6dXA+SaSgYpIk)d literal 0 HcmV?d00001 diff --git a/docs/zh/docs/cloud/hybrid_deployment/rubik/figures/iocost.PNG b/docs/zh/docs/cloud/hybrid_deployment/rubik/figures/iocost.PNG new file mode 100644 index 0000000000000000000000000000000000000000..c3eae863ad15d79d7e36c44799fc4dc946e8ca26 GIT binary patch literal 115102 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

|?UI~h1M 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 literal 0 HcmV?d00001 diff --git "a/docs/zh/docs/rubik/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" b/docs/zh/docs/cloud/hybrid_deployment/rubik/installation_and_deployment.md similarity index 86% rename from "docs/zh/docs/rubik/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" rename to docs/zh/docs/cloud/hybrid_deployment/rubik/installation_and_deployment.md index a6ceb3f6d..ca2514fca 100644 --- "a/docs/zh/docs/rubik/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" +++ b/docs/zh/docs/cloud/hybrid_deployment/rubik/installation_and_deployment.md @@ -29,7 +29,7 @@ rubik 以`DaemonSet`形式部署在 k8s 的每一个节点上,故需要在每 1. 配置 yum 源:rubik组件位于openEuler EPOL源中,以openEuler 24.03-LTS-SP1版本为例,参考如下: - ``` + ```sh # openEuler 24.03-LTS-SP1 官方发布源 name=openEuler24.03-LTS-SP1 baseurl=https://repo.openeuler.org/openEuler-24.03-LTS-SP1/everything/$basearch/ @@ -38,7 +38,7 @@ rubik 以`DaemonSet`形式部署在 k8s 的每一个节点上,故需要在每 gpgkey=https://repo.openeuler.org/openEuler-24.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler ``` - ``` + ```sh # openEuler 24.03-LTS-SP1:Epol 官方发布源 name=openEuler24.03-LTS-SP1-Epol baseurl=https://repo.openeuler.org/openEuler-24.03-LTS-SP1/EPOL/$basearch/ @@ -46,14 +46,14 @@ rubik 以`DaemonSet`形式部署在 k8s 的每一个节点上,故需要在每 gpgcheck=1 gpgkey=https://repo.openeuler.org/openEuler-24.03-LTS-SP1/everything/$basearch/RPM-GPG-KEY-openEuler ``` - + 2. 使用 root 权限安装 rubik: ```shell sudo yum install -y rubik ``` -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > > rubik 工具相关文件会安装在/var/lib/rubik 目录下。 @@ -69,40 +69,40 @@ sudo echo 1 > /proc/sys/vm/memcg_qos_enable 1. 构建rubik镜像:使用`/var/lib/rubik/build_rubik_image.sh`脚本自动构建或者直接使用 docker容器引擎构建 rubik 镜像。由于 rubik 以 daemonSet 形式部署,故每一个节点都需要 rubik 镜像。用户可以在一个节点构建镜像后使用 docker save/load 功能将 rubik 镜像 load 到 k8s 的每一个节点,也可以在各节点上都构建一遍 rubik 镜像。以 docker 为例,其构建命令如下: -```sh -docker build -f /var/lib/rubik/Dockerfile -t rubik:2.0.1-2 . -``` + ```sh + docker build -f /var/lib/rubik/Dockerfile -t rubik:2.0.1-2 . + ``` 2. 在 k8s master 节点,修改`/var/lib/rubik/rubik-daemonset.yaml`文件中的 rubik 镜像名,与上一步构建出来的镜像名保持一致。 -```yaml -... -containers: -- name: rubik-agent - image: rubik_image_name_and_tag # 此处镜像名需与上一步构建的 rubik 镜像名一致 - imagePullPolicy: IfNotPresent -... -``` + ```yaml + ... + containers: + - name: rubik-agent + image: rubik_image_name_and_tag # 此处镜像名需与上一步构建的 rubik 镜像名一致 + imagePullPolicy: IfNotPresent + ... + ``` 3. 在 k8s master 节点,使用 kubectl 命令部署 rubik daemonset,rubik 会自动被部署在 k8s 的所有节点: -```sh -kubectl apply -f /var/lib/rubik/rubik-daemonset.yaml -``` + ```sh + kubectl apply -f /var/lib/rubik/rubik-daemonset.yaml + ``` 4. 使用`kubectl get pods -A`命令查看 rubik 是否已部署到集群每一个节点上(rubik-agent 数量与节点数量相同且均为 Running 状态): -```sh -[root@localhost rubik]# kubectl get pods -A | grep rubik -NAMESPACE NAME READY STATUS RESTARTS AGE -... -kube-system rubik-agent-76ft6 1/1 Running 0 4s -... -``` + ```sh + [root@localhost rubik]# kubectl get pods -A | grep rubik + NAMESPACE NAME READY STATUS RESTARTS AGE + ... + kube-system rubik-agent-76ft6 1/1 Running 0 4s + ... + ``` ## 常用配置说明 -通过以上方式部署的 rubik 将以默认配置启动,用户可以根据实际需要修改 rubik 配置,可通过修改 rubik-daemonset.yaml 文件中的 config.json 段落内容后重新部署 rubik daemonset 实现。以下介绍几个常见配置,其他配置详见 [配置文档](./配置文档.md)。 +通过以上方式部署的 rubik 将以默认配置启动,用户可以根据实际需要修改 rubik 配置,可通过修改 rubik-daemonset.yaml 文件中的 config.json 段落内容后重新部署 rubik daemonset 实现。以下介绍几个常见配置,其他配置详见 [配置文档](./configuration.md)。 ### Pod 绝对抢占特性 @@ -124,7 +124,7 @@ kube-system rubik-agent-76ft6 1/1 Running ... ``` -> ![](./figures/icon-note.gif) **说明**: +> [!NOTE]说明 > > 优先级配置仅支持Pod由在线切换为离线,不允许由离线切换为在线。 diff --git a/docs/zh/docs/rubik/overview.md b/docs/zh/docs/cloud/hybrid_deployment/rubik/overview.md similarity index 81% rename from docs/zh/docs/rubik/overview.md rename to docs/zh/docs/cloud/hybrid_deployment/rubik/overview.md index d9fca47da..54229a3f8 100644 --- a/docs/zh/docs/rubik/overview.md +++ b/docs/zh/docs/cloud/hybrid_deployment/rubik/overview.md @@ -9,13 +9,13 @@ rubik 容器调度在业务混合部署的场景下,根据 QoS 分级,对资 rubik 当前支持如下特性: - [preemption 绝对抢占](./modules.md#preemption-绝对抢占) - - [CPU绝对抢占](./modules.md#cpu绝对抢占) - - [内存绝对抢占](./modules.md#内存绝对抢占) + - [CPU绝对抢占](./modules.md#cpu绝对抢占) + - [内存绝对抢占](./modules.md#内存绝对抢占) - [dynCache 访存带宽和LLC限制](./modules.md#dyncache-访存带宽和llc限制) - [dynMemory 内存异步分级回收](./modules.md#dynmemory-内存异步分级回收) - [支持弹性限流](./modules.md#支持弹性限流) - - [quotaBurst 支持弹性限流内核态解决方案](./modules.md#quotaburst-内核态解决方案) - - [quotaTurbo 支持弹性限流用户态解决方案](./modules.md#quotaturbo-用户态解决方案) + - [quotaBurst 支持弹性限流内核态解决方案](./modules.md#quotaburst-内核态解决方案) + - [quotaTurbo 支持弹性限流用户态解决方案](./modules.md#quotaturbo-用户态解决方案) - [ioCost 支持iocost对IO权重控制](./modules.md#iocost-支持iocost对io权重控制) - [PSI 支持基于PSI指标的干扰检测](./modules.md#psi-支持基于psi指标的干扰检测) - [CPU驱逐水位线控制](./modules.md#cpu驱逐水位线控制) diff --git a/docs/zh/docs/cloud/kmesh/kemsh/_toc.yaml b/docs/zh/docs/cloud/kmesh/kemsh/_toc.yaml new file mode 100644 index 000000000..7e1623fa8 --- /dev/null +++ b/docs/zh/docs/cloud/kmesh/kemsh/_toc.yaml @@ -0,0 +1,14 @@ +label: Kmesh用户指南 +isManual: true +description: openEuler系统高性能服务网格数据面软件 +sections: + - label: 概述 + href: ./overview.md + - label: 认识Kmesh + href: ./getting_to_know_kmesh.md + - label: 安装与部署 + href: ./installation_and_deployment.md + - label: 使用方法 + href: ./usage.md + - label: 附录 + href: ./appendixes.md diff --git "a/docs/zh/docs/Kmesh/\351\231\204\345\275\225.md" b/docs/zh/docs/cloud/kmesh/kemsh/appendixes.md similarity index 100% rename from "docs/zh/docs/Kmesh/\351\231\204\345\275\225.md" rename to docs/zh/docs/cloud/kmesh/kemsh/appendixes.md diff --git a/docs/zh/docs/Kmesh/figures/kmesh-arch.png b/docs/zh/docs/cloud/kmesh/kemsh/figures/kmesh-arch.png similarity index 100% rename from docs/zh/docs/Kmesh/figures/kmesh-arch.png rename to docs/zh/docs/cloud/kmesh/kemsh/figures/kmesh-arch.png diff --git "a/docs/zh/docs/Kmesh/\350\256\244\350\257\206Kmesh.md" b/docs/zh/docs/cloud/kmesh/kemsh/getting_to_know_kmesh.md similarity index 99% rename from "docs/zh/docs/Kmesh/\350\256\244\350\257\206Kmesh.md" rename to docs/zh/docs/cloud/kmesh/kemsh/getting_to_know_kmesh.md index 0acd0e9a1..d82f45f67 100644 --- "a/docs/zh/docs/Kmesh/\350\256\244\350\257\206Kmesh.md" +++ b/docs/zh/docs/cloud/kmesh/kemsh/getting_to_know_kmesh.md @@ -12,7 +12,6 @@ * 底噪开销大 istio中,每个sidecar软件占用内存50M+,CPU默认独占2 core,对于大规模集群底噪开销太大,降低了业务容器的部署密度 - Kmesh基于可编程内核,将网格流量治理下沉OS,数据路径3跳->1跳,大幅提升网格数据面的时延性能,帮助业务快速创新。 ## 架构 @@ -37,4 +36,3 @@ Kmesh的主要部件包括: * kmesh-probe: 观测运维探针,提供端到端观测能力 - diff --git "a/docs/zh/docs/Kmesh/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" b/docs/zh/docs/cloud/kmesh/kemsh/installation_and_deployment.md similarity index 94% rename from "docs/zh/docs/Kmesh/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" rename to docs/zh/docs/cloud/kmesh/kemsh/installation_and_deployment.md index 4c74a2488..9f183eaf8 100644 --- "a/docs/zh/docs/Kmesh/\345\256\211\350\243\205\344\270\216\351\203\250\347\275\262.md" +++ b/docs/zh/docs/cloud/kmesh/kemsh/installation_and_deployment.md @@ -2,7 +2,7 @@ ## 软件要求 -* 操作系统:openEuler 23.09 +* 操作系统:openEuler 24.03 LTS SP1 ## 硬件要求 @@ -10,7 +10,7 @@ ## 环境准备 -* 安装openEuler系统,安装方法参考 《[安装指南](../Installation/installation.md)》。 +* 安装openEuler系统,安装方法参考 《[安装指南](../../../Installation/installation.md)》。 * 安装Kmesh需要使用root权限。 @@ -33,6 +33,7 @@ ### 集群启动模式 启动前,先进行配置修改,设置集群中控制面程序ip信息(如istiod ip地址),操作如下: + ```json "clusters": [ { @@ -64,6 +65,7 @@ 启动前,修改kmesh.service,选择需要使用的功能选项。 使用流量编排功能,操作如下: + ```shell # 选择-enable-kmesh,禁用ads开关 [root@openEuler ~]# vim /usr/lib/systemd/system/kmesh.service @@ -72,6 +74,7 @@ ExecStart=/usr/bin/kmesh-daemon -enable-kmesh -enable-ads=false ``` 使用网格加速功能,操作如下: + ```shell # 选择-enable-mda选项,禁用ads开关 [root@openEuler ~]# vim /usr/lib/systemd/system/kmesh.service @@ -79,7 +82,7 @@ ExecStart=/usr/bin/kmesh-daemon -enable-mda -enable-ads=false [root@openEuler ~]# systemctl daemon-reload ``` -Kmesh服务启动时会调用kmesh-daemon程序,具体使用方式可以参考[kmesh-daemon使用](./使用方法.md)。 +Kmesh服务启动时会调用kmesh-daemon程序,具体使用方式可以参考[kmesh-daemon使用](./usage.md)。 ### 启动Kmesh @@ -96,4 +99,3 @@ Kmesh服务启动时会调用kmesh-daemon程序,具体使用方式可以参考 # 停止Kmesh服务 [root@openEuler ~]# systemctl stop kmesh.service ``` - diff --git a/docs/zh/docs/Kmesh/Kmesh.md b/docs/zh/docs/cloud/kmesh/kemsh/overview.md similarity index 100% rename from docs/zh/docs/Kmesh/Kmesh.md rename to docs/zh/docs/cloud/kmesh/kemsh/overview.md diff --git "a/docs/zh/docs/Kmesh/\344\275\277\347\224\250\346\226\271\346\263\225.md" b/docs/zh/docs/cloud/kmesh/kemsh/usage.md similarity index 100% rename from "docs/zh/docs/Kmesh/\344\275\277\347\224\250\346\226\271\346\263\225.md" rename to docs/zh/docs/cloud/kmesh/kemsh/usage.md diff --git a/docs/zh/docs/cloud/nestos/nestos/_toc.yaml b/docs/zh/docs/cloud/nestos/nestos/_toc.yaml new file mode 100644 index 000000000..76699de8b --- /dev/null +++ b/docs/zh/docs/cloud/nestos/nestos/_toc.yaml @@ -0,0 +1,10 @@ +label: NestOS用户指南 +isManual: true +description: NestOS是为容器化设计的轻量级操作系统,采用双分区院子更新,确保安全可靠 +sections: + - label: 概述 + href: ./overview.md + - label: NestOS For Container用户指南 + href: ./nestos_for_container.md + - label: 功能特性描述 + href: ./feature_description.md diff --git a/docs/zh/docs/cloud/nestos/nestos/feature_description.md b/docs/zh/docs/cloud/nestos/nestos/feature_description.md new file mode 100644 index 000000000..15b8ad381 --- /dev/null +++ b/docs/zh/docs/cloud/nestos/nestos/feature_description.md @@ -0,0 +1,105 @@ +# 功能特性描述 + +## 容器技术 + +NestOS通过容器化 (containerized) 的运算环境向应用程序提供运算资源,应用程序之间共享系统内核和资源,但是彼此之间又互不可见。这意味着应用程序将不会再被直接安装到操作系统中,而是通过 容器引擎(Docker、Podman、iSulad等) 运行在容器中。大大降低了操作系统、应用程序及运行环境之间的耦合度。相对于传统的应用程序部署部署方式而言,在NestOS 集群中部署应用程序更加灵活便捷,应用程序运行环境之间的干扰更少,而且操作系统自身的维护也更加容易。 + +## rpm-ostree + +### 系统更新 + +rpm-ostree是一种镜像/包混合系统,可以看成是rpm和ostree的合体。一方面它提供了基于rpm的软件包安装管理方式,另一方面它提供了基于ostree的操作系统更新升级。rpm-ostree将这两种操作都视为对操作系统的更新,每次对系统的更新都像rpm-ostree在提交“Transaction-事务”,从而确保更新全部成功或全部失败,并且允许在更新系统后回滚到更新前的状态。 + +rpm-ostree在更新操作系统的时候会有2个bootable区域,分别为主动分区和被动分区,对系统的更新升级在被动分区进行,在重启操作系统主动分区和被动分区转换后才生效。如果软件安装或升级出现问题,通过rpm-ostree会使NestOS回滚到先前的状态。NestOS的“/ostree/”和“/boot/”目录是ostree Repository环境,通过该目录可以查看当前boot使用的哪个ostree。 + +### 只读文件系统 + +在rpm-ostree的文件系统布局中,只有/etc和/var是唯一可写的目录,/var中的任何数据不会被触及,而是在升级过程中共享。在系统升级的过程中采用新的缺省值/etc,并将更改添加到顶部。这意味着升级将会接收/etc中新的默认文件,这是一个非常关键的特性。 + +在通用操作系统中,/var目录下的部分文件采用“/var to tmpfiles.d”的处理策略,即系统通过systemd-tmpfile-setup.service读取/usr/lib/tmpfiles.d/目录下的conf文件,完成/var目录下文件夹和空白文件的创建,/usr/lib/tmpfiles.d/目录下的conf文件全部由相关rpm包提供。在NestOS中,/var目录不涉及rpm-ostree的commit分层,rpm-ostree各个commit 分层都会共享一个/var目录,但是/var目录下的文件会与ostree事务更新模型冲突,在安装软件包时rpm-ostree会将该文件删除。/var目录下的内容完全依赖“/var to tmpfiles.d”来生成,因此NestOS的/usr/lib/tmpfiles.d/目录下,除了部分rpm提供出的conf外,还存在由rpm-ostree在安装XXX软件包时生成的pkg-XXX.conf文件(即使XXX已经提供了conf文件),该文件记录了XXX软件包提供的/var下的文件夹,不涉及文件(文件在rpm-ostree安装包时已经删除)。当用户需要对rpm包提供的/var下的文件夹进行操作时,如删除某文件夹,简单的使用rm命令只能暂时删除,当系统重启后,该文件夹依旧存在,只有修改pkg-XXX.conf文件才能完成永久删除。 + +ostree旨在可以并行安装多个独立操作系统的版本,ostree依赖于一个新的ostree 目录,该目录实际上可以并行安装在现有的操作系统或者是占据物理/root目录的发行版本中。每台客户机和每组部署上都存储在 /ostree/deploy/STATEROOT/CHECKSUM 上,而且还有一个ostree Repository存储在 /ostree/repo 中。每个部署主要由一组指向存储库的硬链接组成,这意味着每个版本都进行了重复数据的删除并且升级过程中只消耗了与新文件成比例的磁盘空间加上一些恒定的开销。 + +ostree模型强调的是OS只读内容保存在 /usr 中,它附带了⽤于创建Linux只读安装以防止无意损坏的代码,对于给定的操作系统,每个部署之间都有一个 /var 共享的可供读写的目录。ostree核心代码不触及该目录的内容,如何管理和升级状态取决于每个操作系统中的代码。 + +### 系统扩展 + +出于安全性和可维护性的考虑,NestOS让基础镜像尽可能保持小巧和精简。但是在某些情况下,需要向基本操作系统本⾝添加软件,例如驱动软件,VPN等等,因为它们比较难容器化。这些包拓展了操作系统的功能,为此,rpm-ostree将这些包视为拓展,而不是仅仅在用户运行时提供。也就是说,目前NestOS对于实际安装哪些包没有限制,默认情况下,软件包是从openEuler仓库下载的。 + +要对软件包进行分层,需要重新编写一个systemd单元来执行rpm-ostree命令安装所需要的包,所做的更改应⽤于新部署,重新启动才能⽣效。 + +## nestos-installer + +nestos-installer是一个帮助安装Nestos的程序,它可以执行以下操作: + +(1)安装操作系统到一个目标磁盘,可使用Ignition和首次引导内核参数对其进行自定义(nestos-installer install) + +(2)下载并验证各种云平台、虚拟化或者裸机平台的操作系统映像(nestos-installer download) + +(3)列出可供下载的nestos镜像(nestos-installer list-stream) + +(4)在ISO中嵌入一个Ignition配置,以自定义地从中启动操作系统(nestos-installer iso ignition) + +(5)将Ignition配置包装在initd映像中,该映像可以被加入到PXE initramfs中以自定义从中启动的操作系统(nestos-installer pxe ignition) + +## zincati + +Zincati是NestOS⾃动更新的代理,它作为Cincinnati服务的客户端,负责监听NestOS版本变化并调用rpm-ostree进行⾃动更新。Zincati有如下特点: + +(1)支持自动更新代理,支持分阶段推出 + +(2)通过toml配置文件支持运行时自定义,用户自定义配置文件可覆盖默认配置 + +(3)多种更新策略 + +(4)通过维护窗口每周在特定时间范围内进行更新的策略 + +(5)收集和导出本地运行的zincati内部指标,可提供给Prometheus以减轻跨大量节点的监控任务 + +(6)具有可配置优先级的日志记录 + +(7)通过Cincinnati协议支持复杂的更新图 + +(8)通过外部锁管理器支持集群范围的重启编排 + +## 系统初始化(Ignition) + +Ignition 是一个与分发无关的配置实用程序,不仅用于安装,还读取配置文件(JSON 格式)并根据该配置初始化NestOS。可配置的组件包括存储和文件系统、systemd单元和用户。 + +Ignition仅在系统第一次引导期间运行一次(在initramfs中)。因为 Ignition 在启动过程的早期运行,所以它可以在用户空间开始启动之前重新分区磁盘、格式化文件系统、创建用户和写入文件。 因此,systemd 服务在 systemd 启动时已经写入磁盘,从而加快了启动速度。 + +(1)Ignition 仅在第一次启动时运行 + +Ignition 旨在用作配置工具,而不是配置管理工具。 Ignition 鼓励不可变的基础设施,其中机器修改要求用户丢弃旧节点并重新配置机器。 + +(2)Ignition不是在任何情况下都可以完成配置 + +Ignition 执行它需要的操作,使系统与 Ignition 配置中描述的状态相匹配。 如果由于任何原因 Ignition 无法提供配置要求的确切机器,Ignition 会阻止机器成功启动。例如,如果用户想要获取托管在[foo.conf](https://example.com/foo.conf)的文档并将其写入磁盘,如果无法解析给定的 URL,Ignition 将阻止机器启动。 + +(3)Ignition只是声明性配置 + +Ignition配置只描述了系统的状态,没有列出 Ignition 应该采取的一系列步骤。 + +Ignition 配置不允许用户提供任意逻辑(包括 Ignition 运行的脚本)。用户只需描述哪些文件系统必须存在、哪些文件必须创建、哪些用户必须存在等等。任何进一步的定制都必须使用由 Ignition 创建的 systemd 服务。 + +(4)Ignition配置不应手写 + +Ignition 配置被设计为人类可读但难以编写,是为了阻止用户尝试手动编写配置。可以使用Butane或类似工具生成或转化生成Ignition 配置。 + +## Afterburn + +Afterburn是类似于云平台一样的一次性代理,可以用于与特定的提供者的元数据端点进行交互,通常和Ignition结合使用。 + +Afterburn包含了很多可以在实例生命周期中不同时间段运行的模块。下面是特定的平台可能在第一次启动时在initramfs中运行的服务: + +(1)设置本地主机名 + +(2)加入网络命令行参数 + +以下的功能是在一定条件下,作为systemd服务单元在一些平台上才能使用的: + +(1)为本地系统用户安装公共SSH密钥 + +(2)从实例元数据中检索属性 + +(3)给提供者登记以便报道成功的启动或实例供应 diff --git a/docs/zh/docs/cloud/nestos/nestos/figures/figure1.png b/docs/zh/docs/cloud/nestos/nestos/figures/figure1.png new file mode 100644 index 0000000000000000000000000000000000000000..388a038273b5bb428c2f961d4241754fc2edc982 GIT binary patch literal 252471 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

-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 5G + +#### 2.1.2 构建NestOS环境要求 + +| **类别** | **要求** | +| :------: | :---------------: | +| CPU | 4vcpu | +| 内存 | 4GB | +| 硬盘 | 剩余可用空间>10GB | +| 架构 | x86_64或aarch64 | +| 其他 | 支持kvm | + +### 2.2 部署配置要求 + +| **类别** | **推荐配置** | **最低配置** | +| :------: | :-------------: | :----------: | +| CPU | >4vcpu | 1vcpu | +| 内存 | >4GB | 512M | +| 硬盘 | >20GB | 10GB | +| 架构 | x86_64、aarch64 | / | + +## 3. 快速使用 + +### 3.1 快速构建 + +1)获取nestos-assembler容器镜像 + +推荐使用基于openEuler的base镜像,更多说明请参考6.1 + +```sh +docker pull hub.oepkgs.net/nestos/nestos-assembler:24.03-LTS.20240903.0-aarch64 +``` + +2)编写名为nosa的脚本并存放至/usr/local/bin,并赋予可执行权限 + +```sh +#!/bin/bash + +sudo docker run --rm -it --security-opt label=disable --privileged --user=root \ + -v ${PWD}:/srv/ --device /dev/kvm --device /dev/fuse --network=host \ + --tmpfs /tmp -v /var/tmp:/var/tmp -v /root/.ssh/:/root/.ssh/ -v /etc/pki/ca-trust/:/etc/pki/ca-trust/ \ + ${COREOS_ASSEMBLER_CONFIG_GIT:+-v $COREOS_ASSEMBLER_CONFIG_GIT:/srv/src/config/:ro} \ + ${COREOS_ASSEMBLER_GIT:+-v $COREOS_ASSEMBLER_GIT/src/:/usr/lib/coreos-assembler/:ro} \ + ${COREOS_ASSEMBLER_CONTAINER_RUNTIME_ARGS} \ + ${COREOS_ASSEMBLER_CONTAINER:-nestos-assembler:your_tag} "$@" +``` + +注意修改COREOS_ASSEMBLER_CONTAINER 的值为本地环境中实际的nestos-assembler容器镜像。 + +3)获取nestos-config + +使用nosa init 初始化构建工作目录,拉取构建配置,创建工作目录nestos-build,在该目录下执行如下命令 + +```sh +nosa init https://gitee.com/openeuler/nestos-config +``` + +4)调整构建配置 + +nestos-config提供默认构建配置,无需额外操作。如需调整,请参考第5章。 + +5)NestOS镜像构建 + +```sh +# 拉取构建配置、更新缓存 +nosa fetch +# 生成根文件系统、qcow2及OCI镜像 +nosa build +# 生成live iso及PXE镜像 +nosa buildextend-metal +nosa buildextend-metal4k +nosa buildextend-live +``` + +详细构建及部署流程请参考第6章。 + +### 3.2 快速部署 + +以NestOS ISO镜像为例,启动进入live环境后,执行如下命令根据向导提示完成安装: + +```sh +sudo installnestos +``` + +其他部署方式请参考第8章。 + +## 4. 系统默认配置 + +| **选项** | **默认配置** | +| :-------------: | :---------------------: | +| docker服务 | 默认disable,需主动开启 | +| ssh服务安全策略 | 默认仅支持密钥登录 | + +## 5. 构建配置nestos-config + +### 5.1 获取配置 + +nestos-config的仓库地址为 + +### 5.2 配置目录结构说明 + +| **目录/****文件** | **说明** | +| :---------------: | :--------------------: | +| live/* | 构建liveiso的引导配置 | +| overlay.d/* | 自定义文件配置 | +| tests/* | 用户自定义测试用例配置 | +| *.repo | repo源配置 | +| .yaml,manifests/ | 主要构建配置 | + +### 5.3 主要文件解释 + +#### 5.3.1 repo文件 + +目录下的repo文件可用来配置用于构建nestos的软件仓库。 + +#### 5.3.2 yaml配置文件 + +目录下的yaml文件主要是提供nestos构建的各种配置,详见5.4章节。 + +### 5.4 主要字段解释 + +| **字段名称** | **作用** | +| :------------------------------------------ | ------------------------------------------------------------ | +| packages-aarch64、packages-x86_64、packages | 软件包集成范围 | +| exclude-packages | 软件包集成黑名单 | +| remove-from-packages | 从指定软件包删除文件(夹) | +| remove-files | 删除特定文件(夹) | +| extra-kargs | 额外内核引导参数 | +| initramfs-args | initramfs构建参数 | +| postprocess | 文件系统构建后置脚本 | +| default-target | 配置default-target,如 multi-user.target | +| rolij.name、releasever | 镜像相关信息(镜像名称、版本) | +| lockfile-repos | 构建可使用的仓库名列表,与5.3.1 介绍的repo文件中的仓库名需要对应 | + +### 5.5 用户可配置项说明 + +#### 5.5.1 repo源配置 + +1)在配置目录编辑repo文件,将内容修改为期望的软件仓库 + +```sh +$ vim nestos-pool.repo +[repo_name_1] +Name=xxx +baseurl = https://ip.address/1 +enabled = 1 + +[repo_name_2] +Name=xxx +baseurl = https://ip.address/2 +enabled = 1 +``` + +2)修改yaml配置文件中的lockfile-repo字段内容为相应的仓库名称列表 + +注:仓库名称为repo文件中[]内的内容,不是name字段内容 + +```sh +$ vim manifests/rpmlist.yaml +修改lockfile-repo字段内容为 +lockfile-repos: +- repo_name_1 +- repo_name_2 +``` + +#### 5.5.2 软件包裁剪 + +修改packages、packages-aarch64、packages-x86_64字段,可在其中添加或删除软件包。 + +如下所示,在package字段中添加了nano,构建安装后系统中会有nano 。 + +```sh +$ vim manifests/rpmlist.yaml +packages: +- bootupd +... +- authselect +- nano +... +packages-aarch64: +- grub2-efi-aa64 +packages-x86_64: +- microcode_ctl +- grub2-efi-x64 +``` + +#### 5.5.3 自定义镜像名称与版本号 + +修改yaml文件中的releasever及rolij.name 字段,这些字段分别控制镜像的版本号及名称。 + +```sh +$ vim manifest.yaml + +releasever: "1.0" +rojig: + license: MIT + name: nestos + summary: NestOS stable +``` + +如上配置,构建出的镜像格式为:nestos-1.0.$(date "+%Y%m%d").$build_num.$type,其中build_num为构建次数,type为类型后缀。 + +#### 5.5.4 自定义镜像中的release信息 + +正常release信息是由我们集成的release包(如openeuler-release)提供的,但是我们也可以通过添加postprocess脚本对/etc/os-release文件进行重写操作。 + +```sh +$ vim manifests/ system-configuration.yaml +在postprocess添加如下内容,若已存在相关内容,则只需修改对应release信息即可 +postprocess: + - | + #!/usr/bin/env bash + set -xeuo pipefail + export OSTREE_VERSION="$(tail -1 /etc/os-release)" + date_now=$(date "+%Y%m%d") + echo -e 'NAME="openEuler NestOS"\nVERSION="24.03-LTS"\nID="openeuler"\nVERSION_ID="24.03-LTS"\nPRETTY_NAME="NestOS"\nANSI_COLOR="0;31"\nBUILDID="'${date_now}'"\nVARIANT="NestOS"\nVARIANT_ID="nestos"\n' > /usr/lib/os-release + echo -e $OSTREE_VERSION >> /usr/lib/os-release + cp -f /usr/lib/os-release /etc/os-release +``` + +#### 5.5.5 成自定义文件 + +在overlay.d目录下每个目录进行自定义文件的添加和修改,这种操作可以实现构建镜像内容的自定义。 + +```sh +mkdir -p overlay.d/15nestos/etc/test/test.txt +echo "This is a test message !" > overlay.d/15nestos/etc/test/test.txt +``` + +使用如上配置进行镜像构建,启动构建出的镜像,查看系统中对应文件内容即为我们上述自定义添加的内容。 + +```sh +[root@nosa-devsh ~]# cat /etc/test/test.txt +This is a test message ! +``` + +## 6.构建流程 + +NestOS采用容器化的方式将构建工具链集成为一个完整的容器镜像,称为NestOS-assembler。 + +NestOS提供构建NestOS-assembler容器镜像能力,方便用户使用。使用该容器镜像,用户可在任意linux发行版环境中构建多种形态NestOS镜像(例如在现有CICD环境中使用),也可对构建发布件进行管理、调试和自动化测试。 + +### 6.1 制作构建工具NestOS-assembler容器镜像 + +#### 6.1.1 前置步骤 + +1)准备容器base镜像 + +NestOS-assembler容器镜像需要基于支持yum/dnf软件包管理器的base镜像制作,理论上可由任意发行版base镜像制作,但为最大程度减少软件包兼容性问题,仍推荐使用基于openEuler的base镜像。 + +2)安装必要软件包 + +安装必备依赖docker + +```sh +dnf install -y docker +``` + +3)克隆nestos-assembler源代码仓库 + +```sh +git clone --depth=1 --single-branch https://gitee.com/openeuler/nestos-assembler.git +``` + +#### 6.1.2 构建NestOS-assembler容器镜像 + +使用openEuler容器镜像作为base镜像,使用以下指令构建: + +```sh +cd nestos-assembler/ +docker build -f Dockerfile . -t nestos-assembler:your_tag +``` + +### 6.2 使用NestOS-assembler容器镜像 + +#### 6.2.1 前置步骤 + +1)准备nestos-assembler容器镜像 + +参考6.1章节构建nestos-assembler容器镜像后,可通过私有化部署容器镜像仓库对该容器镜像进行管理和分发。请确保构建NestOS前,拉取适当版本的nestos-assembler容器镜像至当前环境。 + +2)编写使用脚本nosa + +因NestOS构建过程需多次调用nestos-assembler容器镜像执行不同命令,同时需配置较多参数,为简化用户操作,可编写nosa命令脚本,可参见3.1快速构建部分。 + +#### 6.2.2 使用说明 + +构建工具命令一览 + +| **命令** | **功能说明** | +| :-------------------: | :-------------------------------------------------: | +| init | 初始化构建环境及构建配置,详见6.3 | +| fetch | 根据构建配置获取最新软件包至本地缓存 | +| build | 构建ostree commit,是构建NestOS的核心命令 | +| run | 直接启动一个qemu实例,默认使用最新构建版本 | +| prune | 清理历史构建版本,默认保留最新3个版本 | +| clean | 删除全部构建发布件,添加--all参数时同步清理本地缓存 | +| list | 列出当前构建环境中存在的版本及发布件 | +| build-fast | 基于前次构建记录快速构建新版本 | +| push-container | 推送容器镜像发布件至容器镜像仓库 | +| buildextend-live | 构建支持live环境的ISO发布件及PXE镜像 | +| buildextend-metal | 构建裸金属raw发布件 | +| buildextend-metal4k | 构建原生4K模式的裸金属raw发布件 | +| buildextend-openstack | 构建适用于openstack平台的qcow2发布件 | +| buildextend-qemu | 构建适用于qemu的qcow2发布件 | +| basearch | 获得当前架构信息 | +| compress | 压缩发布件 | +| kola | 自动化测试框架 | +| kola-run | 输出汇总结果的自动化测试封装 | +| runc | 以容器方式挂载当前构建根文件系统 | +| tag | 管理构建工程tag | +| virt-install | 通过virt-install为指定构建版本创建实例 | +| meta | 管理构建工程元数据 | +| shell | 进入nestos-assembler容器镜像 | + +### 6.3 准备构建环境 + +NestOS构建环境需要独立的空文件夹作为工作目录,且支持多次构建,保留、管理历史构建版本。创建构建环境前需首先准备构建配置(参考第5章)。 + +建议一份独立维护的构建配置对应一个独立的构建环境,即如果您希望构建多个不同用途的NestOS,建议同时维护多份构建配置及对应的构建环境目录,这样可以保持不同用途的构建配置独立演进和较为清晰的版本管理。 + +#### 6.3.1 初始化构建环境 + +进入待初始化工作目录,执行如下命令即可初始化构建环境: + +```sh +nosa init https://gitee.com/openeuler/nestos-config +``` + +仅首次构建时需初始化构建环境,后续构建在不对构建配置做出重大更改的前提下,可重复使用该构建环境。 + +#### 6.3.2 构建环境说明 + +初始化完成后,工作目录创建出如下文件夹: + +**builds:**构建发布件及元数据存储目录,latest子目录软链接指向最新构建版本。 + +**cache:**缓存目录,根据构建配置中的软件源及软件包列表拉取至本地,历史构建NestOS的ostree repo均缓存于此目录。 + +**overrides:**构建过程希望附加到最终发布件rootfs中的文件或rpm包可置于此目录。 + +**src:**构建配置目录,存放nestos-config相关内容。 + +**tmp:**临时目录,构建过程、自动化测试等场景均会使用该目录作为临时目录,构建发生异常时可在此处查看虚拟机命令行输出、journal日志等信息。 + +### 6.4 构建步骤 + +NestOS构建主要步骤及参考命令如下: + +![figure2](./figures/figure2.png) + +#### 6.4.1 首次构建 + +首次构建时需初始化构建环境,详见6.3。 + +非首次构建可直接使用原构建环境,可通过nosa list查看当前构建环境已存在版本及对应发布件。 + +#### 6.4.2 更新构建配置及缓存 + +初始化构建环境后,执行如下命令更新构建配置及缓存: + +```sh +nosa fetch +``` + +该步骤初步校验构建配置是否可用,并通过配置的软件源拉取软件包至本地缓存。当构建配置发生变更或单纯希望更新软件源中最新版本软件包,均需要重新执行该步骤,否则可能导致构建失败或不符合预期。 + +当构建配置发生较大变更,希望清空本地缓存重新拉取时,需执行如下命令: + +```sh +nosa clean --all +``` + +#### 6.4.3 构建不可变根文件系统 + +NestOS不可变操作系统的核心是基于ostree技术的不可变根文件系统,执行如下步骤构建ostree文件系统: + +```sh +nosa build +``` + +build命令默认会生成ostree文件系统和OCI归档文件,您也可以在执行命令时同步添加qemu、metal、metal4k中的一个或多个,同步构建发布件,等效于后续继续执行buildextend-qemu、buildextend-metal和buildextend-metal4k命令。 + +```sh +nosa build qemu metal metal4k +``` + +如您希望在构建NestOS时,添加自定义文件或rpm包,请在执行build命令前将相应文件放入构建环境overrides目录下rootfs/或rpm/文件夹。 + +#### 6.4.4 构建各类发布件 + +build命令执行完毕后,可继续执行buildextend-XXX命令用于构建各类型发布件,具体介绍如下: + +- 构建qcow2镜像 + +```sh +nosa buildextend-qemu +``` + +- 构建带live环境的ISO镜像或PXE启动组件 + +```sh +nosa buildextend-metal +nosa buildextend-metal4k +nosa buildextend-live +``` + +- 构建适用于openstack环境的qcow2镜像 + +```sh +nosa buildextend-openstack +``` + +- 构建适用于容器镜像方式更新的容器镜像 + +执行nosa build命令构建ostree文件系统时,会同时生成ociarchive格式镜像,该镜像可直接执行如下命令推送到本地或远程镜像仓库,无需执行其他构建步骤。 + +```sh +nosa push-container [container-image-name] +``` + + 远程镜像仓库地址需附加到推送容器镜像名称中,且除隔离镜像tag外,不得出现":"。如未检测到":",该命令会自动生成{latest_build}-{arch}格式的tag。示例如下: + +```sh +nosa push-container registry.example.com/nestos:1.0.20240903.0-x86_64 +``` + +该命令支持以下可选参数: + +--authfile :指定登录远程镜像仓库的鉴权文件 + +--insecure:如远程镜像仓库采用自签名证书等场景,添加该参数可不校验SSL/TLS协议 + +--transport:指定目标镜像推送协议,默认为docker,具体支持项及说明如下: + +​ containers-storage:推送至podman、crio等容器引擎本地存储目录 + +​ dir:推送至指定本地目录 + +​ docker:以docker API推送至私有或远端容器镜像仓库 + +​ docker-archive:等效于docker save导出归档文件,可供docker load使用 + +​ docker-daemon:推送至docker容器引擎本地存储目录 + +### 6.5 获取发布件 + +构建完毕后,发布件均生成于构建环境中如下路径: + +```sh +builds/{version}/{arch}/ +``` + +如您仅关心最新构建版本或通过CI/CD调用,提供latest目录软链接至最新版本目录,即: + +```sh +builds/latest/{arch}/ +``` + +为方便传输,您可以调用如下命令,压缩发布件体积: + +```sh +nosa compress +``` + +压缩后原文件会被移除,会导致部分调试命令无法使用,可以调用解压命令恢复原文件: + +```sh +nosa uncompress +``` + +### 6.6 构建环境维护 + +在构建NestOS环境前后,可能存在如下需求,可使用推荐的命令解决相应问题: + +#### 6.6.1 清理历史或无效构建版本,以释放磁盘空间 + +可以通过以下命令清理历史版本构建: + +```sh +nosa prune +``` + +也可删除当前构建环境中的全部发布件: + +```sh +nosa clean +``` + +如构建配置更换过软件源或历史缓存无保留价值,可彻底清理当前构建环境缓存: + +```sh +nosa clean --all +``` + +#### 6.6.2 临时运行构建版本实例,用于调试或确认构建正确 + +```sh +nosa run +``` + +可通过--qemu-image或--qemu-iso指定启动镜像地址,其余参数请参考nosa run --help说明。 + +实例启动后,构建环境目录会被挂载至/var/mnt/workdir,可通过构建环境目录 + +#### 6.6.3 运行自动化测试 + +```sh +nosa kola run +``` + +该命令会执行预设的测试用例,也可在其后追加测试用例名称,单独执行单条用例。 + +```sh +nosa kola testiso +``` + +该命令会执行iso或pxe live环境安装部署测试,可作为构建工程的冒烟测试。 + +#### 6.6.4 调试验证构建工具(NestOS-assembler) + +```sh +nosa shell +``` + +该命令可启动进入构建工具链容器的shell环境,您可以通过此命令验证构建工具链工作环境是否正常。 + +## 7. 部署配置 + +### 7.1 前言 + +在开始部署NestOS之前,了解和准备必要的配置是至关重要的。NestOS通过点火文件(ignition文件)提供了一系列灵活的配置选项,可以通过Butane工具进行管理,方便用户进行自动化部署和环境设置。 + +在本章节中,将详细的介绍Butane工具的功能和使用方法,并根据不同场景提供配置示例。这些配置将帮助您快速启动和运行NestOS,在满足应用需求的同时,确保系统的安全性和可靠性。此外,还会介绍如何自定义镜像,将点火文件预集成至镜像中,以满足特定应用场景的需求,从而实现高效的配置和部署NestOS。 + +### 7.2 Butane简介 + +Butane是一个用于将人类可读的YAML配置文件转换为NestOS点火文件(Ignition 文件)的工具。Butane工具简化了复杂配置的编写过程,允许用户以更易读的格式编写配置文件,然后将其转换为适合NestOS使用的JSON格式。 + +NestOS对Butane进行了适配修改,新增nestos变体支持和配置规范版本v1.0.0,对应的点火(ignition)配置规范为v3.3.0,确保了配置的稳定性和兼容性。 + +### 7.3 Butane使用 + +安装butane软件包 + +```sh +dnf install butane +``` + +编辑example.yaml并执行以下指令将其转换为点火文件example.ign,其中关于yaml文件的编写,将在后续展开: + +```sh +butane example.yaml -o example.ign -p +``` + +### 7.4 支持的功能场景 + +以下配置示例(example.yaml)简述了NestOS主要支持的功能场景和进阶使用方法。 + +#### 7.4.1 设置用户和组并配置密码/密钥 + +```conf +variant: nestos +version: 1.0.0 +passwd: + users: + - name: nest + ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDHn2eh... + - name: jlebon + groups: + - wheel + ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQDC5QFS... + - ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIIveEaMRW... + - name: miabbott + groups: + - docker + - wheel + password_hash: $y$j9T$aUmgEDoFIDPhGxEe2FUjc/$C5A... + ssh_authorized_keys: + - ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDTey7R... +``` + +#### 7.4.2 文件操作——以配置网卡为例 + +```conf +variant: nestos +version: 1.0.0 +storage: + files: + - path: /etc/NetworkManager/system-connections/ens2.nmconnection + mode: 0600 + contents: + inline: | + [connection] + id=ens2 + type=ethernet + interface-name=ens2 + [ipv4] + address1=10.10.10.10/24,10.10.10.1 + dns=8.8.8.8; + dns-search= + may-fail=false + method=manual +``` + +#### 7.4.3 创建目录、文件、软连接并配置权限 + +```conf +variant: nestos +version: 1.0.0 +storage: + directories: + - path: /opt/tools + overwrite: true + files: + - path: /var/helloworld + overwrite: true + contents: + inline: Hello, world! + mode: 0644 + user: + name: dnsmasq + group: + name: dnsmasq + - path: /opt/tools/transmogrifier + overwrite: true + contents: + source: https://mytools.example.com/path/to/archive.gz + compression: gzip + verification: + hash: sha512-00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000 + mode: 0555 + links: + - path: /usr/local/bin/transmogrifier + overwrite: true + target: /opt/tools/transmogrifier + hard: false +``` + +#### 7.4.4 编写systemd服务——以启停容器为例 + +```conf +variant: nestos +version: 1.0.0 +systemd: + units: + - name: hello.service + enabled: true + contents: | + [Unit] + Description=MyApp + After=network-online.target + Wants=network-online.target + + [Service] + TimeoutStartSec=0 + ExecStartPre=-/bin/podman kill busybox1 + ExecStartPre=-/bin/podman rm busybox1 + ExecStartPre=/bin/podman pull busybox + ExecStart=/bin/podman run --name busybox1 busybox /bin/sh -c ""trap 'exit 0' INT TERM; while true; do echo Hello World; sleep 1; done"" + + [Install] + WantedBy=multi-user.target +``` + +### 7.5 点火文件预集成 + +NestOS构建工具链支持用户根据实际使用场景和需求定制镜像。在镜像制作完成后,nestos-installer还提供了针对镜像部署与应用等方面进行自定义的一系列功能,如嵌入点火文件、预分配安装位置、增删内核参数等功能,以下将针对主要功能进行介绍。 + +#### 7.5.1 点火文件预集成至ISO镜像 + +准备好NestOS的ISO镜像至本地;安装nestos-installer软件包;编辑example.yaml,并使用butane工具将其转换为ign文件,在这里,我们仅配置简单的用户名和密码(密码要求加密,示例中为qwer1234),内容如下: + +```conf +variant: nestos +version: 1.0.0 +passwd: + users: + - name: root + password_hash: "$1$root$CPjzNGH.NqmQ7rh26EeXv1" +``` + +将上述yaml转换为ign文件后,执行如下指令嵌入点火文件并指定目标磁盘位置,其中xxx.iso为准备至本地的NestOS ISO镜像: + +```bash +nestos-installer iso customize --dest-device /dev/sda --dest-ignition example.ign xxx.iso +``` + +使用该集成点火文件的ISO镜像进行安装时,NestOS会自动读取点火文件并安装至目标磁盘,待进度条完成度为100%后,自动进入安装好的NestOS环境,用户可根据ign文件配置的用户名和密码进入系统。 + +#### 7.5.2 点火文件预集成至PXE镜像 + +准备好NestOS的PXE镜像至本地,组件获取方式参考6.5【获取发布件】章节,其他步骤同上。 + +为了方便用户使用,nestos-installer也支持从ISO镜像中提取PXE组件的功能,执行如下指令,其中xxx.iso为保存至本地的NestOS ISO镜像: + +```sh +nestos-installer iso extract pxe xxx.iso +``` + +得到如下输出件: + +```txt +xxx-initrd.img +xxx-rootfs.img +xxx-vmlinuz +``` + +执行如下指令嵌入点火文件并指定目标磁盘位置: + +```conf +nestos-installer pxe customize --dest-device /dev/sda --dest-ignition example.ign xxx-initrd.img --output custom-initrd.img +``` + +根据使用PXE安装NestOS的方式,替换相应的xxx-initrd.img为custom-initrd.img。启动后NestOS会自动读取点火文件并安装至目标磁盘,待进度条完成度为100%后,自动进入安装好的NestOS环境,用户可根据ign文件配置的用户名和密码进入系统。 + +## 8. 部署流程 + +### 8.1 简介 + +NestOS支持多种部署平台及常见部署方式,当前主要支持qcow2、ISO与PXE三种部署方式。与常见通用OS部署相比,主要区别在于如何传入以ign文件为特征的自定义部署配置,以下各部分将会分别介绍。 + +### 8.2 使用qcow2镜像安装 + +#### 8.2.1 使用qemu创建qcow2实例 + +准备NestOS的qcow2镜像及相应点火文件(详见第7章),终端执行如下步骤: + +```sh +IGNITION_CONFIG="/path/to/example.ign" +IMAGE="/path/to/image.qcow2" +IGNITION_DEVICE_ARG="-fw_cfg name=opt/com.coreos/config,file=${IGNITION_CONFIG}" + +qemu-img create -f qcow2 -F qcow2 -b ${IMAGE} my-nestos-vm.qcow2 +``` + +aarch64环境执行如下命令: + +```sh +qemu-kvm -m 2048 -M virt -cpu host -nographic -drive if=virtio,file=my-nestos-vm.qcow2 ${IGNITION_DEVICE_ARG} -nic user,model=virtio,hostfwd=tcp::2222-:22 -bios /usr/share/edk2/aarch64/QEMU_EFI-pflash.raw +``` + +x86_64环境执行如下命令: + +```sh +qemu-kvm -m 2048 -M pc -cpu host -nographic -drive if=virtio,file=my-nestos-vm.qcow2 ${IGNITION_DEVICE_ARG} -nic user,model=virtio,hostfwd=tcp::2222-:22 +``` + +#### 8.2.2 使用virt-install创建qcow2实例 + +假设libvirt服务正常,网络默认采用default子网,绑定virbr0网桥,您可参考以下步骤创建NestOS实例。 + +准备NestOS的qcow2镜像及相应点火文件(详见第7章),终端执行如下步骤: + +```con +IGNITION_CONFIG="/path/to/example.ign" +IMAGE="/path/to/image.qcow2" +VM_NAME="nestos" +VCPUS="4" +RAM_MB="4096" +DISK_GB="10" +IGNITION_DEVICE_ARG=(--qemu-commandline="-fw_cfg name=opt/com.coreos/config,file=${IGNITION_CONFIG}") +``` + +**注意:使用virt-install安装,qcow2镜像及ign文件需指定绝对路径。** + +执行如下命令创建实例: + +```sh +virt-install --connect="qemu:///system" --name="${VM_NAME}" --vcpus="${VCPUS}" --memory="${RAM_MB}" --os-variant="kylin-hostos10.0" --import --graphics=none --disk="size=${DISK_GB},backing_store=${IMAGE}" --network bridge=virbr0 "${IGNITION_DEVICE_ARG[@]} +``` + +### 8.3 使用ISO镜像安装 + +准备NestOS的ISO镜像并启动。首次启动的NestOS ISO镜像会默认进入Live环境,该环境为易失的内存环境。 + +#### 8.3.1 通过nestos-installer安装向导脚本安装OS至目标磁盘 + +1)在NestOS的Live环境中,根据首次进入的打印提示,可输入以下指令,即可自动生成一份简易的点火文件并自动安装重启 + +```sh +sudo installnestos +``` + +2)根据终端提示信息依次输入用户名和密码; + +3)选择目标磁盘安装位置,可直接选择回车设置为默认项/dev/sda; + +4)执行完以上步骤后,nestos-installer开始根据我们提供的配置将NestOS安装至目标磁盘,待进度条100%后,自动重启; + +5)重启后自动进入NestOS,在grub菜单直接回车或者等待5s后启动系统,随后根据此前配置的用户名和密码进入系统。至此,安装完成。 + +#### 8.3.2 通过nestos-installer命令手动安装OS至目标磁盘 + +1)准备好点火文件example.ign(详见第7章); + +2)根据首次进入NestOS的Live环境打印的提示,输入以下指令开始安装: + +```sh +sudo nestos-installer install /dev/sda --ignition-file example.ign +``` + +如具备网络条件,点火文件也可通过网络获取,如: + +```sh +sudo nestos-installer install /dev/sda --ignition-file http://www.example.com/example.ign +``` + +3)执行完上述指令后,nestos-installer开始根据我们提供的配置将NestOS安装至目标磁盘,待进度条100%后,自动重启; + +4)重启后自动进入NestOS,在gurb菜单直接回车或者等待5s后启动系统,随后根据此前配置的用户名和密码进入系统。至此,安装完成 + +### 8.4 PXE部署 + +NestOS的PXE安装组件包括kernel、initramfs.img和rootfs.img。这些组件以nosa buildextend-live命令生成(详见第6章)。 + +1)使用PXELINUX 的kernel命令行指定内核,简单示例如下: + +```sh +KERNEL nestos-live-kernel-x86_64 +``` + +2)使用PXELINUX 的append命令行指定initrd和rootfs,简单示例如下: + +```sh +APPEND initrd=nestos-live-initramfs.x86_64.img,nestos-live-rootfs.x86_64.img +``` + +**注意:如您采用7.5章节所述,已将点火文件预集成至PXE组件,则仅需在此进行替换,无需执行后续步骤。** + +3)指定安装位置,以/dev/sda为例,在APPEND后追加,示例如下: + +```sh +nestosos.inst.install_dev=/dev/sda +``` + +4)指定点火文件,需通过网络获取,在APPEND后追加相应地址,示例如下: + +```sh +nestos.inst.ignition_url=http://www.example.com/example.ign +``` + +5)启动后NestOS会自动读取点火文件并安装至目标磁盘,待进度条完成度为100%后,自动进入安装好的NestOS环境,用户可根据ign文件配置的用户名和密码进入系统。 + +## 9. 基本使用 + +### 9.1 简介 + +NestOS采用基于ostree和rpm-ostree技术的操作系统封装方案,将关键目录设置为只读状态,核心系统文件和配置不会被意外修改;采用overlay分层思想,允许用户在基础ostree文件系统之上分层管理RPM包,不会破坏初始系统体系结构;同时支持构建OCI格式镜像,实现以镜像为最小粒度进行操作系统版本的切换。 + +### 9.2 SSH连接 + +出于安全考虑,NestOS 默认不支持用户使用密码进行SSH登录,而只能使用密钥认证方式。这一设计旨在增强系统的安全性,防止因密码泄露或弱密码攻击导致的潜在安全风险。 + +NestOS通过密钥进行SSH连接的方法与openEuler一致,如果用户需要临时开启密码登录,可按照以下步骤执行: + +1)编辑ssh服务附加配置文件 + +```sh +vi /etc/ssh/sshd_config.d/40-disable-passwords.conf +``` + +2)修改默认配置PasswordAuthentication为如下内容: + +```sh +PasswordAuthentication yes +``` + +3)重启sshd服务,便可实现临时使用密码进行SSH登录。 + +### 9.3 RPM包安装 + +**注意:不可变操作系统不提倡在运行环境中安装软件包,提供此方法仅供临时调试等场景使用,因业务需求需要变更集成软件包列表请通过更新构建配置重新构建实现。** + +NestOS不支持常规的包管理器dnf/yum,而是通过rpm-ostree来管理系统更新和软件包安装。rpm-ostree结合了镜像和包管理的优势,允许用户在基础系统之上分层安装和管理rpm包,并且不会破环初始系统的结构。使用以下命令安装rpm包: + +```sh +rpm-ostree install +``` + +安装完成后,重新启动操作系统,可以看到引导加载菜单出现了两个分支,默认第一个分支为最新的分支 + +```sh +systemctl reboot +``` + +重启进入系统,查看系统包分层状态,可看到当前版本已安装 + +```sh +rpm-ostree status -v +``` + +### 9.4 版本回退(临时/永久) + +更新/rpm包安装完成后,上一版本的操作系统部署仍会保留在磁盘上。如果更新导致问题,用户可以使用rpm-ostree进行版本回退,这一步操作需要用户手动操作,具体流程如下: + +#### 9.4.1 临时回退 + +要临时回滚到之前的OS部署,在系统启动过程中按住shift键,当引导加载菜单出现时,在菜单中选择相应的分支(默认有两个,选择另外一个即可)。在此之前,可以使用以下指令查看当前环境中已存在的两个版本分支: + +```sh +rpm-ostree status +``` + +#### 9.4.2 永久回退 + +要永久回滚到之前的操作系统部署,用户需在当前版本中运行如下指令,此操作将使用之前版本的系统部署作为默认部署。 + +```sh +rpm-ostree rollback +``` + +重新启动以生效,引导加载菜单的默认部署选项已经改变,无需用户手动切换。 + +```sh +systemctl reboot +``` + +## 10. 容器镜像方式更新 + +### 10.1 应用场景说明 + +NestOS作为基于不可变基础设施思想的容器云底座操作系统,将文件系统作为一个整体进行分发和更新。这一方案在运维与安全方面带来了巨大的便利。然而,在实际生产环境中,官方发布的版本往往难以满足用户的需求。例如,用户可能希望在系统中默认集成自维护的关键基础组件,或者根据特定场景的需求对软件包进行进一步的裁剪,以减少系统的运行负担。因此,与通用操作系统相比,用户对NestOS有着更强烈和更频繁的定制需求。 + + NestOS-assembler 可提供符合OCI标准的容器镜像,且不仅是将根文件系统打包分发,利用ostree native container特性,可使容器云场景用户使用熟悉的技术栈,只需编写一个ContainerFile(Dockerfile)文件,即可轻松构建定制版镜像,用于自定义集成组件或后续的升级维护工作。 + +### 10.2 使用方式 + +#### 10.2.1 定制镜像 + +- 基本步骤 + +(1) 参考第6章构建NestOS容器镜像,可使用nosa push-container命令推送至公共或私有容器镜像仓库。 + +(2) 编写Containerfile(Dockerfile)示例如下: + +```sh +FROM registry.example.com/nestos:1.0.20240603.0-x86_64 + +# 执行自定义构建步骤,例如安装软件或拷贝自构建组件 +# 此处以安装strace软件包为例 +RUN rpm-ostree install strace && rm -rf /var/cache && ostree container commit +``` + +(3)执行docker build或集成于CICD中构建相应镜像 + +- 注意事项 + +(1) NestOS 无yum/dnf包管理器,如需安装软件包可采用rpm-ostree install命令安装本地rpm包或软件源中提供软件 + +(2) 如有需求也可修改/etc/yum.repo.d/目录下软件源配置 + +(3) 每层有意义的构建命令末尾均需添加&& ostree container commit命令,从构建容器镜像最佳实践角度出发,建议尽可能减少RUN层的数量 + +(4) 构建过程中会对非/usr或/etc目录内容进行清理,因此通过容器镜像方式定制主要适用于软件包或组件更新,请勿通过此方式进行系统维护或配置变更(例如添加用户useradd) + +#### 10.2.2 部署/升级镜像 + +假设上述步骤构建容器镜像被推送为registry.example.com/nestos:1.0.20240903.0-x86_64。 + +在已部署NestOS的环境中执行如下命令: + +```sh +sudo rpm-ostree rebase ostree-unverified-registry:registry.example.com/nestos:1.0.20240903.0-x86_64 +``` + +重新引导后完成定制版本部署。 + +当您使用容器镜像方式部署后,rpm-ostree upgrade 默认会将更新源从ostree更新源地址更新为容器镜像地址。之后,您可以在相同的tag下更新容器镜像,使用 rpm-ostree upgrade 可以检测远端镜像是否已经更新,如果有变更,它会拉取最新的镜像并完成部署。 diff --git a/docs/zh/docs/cloud/nestos/nestos/overview.md b/docs/zh/docs/cloud/nestos/nestos/overview.md new file mode 100644 index 000000000..c9a7de872 --- /dev/null +++ b/docs/zh/docs/cloud/nestos/nestos/overview.md @@ -0,0 +1,4 @@ +# NestOS云底座操作系统 + +本文介绍云底座操作系统NestOS For Container(下称NestOS)的安装部署与各个特性说明和使用方法,使用户能够快速了解并使用NestOS。NestOS For Virt的使用方法与通用操作系统使用方法一致,可参考欧拉官方文档。 +NestOS搭载了docker、iSulad、podman、cri-o等常见容器引擎,将ignition配置、rpm-ostree、OCI支持、SElinux强化等技术集成在一起,采用基于双系统分区、容器技术和集群架构的设计思路,可以适配云场景下多种基础运行环境。同时NestOS针对Kubernetes进行优化,在IaaS生态构建方面,针对openStack、oVirt等平台提供支持;在PaaS生态构建方面,针对OKD、Rancher等平台提供支持,使系统具备十分便捷的集群组建能力,可以更安全的运行大规模的容器化工作负载。镜像下载地址详见[NestOS官网](https://nestos.openeuler.org/)。 diff --git a/docs/zh/docs/rubik/figures/icon-note.gif b/docs/zh/docs/rubik/figures/icon-note.gif deleted file mode 100644 index 6314297e45c1de184204098efd4814d6dc8b1cda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 394 zcmZ?wbhEHblx7fPSjxcg=ii?@_wH=jwxy=7CMGH-B`L+l$wfv=#>UF#$gv|VY%C^b zCQFtrnKN(Bo_%|sJbO}7RAORe!otL&qo<>yq_Sq+8Xqqo5h0P3w3Lvb5E(g{p01vl zxR@)KuDH0l^z`+-dH3eaw=XqSH7aTIx{kzVBN;X&hha0dQSgWuiw0NWUvMRmkD|> diff --git a/docs/zh/docs/rubik/figures/iocost.PNG b/docs/zh/docs/rubik/figures/iocost.PNG deleted file mode 100644 index db9bf8c351e8b7047c5815c5779a98c406a62ccd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 65642 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 Date: Mon, 12 May 2025 20:48:22 +0800 Subject: [PATCH 2/2] update --- docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md b/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md index 77979db23..0185ed989 100644 --- a/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md +++ b/docs/zh/docs/cloud/hybrid_deployment/oncn_bwm/overview.md @@ -96,7 +96,7 @@ oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行 | 命令格式 | 功能 | | ------------------------------------------------------------ | ------------------------------------------------------------ | -| **bwmcli -s** path / | 设置Pod网络优先级。其中*path*为Pod对应的cgroup路径,*prio*为优先级。*path*取相对路径或者绝对路径均可。 *prio*默认值为0,可选值为0和-1,0标识为在线业务,-1标识为离线业务。 | +| **bwmcli -s** path \ | 设置Pod网络优先级。其中*path*为Pod对应的cgroup路径,*prio*为优先级。*path*取相对路径或者绝对路径均可。 *prio*默认值为0,可选值为0和-1,0标识为在线业务,-1标识为离线业务。 | | **bwmcli -p** *path* | 查询Pod网络优先级。 | > 说明: @@ -123,7 +123,7 @@ oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行 | 命令格式 | 功能 | | ------------------------------------ | ------------------------------------------------------------ | -| **bwmcli -s bandwidth** / | 设置一个主机/虚拟机的离线带宽。其中*low*表示最低带宽,*high*表示最高带宽,其单位可取值为kb/mb/gb,有效范围为[1mb, 9999gb]。| +| **bwmcli -s bandwidth** \ | 设置一个主机/虚拟机的离线带宽。其中*low*表示最低带宽,*high*表示最高带宽,其单位可取值为kb/mb/gb,有效范围为[1mb, 9999gb]。| | **bwmcli -p bandwidth** | 查询设置一个主机/虚拟机的离线带宽。 | > 说明: @@ -156,7 +156,7 @@ oncn-bwm工具提供了`bwmcli`命令行工具来使能Pod带宽管理或进行 | 命令格式 | 功能 | | ---------------------------------------------- | ------------------------------------------------------------ | -| **bwmcli -s waterline** / | 设置一个主机/虚拟机的在线业务水线,其中*val*为水线值,单位可取值为kb/mb/gb ,有效范围为[20mb, 9999gb]。 | +| **bwmcli -s waterline** \ | 设置一个主机/虚拟机的在线业务水线,其中*val*为水线值,单位可取值为kb/mb/gb ,有效范围为[20mb, 9999gb]。 | | **bwmcli -p waterline** | 查询一个主机/虚拟机的在线业务水线。 | > 说明: -- Gitee