From 63d4c8914090ac3fdb24ddc2b43dbd44795a5f95 Mon Sep 17 00:00:00 2001 From: Yuhang Wei Date: Wed, 27 Nov 2024 17:31:43 +0800 Subject: [PATCH] docs: update kbimg docs Signed-off-by: Yuhang Wei --- docs/quick-start.md | 33 +- ...275\234\346\214\207\345\257\274-binary.md" | 469 ++++++++++++++++++ ...75\234\346\214\207\345\257\274-scripts.md" | 320 +----------- 3 files changed, 474 insertions(+), 348 deletions(-) create mode 100644 "docs/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-binary.md" rename "docs/user_guide/\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" => "docs/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-scripts.md" (40%) diff --git a/docs/quick-start.md b/docs/quick-start.md index 1d59048e..599b17b6 100644 --- a/docs/quick-start.md +++ b/docs/quick-start.md @@ -112,41 +112,14 @@ * 请确保os-agent属主和属组为root,建议os-agent文件权限为500 * 容器OS虚拟机镜像制作 - 进入scripts目录,执行脚本 + 在KubeOS项目根目录下,执行 ```shell - cd scripts - bash kbimg.sh create vm-image -p xxx.repo -v v1 -b ../bin/os-agent -e '''$1$xyz$RdLyKTL32WEvK3lg8CXID0''' + cargo run --package kbimg -- create -f KubeOS-Rust/kbimg/kbimg.toml vm-img ``` - 参数说明如下: - - ```bash - Usage : kbimg create vm-image -p iso-path -v os-version -b os-agent-dir -e os-password - or - kbimg create vm-image -d repository/name:tag - - options: - -p repo path - -v KubeOS version - -b path of os-agent binary - -e os encrypted password - -d docker image like repository/name:tag - -l boot to legacy BIOS mode, if not specify, then UEFI mode - -h,--help show help information - ``` - - * 其中 xxx.repo 为制作镜像所需要的 yum 源,yum 源建议配置为 openEuler 具体版本的 everything 仓库和 EPOL 仓库。 - * 容器 OS 镜像制作完成后,会在 scripts 目录下生成: - * raw格式的系统镜像system.img,system.img大小默认为20G,支持的根文件系统分区大小<2020MiB,持久化分区<16GB。 - * qcow2 格式的系统镜像 system.qcow2。 - * 可用于升级的根文件系统分区镜像 update.img 。 - * 制作出来的容器 OS 虚拟机镜像目前只能用于 CPU 架构为 x86 和 AArch64 的虚拟机场景。若x86 架构的虚拟机需要使用 legacy 启动模式,需制作镜像时指定-l参数 - * 默认root密码为openEuler12#$ - * 您可通过`openssl passwd -6 -salt $(head -c18 /dev/urandom | openssl base64)`命令生成root密码并通过`-e`参数配置密码 - * 容器OS运行底噪<150M (不包含k8s组件及相关依赖kubernetes-kubeadm,kubernetes-kubelet, containernetworking-plugins,socat,conntrack-tools,ebtables,ethtool) + 详细配置文件和命令行参数说明请见[KubeOS镜像制作指导](../docs/user_guide/KubeOS镜像制作指导-binary.md): * 本项目不提供容器OS镜像,仅提供裁剪工具,裁剪出来的容器OS内部的安全性由OS发行商保证。 - * 详细参数说明请见[《容器OS镜像制作指导》](../docs/user_guide/%E5%AE%B9%E5%99%A8OS%E9%95%9C%E5%83%8F%E5%88%B6%E4%BD%9C%E6%8C%87%E5%AF%BC.md) * 声明: os-agent使用本地unix socket进行通信,因此不会新增端口。下载镜像的时候会新增一个客户端的随机端口,1024~65535使用完后关闭。proxy和operator与api-server通信时作为客户端也会有一个随机端口,基于kubernetes的operator框架,必须使用端口。他们部署在容器里。 diff --git "a/docs/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-binary.md" "b/docs/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-binary.md" new file mode 100644 index 00000000..b951b388 --- /dev/null +++ "b/docs/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-binary.md" @@ -0,0 +1,469 @@ +# KubeOS镜像制作说明 + +## 简介 + +kbimg是使用Rust语言编写的二进制工具,通过解析用户的[toml配置文件](#详细toml配置文件示例),动态生成脚本,制作KubeOS虚拟机镜像、PXE物理机镜像、升级镜像和admin容器镜像。 + +## 命令介绍 + +kbimg - CLI tool for generating various types of image for KubeOS + +```text +Usage: kbimg [OPTIONS] + +Commands: + create Create a new KubeOS image + help Print this message or the help of the given subcommand(s) + +Options: + -d, --debug Enable debug mode, generate the scripts without execution + -h, --help Print help + -V, --version Print version +``` + +kbimg-create - Create a new KubeOS image + +```text +Usage: kbimg create --file + +Arguments: + [possible values: vm-img, pxe-img, upgrade-img, admin-container] + +Options: + -f, --file Path to the toml configuration file + -h, --help Print help +``` + +## 注意事项 + +* 请确保已安装`qemu-img bc parted tar yum docker dosfstools` +* 制作启用dm-verity功能的镜像,需要安装`pesign nss openssl veritysetup crypto-policies` +* KubeOS镜像制作需要使用root权限 +* 制作镜像时提供的 repo 文件中,yum 源建议同时配置 openEuler 具体版本的 everything 仓库和 EPOL 仓库 +* KubeOS镜像制作之前需要先将当前机器上的selinux关闭或者设为允许模式 +* 使用默认rpmlist进行KubeOS镜像制作至少需要有25G的剩余空间 +* KubeOS镜像制作工具执行异常中断,可能会残留文件、目录或挂载,需用户手动清理,对于可能残留的rootfs目录,该目录虽然权限为555,但容器OS镜像制作在开发环境进行,不会对生产环境产生影响 +* 请确保os-agent属主和属组为root,建议os-agent文件权限为500 + +## 配置文件说明 + +### from_repo + +从 repo 创建升级容器镜像、虚拟机镜像或PXE物理机镜像 + + | 参数 | 描述 | + | --- | --- | + | agent_path | os-agent 二进制的路径 | + | legacy_bios | 镜像为 legacy 引导或 UEFI 引导 | + | repo_path | repo 文件的路径,repo 文件中配置制作镜像所需要的 yum 源 | + | root_passwd | root 用户密码,与/etc/shadow文件内密码格式一致,可使用`openssl passwd -6 -salt $(head -c18 /dev/urandom \| openssl base64)`命令生成 | + | version | KubeOS 镜像的版本,将写入/etc/os-release文件内作为OS标识 | + | rpmlist | 期望安装进镜像内的rpm包列表 | + | upgrade_img | [OPTIONAL]指定生成的升级容器镜像的镜像名(制作升级容器镜像必需) | + +### admin_container + +制作admin运维容器 + + | 参数 | 描述 | + | --- | --- | + | hostshell | hostshell二进制路径,可在项目根目录下通过`make hostshell`编译 | + | img_name | 指定生成的容器镜像名 | + +### pxe_config + +在制作PXE物理机镜像时,配置该参数用于PXE安装。制作PXE物理机镜像时必需。 + + | 参数 | 描述 | + | --- | --- | + | server_ip | 用于下载根文件系统 tar 包的 HTTP 服务器地址 | + | rootfs_name | 放置于 HTTP 服务器的文件系统 tar 包名称 | + | disk | 安装 KubeOS 系统的目标磁盘名 | + | route_ip | 配置目标机器网卡的路由 IP | + | dhcp | [OPTIONAL] 默认为 false,启用 DHCP 模式配置网络 | + | local_ip | [OPTIONAL] 配置目标机器网卡的 IP,dhcp 为 false 时必需 | + | net_name | [OPTIONAL] 配置目标机器网卡名,dhcp 为 false 时必需 | + | netmask | [OPTIONAL] 配置目标机器网卡的子网掩码,dhcp 为 false 时必需 | + +### users + +[OPTIONAL] 添加用户 + + | 参数 | 描述 | + | --- | --- | + | name | 用户名 | + | passwd | 密码 | + | primary_groups | [OPTIONAL] 用户主组 | + | groups | [OPTIONAL] 用户附加组 | + +### copy_files + +[OPTIONAL] 拷贝文件到rootfs内指定目录 + + | 参数 | 描述 | + | --- | --- | + | dst | 目标路径 | + | src | 源文件路径 | + | create_dir | [OPTIONAL]拷贝前创建文件夹 | + +### grub + +[OPTIONAL] grub配置,配置dm-verity时必需 + + | 参数 | 描述 | + | --- | --- | + | passwd | grub 密码 | + +### systemd_service + +[OPTIONAL] 新增 systemd 服务 + + | 参数 | 描述 | + | --- | --- | + | name | systemd 服务名 | + +### chroot_script + +[OPTIONAL] 自定义 chroot 脚本 + + | 参数 | 描述 | + | --- | --- | + | path | 脚本路径 | + | rm | [OPTIONAL]执行完毕后是否删除该脚本 | + +### disk_partition + +[OPTIONAL] 自定义分区大小和镜像大小 + + | 参数 | 描述 | + | --- | --- | + | root | root分区大小, 单位为MiB | + | img_size | [OPTIONAL]镜像大小,单位为GB | + +### persist_mkdir + +[OPTIONAL] persist 分区新建目录 + + | 参数 | 描述 | + | --- | --- | + | name | 目录名 | + +### dm_verity + +[OPTIONAL] 制作启用dm-verity功能的虚拟机或升级镜像 + + | 参数 | 描述 | + | --- | --- | + | efi_key | efi明文口令 | + | grub_key | grub明文口令 | + | keys_dir |[OPTIONAL]可指定密钥文件夹,复用先前制作镜像创建的密钥 | + +## 使用示例 + +### KubeOS 虚拟机镜像制作 + +* 支持CPU 架构为 x86 和 aarch64 的虚拟机场景。若x86架构的虚拟机需要使用 legacy 启动模式,请在`[from_repo]`下配置`legacy_bios`为`true` +* `repo_path`为制作镜像所需要的 yum 源文件路径,yum 源建议配置为 openEuler 具体版本的 everything 仓库和 EPOL 仓库。 +* 默认root密码为openEuler12#$ +* 容器OS运行底噪<150M (不包含k8s组件及相关依赖`kubernetes-kubeadm,kubernetes-kubelet, containernetworking-plugins,socat,conntrack-tools,ebtables,ethtool`) + +* 配置文件示例 + +```toml +[from_repo] +agent_path = "./bin/rust/release/os-agent" +legacy_bios = false +repo_path = "/etc/yum.repos.d/openEuler.repo" +root_passwd = "$1$xyz$RdLyKTL32WEvK3lg8CXID0" # default passwd: openEuler12#$ +rpmlist = [ + "NetworkManager", + "cloud-init", + "conntrack-tools", + "containerd", + "containernetworking-plugins", + "cri-tools", + "dhcp", + "ebtables", + "ethtool", + "iptables", + "kernel", + "kubernetes-kubeadm", + "kubernetes-kubelet", + "openssh-server", + "passwd", + "rsyslog", + "socat", + "tar", + "vi", +] +version = "v1" +``` + +* 结果说明 +容器 OS 镜像制作完成后,会在 ./scripts-auto 目录下生成 + * system.qcow2: qcow2 格式的系统镜像,大小默认为 20GiB,支持的根文件系统分区大小 < 2560 MiB,持久化分区 < 15GB 。 + * system.img: img 格式的系统镜像,大小默认为 20GiB,支持的根文件系统分区大小 < 2560 MiB,持久化分区 < 15GB 。 + * kubeos.tar: 用于升级的根文件系统tar包 + +### KubeOS 升级容器镜像制作 + +* 制作KubeOS容器镜像 + +```toml +[from_repo] +agent_path = "./bin/rust/release/os-agent" +legacy_bios = false +repo_path = "/etc/yum.repos.d/openEuler.repo" +root_passwd = "$1$xyz$RdLyKTL32WEvK3lg8CXID0" # default passwd: openEuler12#$ +rpmlist = [ + "NetworkManager", + "cloud-init", + "conntrack-tools", + "containerd", + "containernetworking-plugins", + "cri-tools", + "dhcp", + "ebtables", + "ethtool", + "iptables", + "kernel", + "kubernetes-kubeadm", + "kubernetes-kubelet", + "openssh-server", + "passwd", + "rsyslog", + "socat", + "tar", + "vi", +] +upgrade_img = "kubeos-upgrade:v1" +version = "v1" +``` + +* 制作完成后,通过`docker images`查看制作出来的KubeOS容器镜像 + +### KubeOS PXE物理机安装所需镜像及文件制作 + +* 支持CPU 架构为 x86 和 aarch64 的物理机场景,不支持legacy引导模式 +* PXE物理机镜像制作不支持dm-verity功能 +* 首先需要修改```kbimg.toml```中```pxe_config```的配置,对相关参数进行配置,详细参数可见[参数说明](#pxe_config),ip目前仅支持ipv4,配置示例如下 + + ```toml + [pxe_config] + dhcp = false + # rootfs file name + rootfs_name = "kubeos.tar" + # select the target disk to install kubeOS + disk = "/dev/vda" + # pxe server ip address where stores the rootfs on the http server + server_ip = "192.168.122.50" + # target machine ip + local_ip = "192.168.122.100" + # target machine route + route_ip = "192.168.122.1" + # target machine netmask + netmask = "255.255.255.0" + # target machine netDevice name + net_name = "eth0" + ``` + +* 如需进行DNS配置,请先自定义```resolv.conf```文件,并启用```copy_files```字段将配置文件拷贝到```/etc```目录 + + ```toml + [[copy_files]] + dst = "/etc" + src = "" + ``` + +* KubeOS物理机安装所需镜像制作,及pxe_config配置全示例 + + ```toml + [from_repo] + agent_path = "./bin/rust/release/os-agent" + legacy_bios = false + repo_path = "/etc/yum.repos.d/openEuler.repo" + root_passwd = "$1$xyz$RdLyKTL32WEvK3lg8CXID0" # default passwd: openEuler12#$ + rpmlist = [ + "NetworkManager", + "cloud-init", + "conntrack-tools", + "containerd", + "containernetworking-plugins", + "cri-tools", + "dhcp", + "ebtables", + "ethtool", + "iptables", + "kernel", + "kubernetes-kubeadm", + "kubernetes-kubelet", + "openssh-server", + "passwd", + "rsyslog", + "socat", + "tar", + "vi", + "coreutils", + "dosfstools", + "dracut", + "gawk", + "hwinfo", + "net-tools", + "parted", + ] + version = "v1" + + [pxe_config] + dhcp = true + rootfs_name = "kubeos.tar" + disk = "/dev/vda" + server_ip = "192.168.122.50" + route_ip = "192.168.122.1" + #local_ip = "192.168.1.100" + #netmask = "255.255.255.0" + #net_name = "eth0" + ``` + +* 结果说明 + * initramfs.img: 用于pxe启动用的 initramfs 镜像 + * kubeos.tar: pxe安装所用的根分区文件系统 + +### admin运维容器镜像制作 + +* 首先在KubeOS项目根目录下,执行`make hostshell`命令编译hostshell二进制 +* 在toml配置文件内,填入以下示例配置制作admin运维容器镜像 + +```toml +[admin_container] +img_name = "kubeos-admin-container:v1" +hostshell = "./bin/hostshell" +``` + +* 制作完成后,通过`docker images`查看制作出来的KubeOS容器镜像 + +## 使用说明 + +### 使用cloud-init在KubeOS启动时初始化 + +在`[from_repo]`配置内的`rpmlist`中,配置`cloud-init`包,可在KubeOS启动时使用`cloud-init`进行初始化。 +若用户需要覆盖默认的cloud-init配置,可配置如下示例 + + ```toml + [[copy_files]] + dst = "/etc/cloud" + src = "./cloud.cfg" + ``` + +### 创建systemd服务 + +* 新增 systemd 服务需要将对应的 .service 文件或 .mount 文件拷贝至镜像```/etc/systemd/system```目录下 + + ```toml + [[copy_files]] + dst = "/etc/systemd/system" + src = "./containerd.service" + + [systemd_service] + name = ["containerd"] + ``` + +## 附录 + +### 详细toml配置文件示例 + +请根据需求和[配置文件说明](#配置文件说明),修改如下示例配置文件,生成所需镜像。 + +```toml +[from_repo] +agent_path = "./bin/rust/release/os-agent" +legacy_bios = false +repo_path = "/etc/yum.repos.d/openEuler.repo" +root_passwd = "$1$xyz$RdLyKTL32WEvK3lg8CXID0" # default passwd: openEuler12#$, use "openssl passwd -6 -salt $(head -c18 /dev/urandom | openssl base64)" to generate your passwd +rpmlist = [ + "NetworkManager", + "cloud-init", + "conntrack-tools", + "containerd", + "containernetworking-plugins", + "cri-tools", + "dhcp", + "ebtables", + "ethtool", + "iptables", + "kernel", + "kubernetes-kubeadm", + "kubernetes-kubelet", + "openssh-server", + "passwd", + "rsyslog", + "socat", + "tar", + "vi", + # Below packages are required for pxe-image. Uncomment them if you want to generate pxe-image. + # "coreutils", + # "dosfstools", + # "dracut", + # "gawk", + # "hwinfo", + # "net-tools", + # "parted", +] +upgrade_img = "kubeos-upgrade:v1" +version = "v1" + +# [admin_container] +# img_name = "kubeos-admin-container:v1" +# hostshell = "./bin/hostshell" + +# [pxe_config] +# dhcp = false +# disk = "/dev/vda" +# local_ip = "192.168.1.100" +# net_name = "eth0" +# netmask = "255.255.255.0" +# rootfs_name = "kubeos.tar" +# route_ip = "192.168.1.1" +# server_ip = "192.168.1.50" + +# [[users]] +# groups = ["admin", "wheel"] +# name = "foo" +# passwd = "foo" +# primary_group = "foo" + +# [[users]] +# groups = ["example"] +# name = "bar" +# passwd = "bar" + +# [[copy_files]] +# create_dir = "/root/test" +# dst = "/root/test/foo.txt" +# src = "/root/KubeOS/foo.txt" + +# [[copy_files]] +# dst = "/etc/bar.txt" +# src = "../bar.txt" + +# [grub] +# passwd = "foo" + +# [systemd_service] +# name = ["containerd", "kubelet"] + +# [chroot_script] +# path = "./my_chroot.sh" +# rm = true + +# [disk_partition] +# img_size = 30 # GB +# root = 3000 # MiB + +# [persist_mkdir] +# name = ["bar", "foo"] + +# [dm_verity] +# efi_key = "foo" +# grub_key = "bar" +# keys_dir = "./keys" +``` diff --git "a/docs/user_guide/\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/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-scripts.md" similarity index 40% rename from "docs/user_guide/\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/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-scripts.md" index d54cc837..2b147107 100644 --- "a/docs/user_guide/\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/user_guide/KubeOS\351\225\234\345\203\217\345\210\266\344\275\234\346\214\207\345\257\274-scripts.md" @@ -1,8 +1,8 @@ -# 容器OS镜像制作指导 +# KubeOS镜像制作指导 ## 简介 -kbimg是KubeOS部署和升级所需的镜像制作工具,可以使用kbimg制作KubeOS 容器,虚拟机和物理机镜像 +kbimg.sh是KubeOS部署和升级所需的镜像制作工具,可以使用kbimg.sh制作KubeOS 容器,虚拟机和物理机镜像 ## 命令介绍 @@ -167,319 +167,3 @@ docker images * 结果说明 * initramfs.img: 用于pxe启动用的 initramfs 镜像 * kubeos.tar: pxe安装所用的 OS - - -# KubeOS-Rust 镜像制作说明 - -## 简介 - -KubeOS 虚拟机镜像制作的 Rust 二进制版本 - -## 命令介绍 - -### 命令格式 - -**.../kbimg** \[ --config | -c \] \ - -## 配置文件说明 - -* from_repo: 从 repo 创建 OCI 镜像、虚拟机镜像或物理机镜像 - - | 参数 | 描述 | - | --- | --- | - | agent_path | os-agent 二进制的路径 | - | image_type | upgrade: 用于安装和升级的 OCI 镜像格式的 KubeOS 镜像; vm-repo: 用于部署和升级的虚拟机镜像; pxe-repo: 物理机安装所需的镜像及文件 | - | legacy_bios | 镜像为 legacy 引导或 UEFI 引导 | - | repo_path | repo 文件的路径,repo 文件中配置制作镜像所需要的 yum 源 | - | root_passwd | KubeOS 镜像 root 用户密码,加密后的带盐值的密码,可以用 openssl、kiwi 命令生成 | - | version | 制作出来的 KubeOS 镜像的版本 | - | rpmlist | 镜像所需的 rpm 包 | - | docker_img | 生成或者使用的 docker 镜像 | - -* from_docker: 从 docker 镜像创建虚拟机镜像或物理机镜像 - - | 参数 | 描述 | - | --- | --- | - | docker_img | 生成或者使用的 docker 镜像 | - | image_type | vm-docker: 用于部署和升级的虚拟机镜像; pxe-docker: 物理机安装所需的镜像及文件 | - -* admin_container: - - | 参数 | 描述 | - | --- | --- | - | dockerfile | dockerfile 路径 | - | docker_img | 生成或者使用的 docker 镜像 | - -* [OPTIONAL] users: 添加用户 - - | 参数 | 描述 | - | --- | --- | - | groups | [OPTIONAL] 用户组 (第一个为主组,其他为附加组) | - | name | 用户名 | - | passwd | 密码 | - | sudo | [OPTIONAL] 用户是否具有 sudo 权限 | - -* [OPTIONAL] copy_files: 拷贝文件到指定目录 - - | 参数 | 描述 | - | --- | --- | - | dst | 目标目录 | - | src | 源文件路径 | - -* [OPTIONAL] grub: grub配置 - - | 参数 | 描述 | - | --- | --- | - | passwd | [OPTIONAL] grub 密码 | - -* [OPTIONAL] systemd_service: 新增 systemd 服务 - - | 参数 | 描述 | - | --- | --- | - | name | systemd 服务名 | - -* [OPTIONAL] chroot_script: 自定义 chroot 脚本 - - | 参数 | 描述 | - | --- | --- | - | path | 脚本路径 | - -* [OPTIONAL] disk_partition: 自定义分区大小和镜像大小 - - | 参数 | 描述 | - | --- | --- | - | first | 引导分区大小 | - | second | ROOT-A 分区大小 | - | third | ROOT-B 分区大小 | - | img_size | 镜像大小 | - -* [OPTIONAL] persist_mkdir: persist 分区新建目录 - - | 参数 | 描述 | - | --- | --- | - | name | 目录名 | - -## 使用说明 - -#### 注意事项 - -* 新增 systemd 服务需要将对应的 .service 文件或 .mount 文件拷贝至镜像```/usr/lib/systemd/system```目录 - - ```toml - [[copy_files]] - dst = "/usr/lib/systemd/system" - src = ".../containerd.service" - - [systemd_service] - name = ["containerd"] - ``` - - * 如需挂载数据盘,请先自定义```persist-data.mount```文件,并启用```copy_files```和```systemd_service```字段设置启动时挂载,启用```persist_mkdir```字段创建挂载点 - * .mount文件名由挂载点路径生成,将斜杠替换为连字符 - * 请先在磁盘映像文件上创建ext4文件系统 - - ``` - # persist-data.mount - [Unit] - Description=Mount Disk - Documentation=man:systemd.mount(5) - - [Mount] - What=/dev/vdb - Where=/persist/data - Type=ext4 - Options=defaults,noatime - - [Install] - WantedBy=local-fs.target - ``` - - ```toml - [[copy_files]] - dst = "/usr/lib/systemd/system" - src = ".../persist-data.mount" - - [systemd_service] - name = ["persist-data.mount"] - - [persist_mkdir] - name = ["data"] - ``` - - * 如需配置逻辑卷,请先自定义```volume.service```文件,并启用```copy_files```和```systemd_service```设置启动时配置逻辑卷,启用```persist_mkdir```字段创建挂载点 - - ``` - # volume.service - [Unit] - Description=Mount Logical Volume - After=local-fs.target - - [Service] - Type=oneshot - RemainAfterExit=yes - ExecStart=pvcreate /dev/vdb - ExecStart=pvcreate /dev/vdc - ExecStart=vgcreate my_vg /dev/vdb /dev/vdc - ExecStart=lvcreate -L 15G -n my_lv my_vg - ExecStart=mkfs.ext4 /dev/my_vg/my_lv - ExecStart=mount /dev/my_vg/my_lv /persist/lv_data - - [Install] - WantedBy=local-fs.target - ``` - - ```toml - [[copy_files]] - dst = "/usr/lib/systemd/system" - src = ".../volume.service" - - [systemd_service] - name = ["volume"] - - [persist_mkdir] - name = ["lv_data"] - ``` - -## 使用示例 - -### KubeOS OCI 镜像制作 - -* 如需进行DNS配置,请先自定义```resolv.conf```文件,并启用```copy_files```字段将配置文件拷贝到```/etc```目录 - - ```shell - touch \/resolv.conf - vim \resolv.conf - ``` - - ```toml - [[copy_files]] - dst = "/etc" - src = "" - ``` - -* 制作KubeOS容器镜像 - - ```toml - [from_repo] - agent_path = "/bin/os-agent" - image_type = "upgrade" - legacy_bios = false - repo_path = "xxx.repo" - root_passwd = "$1$xyz$RdLyKTL32WEvK3lg8CXID0" - version = "v1" - docker_img = "your_imageRepository/imageName:version" - rpmlist = [ - # your rpms - ] - ``` - -* 制作完成后查看制作出来的KubeOS容器镜像 - ``` shell - docker images - ``` - -### KubeOS 虚拟机镜像制作 - -* 使用repo源制作 - - * 如需进行DNS配置,请先自定义```resolv.conf```文件,并启用**copy_files**字段将配置文件拷贝到```/etc```目录 - - ```shell - touch \/resolv.conf - vim \resolv.conf - ``` - - ```toml - [[copy_files]] - dst = "/etc" - src = "" - ``` - - * KubeOS虚拟机镜像制作 - - ```toml - [from_repo] - agent_path = "/bin/os-agent" - image_type = "vm-repo" - legacy_bios = false - repo_path = "xxx.repo" - root_passwd = "$1$xyz$RdLyKTL32WEvK3lg8CXID0" - version = "v1" - rpmlist = [ - # your rpms - ] - ``` - -* 使用docker镜像制作 - - ```toml - [from_dockerimg] - docker_img = "your_imageRepository/imageName:version" - image_type = "vm-docker" - ``` - -* 结果说明 - 容器 OS 镜像制作完成后,会在 ./scripts-auto 目录下生成 - * system.qcow2: qcow2 格式的系统镜像,大小默认为 20GiB,支持的根文件系统分区大小 < 2020 MiB,持久化分区 < 16GiB 。 - * update.img: 用于升级的根文件系统分区镜像 - -### KubeOS 物理机安装所需镜像及文件制作 - -* 首先需要修改```kbimg.toml```中```pxe_config```的配置,对相关参数进行配置,参数均为必填,ip目前仅支持ipv4,配置示例如下 - - ```toml - [pxe_config] - # rootfs file name - rootfs_name = "kubeos.tar" - # select the target disk to install kubeOS - disk = "/dev/sda" - # pxe server ip address where stores the rootfs on the http server - server_ip = "192.168.1.50" - # target machine ip - local_ip = "192.168.1.100" - # target machine route - route_ip = "192.168.1.1" - # target machine netmask - netmask = "255.255.255.0" - # target machine netDevice name - net_name = "eth0" - ``` - -* 使用 repo 源制作 - * 如需进行DNS配置,请先自定义```resolv.conf```文件,并启用```copy_files```字段将配置文件拷贝到```/etc```目录 - - ```shell - touch \/resolv.conf - vim \resolv.conf - ``` - - ```toml - [[copy_files]] - dst = "/etc" - src = "" - ``` - - * KubeOS物理机安装所需镜像制作 - ```toml - [from_repo] - agent_path = "/bin/os-agent" - image_type = "pxe-repo" - legacy_bios = true - repo_path = "xxx.repo" - root_passwd = "$1$xyz$RdLyKTL32WEvK3lg8CXID0" - version = "v1" - rpmlist = [ - # your rpms - ] - ``` - -* 使用 docker 镜像制作 - ```toml - [from_dockerimg] - docker_img = "your_imageRepository/imageName:version" - image_type = "vm-docker" - ``` - -* 结果说明 - * initramfs.img: 用于pxe启动用的 initramfs 镜像 - * kubeos.tar: pxe安装所用的 OS -- Gitee