Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
chaostoolkit-kubernetes — Chaos Toolkit 探针与操作 API 的 Kubernetes 驱动扩展 | Kitploit
工具/GitHubGitHub/chaostoolkit/chaostoolkit-kubernetes
云基础设施安全容器安全网络安全混沌工程
GitHubchaostoolkit/chaostoolkit-kubernetes

chaostoolkit-kubernetes

Chaos Toolkit 探针与操作 API 的 Kubernetes 驱动扩展

查看仓库

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站
191752年前Kitploit 审核通过

Chaos Toolkit 的 Kubernetes 扩展

Build Python versions Downloads

该项目包含活动(如探针和操作),你可以从实验中 通过 Chaos Toolkit 调用,以针对 Kubernetes API 实施 混沌工程:杀死 Pod、删除 StatefulSet 或节点……

安装

要用于你的实验,此包必须安装在 chaostoolkit 所在的 Python 环境中。

root@kitploit:~
$ pip install chaostoolkit-kubernetes

用法

要使用此包中的探针和操作,请将以下内容添加到 你的实验文件中:

root@kitploit:~
{
    "title": "Do we remain available in face of pod going down?",
    "description": "We expect Kubernetes to handle the situation gracefully when a pod goes down",
    "tags": ["kubernetes"],
    "steady-state-hypothesis": {
        "title": "Verifying service remains healthy",
        "probes": [
            {
                "name": "all-our-microservices-should-be-healthy",
                "type": "probe",
                "tolerance": true,
                "provider": {
                    "type": "python",
                    "module": "chaosk8s.probes",
                    "func": "microservice_available_and_healthy",
                    "arguments": {
                        "name": "myapp"
                    }
                }
            }
        ]
    },
    "method": [
        {
            "type": "action",
            "name": "terminate-db-pod",
            "provider": {
                "type": "python",
                "module": "chaosk8s.pod.actions",
                "func": "terminate_pods",
                "arguments": {
                    "label_selector": "app=my-app",
                    "name_pattern": "my-app-[0-9]$",
                    "rand": true
                }
            },
            "pauses": {
                "after": 5
            }
        }
    ]
}

就这样!注意该操作如何让你随机杀死一个 Pod。

请浏览文档以查看现有的探针和操作。

底层故障注入

请注意,对于网络、CPU 和内存压力测试,我们依赖出色的 Chaos Mesh 项目,它为注入 这些故障提供了良好的接口。

你需要先在集群中安装 Chaos Mesh 才能使用它们。

配置

使用 ~/.kube/config

如果你在 ~/.kube/config 文件中已有要访问集群的有效条目, 那么无需进行任何操作。

你可以通过设置 KUBECONFIG 来指定其他位置。

root@kitploit:~
$ export KUBECONFIG=/tmp/my-config

指定 Kubernetes 上下文

通常情况下,你的 Kubernetes 配置包含多个条目,你需要 定义要作为默认上下文使用的那一个, 当它未被显式提供时。

你当然可以使用 kubectl config use-context KUBERNETES_CONTEXT 更改默认值,但也可以在实验 中显式指定,如下所示:

root@kitploit:~
{
    "title": "Do we remain available in face of pod going down?",
    "description": "We expect Kubernetes to handle the situation gracefully when a pod goes down",
    "tags": ["kubernetes"],
    "secrets": {
        "k8s": {
            "KUBERNETES_CONTEXT": "..."
        }
    },
    "steady-state-hypothesis": {
        "title": "Verifying service remains healthy",
        "probes": [
            {
                "name": "all-our-microservices-should-be-healthy",
                "type": "probe",
                "tolerance": true,
                "secrets": ["k8s"],
                "provider": {
                    "type": "python",
                    "module": "chaosk8s.probes",
                    "func": "microservice_available_and_healthy",
                    "arguments": {
                        "name": "myapp"
                    }
                }
            }
        ]
    },
    "method": [
        {
            "type": "action",
            "name": "terminate-db-pod",
            "secrets": ["k8s"],
            "provider": {
                "type": "python",
                "module": "chaosk8s.pod.actions",
                "func": "terminate_pods",
                "arguments": {
                    "label_selector": "app=my-app",
                    "name_pattern": "my-app-[0-9]$",
                    "rand": true
                }
            },
            "pauses": {
                "after": 5
            }
        }
    ]
}

你需要将 KUBERNETES_CONTEXT 密钥键指定为 希望实验使用的上下文名称。同时确保告知操作和探针 它们应被传递的密钥条目: "secrets": ["k8s"]。

使用 Pod 的服务账户

当从 Pod 中运行时(例如,不是本地机器或 CI), ./.kube/config 文件不存在。相反,凭据可以在 /var/run/secrets/kubernetes.io/serviceaccount/token 找到。

要让扩展知道这一点,只需在 Pod 规格的 环境变量中设置 CHAOSTOOLKIT_IN_POD:

root@kitploit:~
env:
- name: CHAOSTOOLKIT_IN_POD
  value: "true"

使用此环境变量时,假定实验针对的是 运行实验所在的同一集群。如果你的实验 针对不同的集群,则不应设置此变量。 相反,你可以挂载一个包含目标集群 Kubernetes 配置的卷, 并将 KUBECONFIG 指向该配置。

在实验中传递所有凭据

最后,你可以显式地将所有必需的凭据信息传递给实验,如下所示:

使用 API 密钥

root@kitploit:~
{
    "secrets": {
        "kubernetes": {
            "KUBERNETES_HOST": "http://somehost",
            "KUBERNETES_API_KEY": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            }
        }
    }
}

使用用户名/密码

root@kitploit:~
{
    "secrets": {
        "kubernetes": {
            "KUBERNETES_HOST": "http://somehost",
            "KUBERNETES_USERNAME": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            },
            "KUBERNETES_PASSWORD": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            }
        }
    }
}

使用 TLS 密钥/证书

root@kitploit:~
{
    "secrets": {
        "kubernetes": {
            "KUBERNETES_HOST": "http://somehost",
            "KUBERNETES_CERT_FILE": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            },
            "KUBERNETES_KEY_FILE": {
                "type": "env",
                "key": "SOME_ENV_VAR"
            }
        }
    }
}

托管 Kubernetes 集群的身份验证

在某些托管 Kubernetes 集群上,你还需要向平台本身进行身份验证, 因为 Kubernetes 的身份验证已委托给该平台。

Google Cloud Platform

除了你的 Kubernetes 凭据(通过 ~/.kube/config 文件),你 还需要向 Google Cloud Platform 本身进行身份验证。通常 这是通过完成的:

root@kitploit:~
$ gcloud auth login

但也可以通过定义 GOOGLE_APPLICATION_CREDENTIALS 环境变量来实现。

贡献

如果你希望为此包贡献更多功能,我们非常 欢迎。请 fork 此项目,编写单元测试覆盖提议的更改, 实现更改,确保它们符合格式标准,然后向仓库 提交 PR 以供审阅。

有关格式标准的更多信息,请参阅格式一节。

Chaos Toolkit 项目要求所有贡献者必须在每个要合并到 仓库 master 分支的提交上签署 开发者原创证书。请在提交 PR 之前确保你能遵守 DCO 的规则。

开发

如果你想在此项目上进行开发,请确保安装开发 依赖。但首先,安装 PDM,然后安装 依赖。

root@kitploit:~
$ pdm install

现在,你可以编辑文件,你的环境将自动感知这些更改,即使在本地通过 chaos 命令运行时也是如此。

测试

要运行项目测试,请执行以下命令:

root@kitploit:~
$ pdm run tests

格式化和代码检查

我们使用 ruff 来对此仓库的代码进行代码检查和格式化。

在提交 Pull Request 之前,我们建议你使用以下命令对代码进行格式化:

root@kitploit:~
$ pdm run format

这将自动格式化任何不符合格式标准的代码。

由于某些问题不会被格式化工具捕获,我们还建议你运行:

root@kitploit:~
$ pdm run lint

以确保任何未使用的导入语句/过长的字符串等问题也能被捕获。

下载工具