跳至主内容
版本:2.6.7

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 及以上版本。请执行以下步骤:

  1. 将 Chaos Mesh 仓库克隆到本地:

    git clone https://github.com/chaos-mesh/chaos-mesh.git
  2. 切换到 Chaos Mesh 目录

  3. 执行以下命令:

    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 工具连接物理机器。

运行以下命令完成操作:

  1. 执行命令前,需通过命令行从 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
  2. ca.crtca.key 文件复制到对应物理机。例如复制到 /etc/chaosd/pki 目录。

  3. 物理机上使用 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

  4. 在可访问 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 相关信息也有助于诊断。