kibo 命令行
用 kibo 命令行可以创建 Workspace、在里面工作,并把这些操作写进脚本。本页介绍最常用的命令、kibo 怎样等待结果,以及怎样安全地重复一条命令。每条命令的全部参数见 kibo 命令。
提示
第一次用 kibo?快速开始一步步带你安装、注册并创建第一个 Workspace。
前提条件
- 从发布包安装的
kibo。它有三个构建:Linux/amd64,以及 Apple Silicon 或 Intel 上的 macOS。选哪个见 身份与注册。 - 本机上已注册的 Operator 身份,见 身份与注册。
除此之外不需要别的 token 或密码,见 kibo 怎样连接。
第一次使用
创建一个 Workspace,把 ID 存进变量:
workspace_id=$(kibo workspace create --template "$template_id" --memory 1G -q)
kibo workspace get "$workspace_id"create会等到 Workspace 可用,最多等一小时,见等待结果。-q只输出 ID。不加时create输出一段摘要:首行是 Workspace ID 与状态,末行给出打开终端的命令。- 之后的命令里,Workspace 与 Volume 的 ID 可以只写开头几位,只要能唯一确定,例如
kibo workspace get ws-01k6。
执行一条命令、把文件传进去再取回来,然后打开终端:
kibo workspace exec "$workspace_id" -- /bin/echo ready
printf 'release installation smoke\n' > local.txt
kibo workspace file put "$workspace_id" local.txt /data/local.txt
kibo workspace file get "$workspace_id" /data/local.txt downloaded.txt
cmp local.txt downloaded.txt
kibo workspace terminal "$workspace_id"在远端 shell 中输入 exit 退出终端。
按任务查命令
每行给出一条典型命令,任务链接到介绍这一组其余命令的页面。template_id、workspace_id、volume_id 请替换为实际的 ID。
管理 Workspace
| 任务 | 命令 |
|---|---|
| 列出可用的 Template | kibo template list |
| 用更多资源创建 | kibo workspace create --template "$template_id" --cpu 2 --memory 4G --disk 20G |
| 按 label 查找 Workspace | kibo workspace list --label team=infra |
| 给 Workspace 加 label | kibo workspace labels set "$workspace_id" team=infra tier=gold |
| 调整 CPU、内存或磁盘 | kibo workspace update "$workspace_id" --cpu 2 --memory 4G --disk 40G |
| 设置到期时间 | kibo workspace expiration set "$workspace_id" --expires-in 8h |
| 停止与启动 | kibo workspace stop "$workspace_id" |
| 删除 | kibo workspace delete "$workspace_id" |
| 查看删除释放了什么 | kibo workspace cleanup-status "$workspace_id" |
在 Workspace 里工作
| 任务 | 命令 |
|---|---|
| 执行命令 | kibo workspace exec "$workspace_id" -- /bin/echo ready |
| 打开终端 | kibo workspace terminal "$workspace_id" |
| 传入、取回文件 | kibo workspace file put "$workspace_id" local.txt /data/local.txt |
| 在本机浏览器打开 Web 服务 | kibo workspace service http "$workspace_id" --tcp-port 8080 |
| 把 TCP 端口转发到本机 | kibo workspace service forward "$workspace_id" --tcp-port 5432 |
| 查看桌面 | kibo workspace desktop view "$workspace_id" |
网络与数据
| 任务 | 命令 |
|---|---|
| 允许访问互联网 | kibo workspace network set "$workspace_id" public-internet |
| 创建 Volume | kibo volume create --capacity 10G |
| 扩容 Volume | kibo volume resize "$volume_id" --capacity 20G |
| 导出已停止的 Workspace | kibo transfer export "$workspace_id" |
等待结果
workspace create、start、stop、delete 默认会等待:ctrl 接受命令后,kibo 持续查询这条命令的结果,直到 Workspace 变为 AVAILABLE、STOPPED 或 DELETED。等待期间不会重复发送这条命令。
在终端里运行时,标准错误上有一行随状态刷新的进度;其他情况下只在开始等待时输出一行。
--wait-timeout 限制总等待时间,默认一小时;--timeout 限制单次请求。--no-wait 在 ctrl 接受命令后立即返回,此时 Workspace 可能还在 CREATING 或 STOPPING。这些参数在各命令上的情况见命令自带的通用参数。
重要
结束等待不会取消命令。等待超时、按 Ctrl-C 或连接断开后,ctrl 仍会执行已经接受的命令,kibo 以退出码 18 退出,错误信息包含 Workspace ID、命令 ID、查询命令与最后一次看到的状态。用这个命令 ID 查询,不要换一个幂等键重新提交。
- 创建失败时,错误信息说明原因。
- create 与 start 提交请求后没有收到响应时,
kibo用同样的 ID 和输入最多一共发送三次;stop 与 delete 不自动重发。仍然拿不到结果时输出这个 ID,供你事后查询。 - 到期动作由 ctrl 执行,
kibo退出不会影响它。
在脚本中使用 kibo
| 需要 | 用法 |
|---|---|
| 只要结果的 ID,赋给变量 | -q |
| 机器可读的输出 | --json,见 JSON 输出 |
| 不弹出确认 | --yes。没有终端可以提示时必须加 |
| 远端命令的结果 | workspace exec 的退出码,见 kibo 退出码 |
等待成功时,JSON 输出是 WorkspaceCommandResult,字段见 JSON 输出。result.current_workspace 来自命令完成后的再一次查询;这次查询失败时它为 null,原因在 result.current_error,命令本身仍然成功。
--no-wait 时输出 ctrl 接受时的 Workspace。执行依赖当前状态的操作前,可以先用 kibo workspace get 再查一次。
幂等键与结果未知
每条写命令都带一个幂等键(command ID),所以可以安全地重复。不传 --command-id 时 kibo 自动生成;脚本可能要再跑同一条命令时,传入自己的 ID:
kibo workspace stop "$workspace_id" --command-id stop-example
kibo --json workspace command get "$workspace_id" stop-examplectrl 已有这个 ID 的命令时,不会再提交:
-
同一个 Workspace、同一种命令时,
kibo报告已有命令的结果。命令仍在处理中时等它完成;加--no-wait时返回处理中的记录。 -
属于另一个 Workspace 或另一种命令时,命令失败,换一个 ID。
-
重跑时原请求若仍在传输中,ctrl 只接纳其中一条,另一条以冲突拒绝,命令不会执行两次。
-
请求超时或结果未知时,用同一个命令 ID 查询,或者用同一个 ID 和参数重跑同一条命令。重跑返回原命令的结果;当前状态另外用
kibo workspace get查看。 -
查不到命令不代表请求失败,不要因此换 ID 重发。
kibo 怎样连接
kibo 通过两条路访问 Kibotos:
| 路径 | 用于 | 认证 |
|---|---|---|
| 控制面,发往 ctrl | 创建、查询、启停 Workspace | 用 Operator 身份做 mTLS 认证,只信任注册时保存的 ctrl 证书 |
| 数据面,直接连到运行 Workspace 的 node | 执行命令、传文件、终端等操作 | 短期会话凭证,由 kibo 在命令执行期间自动获取,不落盘。这条连接信任系统根证书和 ctrl 证书,使用与控制面相同的代理设置,不跟随重定向 |
证书、身份目录与代理的细节见身份、配置与连接。
下一步
- 核心概念:Workspace、Volume 及其状态。
- 保证与边界:数据在什么情况下保留。
- kibo CLI 参考:全局参数、退出码与 JSON 输出格式。
- API 概览:在自己的程序里做同样的操作。