问题1:探针资源占用情况
CVM 探针
CVM 的故障注入探针为预装在 CVM 主机上的可执行程序(位于
/data/cfg/chaos-executor
目录下),选择特定故障时,会要求安装故障注入探针。故障注入时会执行该程序,探针占用磁盘资源小于1M,在网络故障注入时 CPU 内存占用不超过系统1%,内存和 CPU 压力场景下基本等同于当前配置的压测目标值。容器探针
安装容器的故障注入探针后,会在集群创建以下资源:
1. 命名空间:tchaos。
2. ClusterRole: chaosmonkey,角色的 rules 如下,这表示探针 operator 将获得对 K8S Api 的相应权限。
rules:- apiGroups:- ""resources:- namespaces- nodesverbs:- get- list- apiGroups:- ""resources:- podsverbs:- get- list- update- delete- create- patch- apiGroups:- ""resources:- pods/execverbs:- create
3. ServiceAccount: chaosmonkey,注意在 tchaos 命名空间下。
4. ClusterRoleBinding:绑定 ClusterRole 和 ServiceAccount。
5. Operator:在 tchaos 命名空间下启动名称为 chaos-operator 的 deployment,副本数为1,pod 使用的 ServiceAccount 为上一步创建的 chaosmonkey,最大资源占用为1核2G (Limit)。探针安装后,chaos-operator 会一直处于运行中,消耗集群资源。当考虑控制成本时,请在故障注入后及时卸载探针。
6. 故障注入时,operator 会在目标节点临时创建一个 helperpod 注入故障,helperpod 对目标 pod 没有侵入性(不是 sidecar),此外,为了达到指定压力场景,helperpod 资源占用未做限制;在故障恢复时,临时创建的 helperpod 会被自动删除。
7. helperpod 的故障注入日志及实验记录将保存在节点
/var/log/chaos
目录下,通常小于10K。注意:
helperpod 的故障注入日志数据不会随探针卸载删除,必要时,请手动删除该日志。
问题2:检测发现存在探针状态异常
问题示例
解决方案
请检查命名空间 tchaos 下的 deployment 负载 chaos-operator,查看 Pod 是否启动。如未启动则查看时间中的异常信息。以下是一些可能限制 Pod 启动的事件类型和对应的解决办法:
事件类型 | 解决方法 |
OutOfMemory 或 OutOfCPU | 请检查集群中是否有足够的资源来运行探针。您可能需要增加集群的资源或者调整其他工作负载以释放资源。 |
InsufficientStorage | 请检查集群中是否有足够的存储空间来运行探针。您可能需要增加存储空间或者清理无用的数据以释放存储空间。 |
FailedScheduling | 可能是由于集群中没有节点能满足 Pod 的调度需求。请检查 Pod 的调度约束以及集群中节点的状态和标签。 |
CrashLoopBackOff 或 Error | 可能是由于探针的程序错误或者配置问题。请查看 Pod 的日志以获取更多详细信息,并根据日志中的错误信息进行相应的排查和解决。 |
ImagePullBackOff | 可能是由于无法从镜像仓库拉取镜像。请检查您的镜像仓库地址和凭证是否正确,以及网络连接是否正常。 |
NotTriggerScaleUp | 可能是由于集群的自动扩缩容策略没有触发。请检查您的集群自动扩缩容策略配置,以确保在需要时可以正确触发扩容。 |
问题3:检测发现存在无法自动卸载的探针,需要您先手动卸载
问题示例
解决方案
在这种情况下,您需要手动删除以下 Kubernetes 资源:
clusterrole: chaosmonkey
clusterrolebinding: chaosmonkey
serviceaccount: chaosmonkey(位于 tchaos 命名空间下)
namespace: tchaos
deployment: cloudchaos-operator(位于 tchaos 命名空间下)
注意:
在手动卸载探针后,您无需自行手动安装新的探针。跳转至探针管理页面进行安装即可。
在卸载探针后,请确保您的集群状态正常,以便新的探针能够顺利安装。如果在安装过程中遇到任何问题,请查看相关日志以获取更多详细信息,并根据日志中的错误信息进行相应的排查和解决。