探针问题 FAQ

最近更新时间:2024-06-18 09:45:11

我的收藏

问题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
- nodes
verbs:
- get
- list
- apiGroups:
- ""
resources:
- pods
verbs:
- get
- list
- update
- delete
- create
- patch
- apiGroups:
- ""
resources:
- pods/exec
verbs:
- 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 命名空间下)
注意:
在手动卸载探针后,您无需自行手动安装新的探针。跳转至探针管理页面进行安装即可。
在卸载探针后,请确保您的集群状态正常,以便新的探针能够顺利安装。如果在安装过程中遇到任何问题,请查看相关日志以获取更多详细信息,并根据日志中的错误信息进行相应的排查和解决。