appdynamics/cluster-agentCluster Agent for Kubernetes 是一款专为 Kubernetes 集群设计的监控与管理代理程序,通过 Docker 镜像形式分发。该 Agent 深度集成 Kubernetes API,旨在提供集群级别的全面观测能力,包括节点与工作负载状态监控、资源使用率采集、事件日志聚合、健康检查及告警等核心功能,帮助用户实现对 Kubernetes 集群的可视化管理、故障排查与资源优化。
从 Docker Registry 拉取最新版本镜像:
bashdocker pull example/cluster-agent:latest # 示例镜像地址,实际请替换为官方地址
Agent 需在每个节点运行以采集完整数据,推荐使用 DaemonSet 部署:
yaml# cluster-agent-daemonset.yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: cluster-agent namespace: monitoring # 建议部署在独立命名空间 spec: selector: matchLabels: app: cluster-agent template: metadata: labels: app: cluster-agent spec: hostNetwork: true # 需访问节点网络信息 containers: - name: cluster-agent image: example/cluster-agent:latest resources: limits: cpu: 500m memory: 512Mi requests: cpu: 200m memory: 256Mi env: - name: CLUSTER_NAME value: "prod-cluster-01" # 集群名称,用于多集群区分 - name: METRICS_INTERVAL value: "30s" # 指标采集间隔 - name: LOG_LEVEL value: "info" # 日志级别:debug/info/warn/error volumeMounts: - name: var-log mountPath: /var/log # 挂载节点日志目录(可选,用于日志采集) - name: var-lib-kubelet mountPath: /var/lib/kubelet # 挂载 kubelet 目录(可选,用于节点状态采集) volumes: - name: var-log hostPath: path: /var/log - name: var-lib-kubelet hostPath: path: /var/lib/kubelet
应用部署:
bashkubectl apply -f cluster-agent-daemonset.yaml
本地测试时,可通过 Docker 直接运行(需挂载 kubeconfig 以访问集群):
bashdocker run -d \ --name cluster-agent-test \ -v $HOME/.kube/config:/root/.kube/config:ro \ # 挂载本地 kubeconfig -e CLUSTER_NAME="local-test-cluster" \ -e METRICS_INTERVAL="10s" \ -e LOG_LEVEL="debug" \ example/cluster-agent:latest
本地开发调试时,使用 docker-compose 管理配置:
yaml# docker-compose.yml version: "3" services: cluster-agent: image: example/cluster-agent:latest volumes: - $HOME/.kube/config:/root/.kube/config:ro environment: - CLUSTER_NAME=local-dev-cluster - METRICS_INTERVAL=5s - LOG_LEVEL=debug - ALERT_WEBHOOK_URL=[***] # 本地告警接收服务 network_mode: host # 共享主机网络,便于访问本地 Kubernetes 集群
启动服务:
bashdocker-compose up -d
| 参数名 | 描述 | 默认值 | 可选值/示例 |
|---|---|---|---|
CLUSTER_NAME | 集群唯一标识,用于多集群数据区分 | default | prod-eks-01, staging-gke |
METRICS_INTERVAL | 指标采集时间间隔 | 30s | 10s, 1m |
LOG_LEVEL | 日志输出级别 | info | debug, warn, error |
KUBERNETES_API_URL | Kubernetes API Server 地址(自动检测) | 自动从 kubeconfig 或环境变量获取 | [***] |
ALERT_THRESHOLDS | 资源告警阈值(JSON 格式) | {"cpu": 80, "memory": 85} | {"cpu": 90, "memory": 95} |
PLUGINS_ENABLED | 启用的插件列表(逗号分隔) | metrics,events | metrics,events,security |
支持通过命令行参数覆盖环境变量配置,格式:--参数名=值。例如:
bashdocker run example/cluster-agent:latest --log-level=debug --metrics-interval=5s
复杂配置可通过挂载配置文件(如 config.yaml)实现,挂载路径需通过 CONFIG_FILE 环境变量指定:
yaml# config.yaml 示例 cluster_name: "prod-cluster-01" metrics: interval: "30s" include: ["pods", "nodes", "services"] # 仅采集指定资源类型指标 alert: thresholds: cpu: 80 memory: 85 webhooks: - url: "[***]" timeout: "5s" plugins: enabled: ["metrics", "events", "cost-analyzer"]
挂载配置文件运行:
bashdocker run -d \ -v $(pwd)/config.yaml:/etc/cluster-agent/config.yaml \ -e CONFIG_FILE=/etc/cluster-agent/config.yaml \ example/cluster-agent:latest
bashkubectl get pods -n monitoring -l app=cluster-agent # 检查 Pod 运行状态 kubectl logs -n monitoring <pod-name> # 查看日志
bashdocker ps | grep cluster-agent # 检查容器状态 docker logs <container-id> # 查看日志
image 字段后重新应用 YAML,或使用 kubectl set image:
bashkubectl set image daemonset/cluster-agent cluster-agent=example/cluster-agent:v1.2.0 -n monitoring
kubectl rollout undo 回滚到上一版本:
bashkubectl rollout undo daemonset/cluster-agent -n monitoring
根据集群规模调整资源限制(如 100 节点集群建议 CPU 500m/内存 1Gi):
bashkubectl edit daemonset/cluster-agent -n monitoring # 修改 resources.limits/requests
A:确保 DaemonSet 挂载了节点磁盘目录(如 /var/lib/kubelet 或 /proc/mounts),并检查容器是否有足够权限(可添加 securityContext: privileged: true,生产环境谨慎使用)。
A:通过 CLUSTER_NAME 环境变量为每个集群设置唯一名称,后端存储(如 Prometheus)可基于该标签聚合数据。
A:修改 PLUGINS_ENABLED 环境变量,仅保留所需插件(如 PLUGINS_ENABLED=metrics,events)。
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务