Kibotos

卸载

本页介绍如何卸载 node、ctrl 与两个网关,以及卸载之后宿主机和外部存储里还留着哪些数据。重装或升级包见重装与升级。

注意

  • 服务仍在运行、systemd 状态未知、配置缺失但有残留状态,或维护检查失败时,包脚本会拒绝替换或删除。修复后重试同一操作即可。
  • remove 与 purge 只删除包文件和服务的启用链接,留下的数据都会保留。需要销毁这些数据时,由部署方另行执行。

各组件的顺序

要拆掉整套部署时,按下面的顺序卸载:

  1. E2B 网关与 Exposure 网关,不再接收新的外部请求,见卸载网关。
  2. 每台 node,见 node。node 的 drain、清理与退役都要经过 ctrl。
  3. 最后卸载 ctrl,见 ctrl。

node

  1. 对 node 执行 drain,让 ctrl 不再往它调度新的 Workspace。drain 不清理任何数据。
  2. 删除或导出这台 node 上的所有 Workspace、独立 Volume 与保留的可写层。kibo workspace list --node node-a --all -q 列出它上面的 Workspace。
  3. 等状态到 DRAINED 后,用 kibo node retire 让 node 退役。之后 ctrl 不再把它算作任何存储池的成员,这个 node ID 也不能再注册。要在 node 服务还在运行时退役:停止后的 node 不再是 DRAINED,那时 retire 只接受先执行过 kibo node isolate 的 node。
  4. 停止服务、执行维护检查,再 purge 包。

执行 drain 并列出它上面剩下的东西:

kibo node drain node-a
kibo workspace list --node node-a --all -q

清理完成后,等待 DRAINED,让 node 退役,再删除包:

kibo node drain node-a --wait --timeout 10m
kibo node retire node-a
sudo systemctl stop kibotos-node.service
sudo kibotos-node check-maintenance --config /etc/kibotos/node/config.toml --operation remove
sudo apt-get purge kibotos-node

包脚本会执行同样的 --operation remove 检查、移除服务的启用状态,并结束数据面进程与出口进程。retire 的细节以及只有这台 node 接入的池怎样处理,见 node。

ctrl

在全部 node 与网关之后卸载 ctrl。先停止服务,再 purge 包;包脚本会移除服务的启用状态:

sudo systemctl stop kibotos-ctrl.service
sudo apt-get purge kibotos-ctrl

卸载后重新安装 node

卸载后 /etc/kibotos/node 与 /var/lib/kibotos/node 仍在,但 kibotos-node 程序已经删除,安装脚本没有程序可以读取这些记录。重新安装时:

  • 仍有 kibotos-vmm-* 单元时,安装被拒绝,并列出这些单元。确认不再需要后停止它们(仍列出的再执行 systemctl reset-failed),然后重试安装。
  • 没有 VMM 单元时,安装继续,沿用原来的配置、身份与记录,并提示先检查再启动。

安装完成后、启动服务之前,用新装的程序检查保留的状态:

sudo kibotos-node check-maintenance --config /etc/kibotos/node/config.toml --operation upgrade
sudo systemctl enable --now kibotos-node.service

只有没有退役的 node 才能沿用原来的身份:退役的 node 永远不能再注册。不打算沿用原来的身份时,先删除这两个目录再安装,按安装 node重新注册;退役之后要换用新的 node ID。

卸载网关

先停止服务,再删除包;包脚本会移除服务的启用状态:

sudo systemctl stop kibotos-e2b.service kibotos-gw.service
sudo apt-get remove kibotos-e2b kibotos-gw

留下的数据

remove 与 purge 都不删除下面这些,不再需要时由部署方自己删除:

组件留下的内容
ctrl/etc/kibotos/ctrl/(配置及其引用的文件)、/var/lib/kibotos/ctrl/(装着本部署身份的 pki/、credential-keys/)、PostgreSQL 数据库,以及 bucket 里 kibotos-template/v1/<namespace>/ 与 kibotos-transfer/v1/<namespace>/ 下的对象
node/etc/kibotos/node/、/var/lib/kibotos/node/(pki/ 里的 node 身份、各类记录、runtime 安装与 Template 缓存)、storage.root 之外的池目录,以及创建过的 AppArmor local fragment /etc/apparmor.d/local/kibotos-node-roots
E2B 网关/etc/kibotos/e2b/ 与 /var/lib/kibotos/e2b/,包括它的 Operator 身份
Exposure 网关/etc/kibotos/gw/ 与 /var/lib/kibotos/gw/,包括它的 Operator 身份
所有包包创建的系统账户
  • NFS 上的共享池里可能还有别的 node 的对象,等声明它的每台 node 都已拆掉之后再删除它的目录。
  • 以后可能在同一个数据库上重装 ctrl 时,保留 pki/ 与 credential-keys/。没有 pki/,全部 node 与 Operator 都要重新注册;没有 credential-keys/,数据库里存的调用方凭证无法解密。

本页内容