Chaosctl
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
Chaosctl 是一款辅助调试 Chaos Mesh 的工具。通过 Chaosctl,您可以简化新混沌类型的开发和调试流程,并在提交 issue 时为其他开发者提供参考依据。
获取 Chaosctl
Linux 用户可直接下载 Chaosctl 可执行文件。
curl -sSL https://mirrors.chaos-mesh.org/latest/chaosctl -O
Windows 或 macOS 用户需从源代码编译,推荐使用 Go v1.15 及以上版本。请执行以下步骤:
-
将 Chaos Mesh 仓库克隆到本地:
git clone https://github.com/chaos-mesh/chaos-mesh.git -
切换到 Chaos Mesh 目录
-
执行以下命令:
make chaosctl编译后的可执行文件位于
bin/chaosctl。
功能特性
当前 Chaosctl 支持打印混沌实验的日志和调试信息。
打印日志
使用 chaosctl logs 命令可打印所有 Chaos Mesh 组件的日志。查看功能帮助和示例请运行 chaosctl logs -h,示例如下:
chaosctl logs -t 100 # Print the last 100 lines of logs from all components
打印调试信息
使用 chaosctl debug 命令打印调试信息,查看功能帮助请运行 chaosctl debug -h。调试时需确保 Chaosctl 已连接对应的 chaos-daemon。若部署 Chaos Mesh 时禁用了 TLS(默认启用),请添加 -i 选项告知 Chaosctl 未启用 TLS,示例如下:
./chaosctl debug -i networkchaos web-show-network-delay
当前 Chaosctl 仅支持 IOChaos、NetworkChaos 和 StressChaos 的调试。
为 Chaosd 生成 TLS 证书
当 Chaosd 与 Chaos Mesh 之间发起请求时,为确保 Chaosd 与 Chaos-controller-manager 服务间的通信安全,建议启用 mTLS(双向传输层安全)模式。
启用 mTLS 模式需在 Chaosd 和 Chaos Mesh 中配置 TLS 证书参数。请确保两者均已生成 TLS 证书,并携带证书参数启动服务。
-
Chaosd:可在配置 TLS 证书参数前或后启动服务。出于集群安全考虑,建议先配置证书参数再启动 Chaosd,详见部署 Chaosd 服务器。
-
Chaos Mesh:若通过 Helm 部署,默认已配置 TLS 证书参数。
若 Chaosd 未生成 TLS 证书,可通过 Chaosctl 命令行快速生成。以下用例展示了不同场景下的操作方案:
用例 1:运行 Chaosctl 的节点可访问 Kubernetes 集群,并能通过 SSH 工具连接物理机器。
运行以下命令完成操作:
-
命令:使用
chaosctl pm init命令:./chaosctl pm init pm-name --ip=123.123.123.123 -l arch=amd64,anotherkey=value -
操作说明:该命令执行以下动作:
- 自动生成 Chaosd 所需证书并保存至对应物理机器
- 在 Kubernetes 集群中创建对应的
PhysicalMachine资源
功能详情和示例请参考 chaosctl pm init -h。
用例 2:运行 Chaosctl 的节点可访问 Kubernetes 集群,但无法通过 SSH 工具连接物理机器。
运行以下命令完成操作:
-
执行命令前,需通过命令行从 Kubernetes 集群手动获取 CA 证书。例如:
kubectl get secret chaos-mesh-chaosd-client-certs -n chaos-mesh -o "jsonpath={.data['ca\.crt']}" | base64 -d > ca.crt
kubectl get secret chaos-mesh-chaosd-client-certs -n chaos-mesh -o "jsonpath={.data['ca\.key']}" | base64 -d> ca.key -
将
ca.crt和ca.key文件复制到对应物理机。例如复制到/etc/chaosd/pki目录。 -
在物理机上使用
chaosctl pm generate命令生成 TLS 证书(默认保存到 /etc/chaosd/pki)。例如:./chaosctl pm generate --cacert=/etc/chaosd/pki/ca.crt --cakey=/etc/chaosd/pki/ca.key该功能详细说明及示例请参考
chaosctl pm generate -h。 -
在可访问 Kubernetes 集群的机器上,使用
chaosctl pm create命令在集群中创建PhysicalMachine资源。例如:./chaosctl pm create pm-name --ip=123.123.123.123 -l arch=amd64该功能详细说明及示例请参考
chaosctl pm create -h。
问题与反馈
Chaosctl 的代码目前托管在 Chaos Mesh 项目中,详情请参考 chaos-mesh/pkg/chaosctl。
若操作中遇到问题,或希望协助改进此工具,欢迎通过 CNCF Slack 联系 Chaos Mesh 团队,或提交 GitHub issue。
描述问题时建议附上相关日志及混沌实验信息。为方便开发者排查,可在问题中附加 chaosctl logs 结果。若问题涉及 iochaos、networkchaos 或 stresschaos,附上 chaosctl debug 相关信息也有助于诊断。