设备内置命令
有两套独立的命令集可访问 Customer Edge,且两者互不包含。
- 设备本地,Site CLI 拥有 6 个顶级命令和 82 个
execcli子命令。 - 通过网络,调试 API 拥有独立的 34 个命令目录。
大多数设备本地功能没有对应的 API 等效项:整个 Vega 控制平面、Envoy 包装器、数据包捕获、kubelet 参数集、edit-* 文件以及辅助 root 访问对,均只能从设备本地访问。
访问这些功能需要使用 SSH 或串口控制台,以及一个在任何文档中均未提及的内容:
测量方式及命令集的交叉关系
Section titled “测量方式及命令集的交叉关系”以下命令集并非从供应商文档中转录,而是通过 scripts/sitecli_ssh_harvest.py 从实时节点读取,并连同其来源信息提交至 sitecli/exec-catalog.json。共进行了三次测量,分别处于三种注册状态:
| 测量时机 | 顶级命令 | execcli |
|---|---|---|
site_state: PROVISIONING | 6 | 82 |
site_state: PROVISIONED | 6 | 82 |
site_state: ONLINE | 6 | 82 |
三次测量返回了完全相同的命令集——不仅总数相同,命令名称也完全一致;且最后一次测量来自不同的部署环境,站点和资源名称均不同。因此,命令集不会随注册状态变化,某个命令若不存在,则是真实缺失,而非尚未开放。
与调试 API 的 34 个命令对比,有两个数字值得区分:
- 51 个
execcli子命令没有对应的 API 等效项。 - 55 是将整个设备本地命令面统计后得出的数字,因为它还包括 4 个
configure*命令——这些命令位于顶级而非execcli之下。
两个数字均正确;若读者重新计算其中一个后得到另一个,并不说明有误。本文所有数字均源自 sitecli/catalog.json 和 sitecli/exec-catalog.json。
哪些命令有完整文档,哪些仅作列举
Section titled “哪些命令有完整文档,哪些仅作列举”Customer Edge 运行 Linux 及若干第三方守护进程。为其命令编写文档会与上游参考资料重复,并暗示 F5 拥有这些软件的所有权,因此原则是:为 F5 的软件编写文档,对其他软件仅记录 CE 特有的内容。
共分三个层级,因为”我们的”和”第三方的”并非泾渭分明。分类结果记录在 sitecli/command-classification.json 中。
| 层级 | 处理方式 |
|---|---|
| F5 软件 | 完整文档——用途、语法、参数、捕获的输出、关注要点。涵盖 Argo、Vega、vpm、vifdump、configure*、edit-* 集、kubelet 参数、root 访问。 |
| CE 特有解读 | 某个第三方工具的输出在 CE 上具有特殊含义。记录 CE 特有的解读方式,工具本身的语义留由上游文档说明。 |
| 直通 | 标准 Linux 或第三方工具,无 CE 特有内容。仅列出其可用性并指向上游文档,不提供说明性文字。 |
该分类决定了是否需要为命令创建独立页面,也是避免本文档沦为 man 手册劣质副本的关键所在。
vegactl 命令:配置对象、内省表、跟踪缓冲区,以及持有主角色的节点。vifdump 命令。已有文档,此处不执行:它们会将捕获文件写入节点。edit-* 命令。xuser root 账户。由技术支持指导操作,操作后节点状态将发生变化。configure* 命令。以下命令在设备上可用,但本文档不作介绍——它们属于操作系统和第三方守护进程,而非 F5 的软件,其上游参考资料远比本文能提供的更为权威。
| 命令 | 上游 |
|---|---|
ping, netstat, lsof, ip, ip-link-show, nmcli, tracepath | iproute2, NetworkManager |
top, check-mem, sysctl, load-sysctl-conf, journalctl, files, rpm-ostree, chronyc-sources | coreutils, procps, systemd, rpm-ostree, chrony |
edit-etc-hosts, edit-sysctl-conf | 这些文件属于操作系统 |
systemctl-status-crio, systemctl-status-docker, systemctl-status-kubelet, systemctl-status-iscsid, systemctl-status-multipathd | systemd |
systemctl-restart-crio, systemctl-restart-docker, systemctl-restart-kubelet, systemctl-restart-iscsid, systemctl-restart-multipathd | systemd——每个命令都会中断节点上的工作负载 |
其中两个命令虽无独立页面,但值得特别说明。files 执行文件操作,且只会在 /tmp 目录下写入。每个 systemctl-restart-* 命令从定义上就具有破坏性——重启 crio 或 kubelet 会中断该节点上的工作负载。