newrelic/newrelic-infra-operator本镜像提供可插拔的webhooks和控制器组件,用于支持Kubernetes(K8s)环境下监控解决方案的部署、运行与扩展。镜像集成了轻量化的事件处理与资源管理能力,通过模块化设计满足多样化监控需求。
通过Docker Hub或私有镜像仓库拉取镜像:
bashdocker pull [镜像仓库地址]/k8s-monitor-support:latest # 示例(假设官方仓库):docker pull k8s-monitor/k8s-monitor-support:v1.0.0
适用于测试环境或单机调试,需映射配置文件与网络:
bashdocker run -d \ --name k8s-monitor-support \ --network host \ # 需访问Kubernetes API时使用host网络(或配置--add-host) -v /path/to/config:/etc/monitor/config \ # 挂载配置目录 -v /var/run/kubernetes.sock:/var/run/kubernetes.sock \ # 挂载K8s API socket(集群内运行时) -e LOG_LEVEL=info \ # 日志级别:debug/info/warn/error -e WEBHOOK_PORT=8080 \ # webhooks服务端口 -e CONTROLLER_ENABLED=true \ # 是否启用控制器组件 [镜像仓库地址]/k8s-monitor-support:latest
推荐通过Deployment或DaemonSet部署,以下为Deployment示例:
yaml# k8s-monitor-support-deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: name: k8s-monitor-support namespace: monitoring spec: replicas: 1 # 单副本(控制器组件通常不需要多副本,避免冲突) selector: matchLabels: app: k8s-monitor-support template: metadata: labels: app: k8s-monitor-support spec: containers: - name: monitor-components image: [镜像仓库地址]/k8s-monitor-support:v1.0.0 ports: - containerPort: 8080 # webhooks服务端口 - containerPort: 8081 # 健康检查端口 env: - name: LOG_LEVEL value: "info" - name: KUBERNETES_SERVICE_HOST # 自动注入集群API地址(无需手动配置) valueFrom: fieldRef: fieldPath: status.hostIP - name: CONTROLLER_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace volumeMounts: - name: config-volume mountPath: /etc/monitor/config readOnly: true - name: kubeconfig-volume # 若集群外部署需挂载kubeconfig mountPath: /root/.kube/config readOnly: true resources: limits: cpu: 500m memory: 512Mi requests: cpu: 200m memory: 256Mi livenessProbe: httpGet: path: /healthz port: 8081 initialDelaySeconds: 30 periodSeconds: 10 volumes: - name: config-volume configMap: name: monitor-config # 需提前创建包含webhooks/控制器配置的ConfigMap - name: kubeconfig-volume secret: secretName: kubeconfig-secret # 集群外部署时的kubeconfig密钥(可选)
部署命令:
bashkubectl apply -f k8s-monitor-support-deployment.yaml -n monitoring
| 参数名 | 描述 | 类型 | 默认值 | 示例值 |
|---|---|---|---|---|
LOG_LEVEL | 日志输出级别 | string | info | debug |
WEBHOOK_PORT | webhooks服务监听端口 | int | 8080 | 9090 |
CONTROLLER_ENABLED | 是否启用控制器组件 | bool | true | false |
CONTROLLER_THREADS | 控制器并发工作线程数 | int | 2 | 4 |
K8S_API_QPS | 访问K8s API的QPS限制 | int | 50 | 100 |
WEBHOOK_TIMEOUT | webhook请求超时时间(秒) | int | 30 | 60 |
PLUGINS_DIR | 插件目录路径 | string | /etc/monitor/plugins | /opt/monitor/plugins |
通过ConfigMap挂载/etc/monitor/config/config.yaml,示例结构:
yamlwebhooks: enabled: true endpoints: - name: prometheus-forwarder type: http url: "[***]" timeout: 15s filters: # 仅转发符合条件的事件 event_types: ["PodCreated", "PodDeleted"] namespaces: ["default", "prod"] tls: # 启用HTTPS时配置 enabled: false cert_path: "/etc/tls/tls.crt" key_path: "/etc/tls/tls.key" controller: enabled: true resources: # 需管理的监控CRD资源 - group: monitoring.coreos.com version: v1 kind: ServiceMonitor namespace: "monitoring" sync_interval: "30s" # 资源状态同步周期
bash# Docker运行时 docker ps | grep k8s-monitor-support # Kubernetes部署时 kubectl get pods -n monitoring | grep k8s-monitor-support
bash# Docker运行时 docker logs -f k8s-monitor-support # Kubernetes部署时 kubectl logs -f [pod-name] -n monitoring -c monitor-components
bash# 端口转发(K8s环境) kubectl port-forward pod/[pod-name] 8080:8080 -n monitoring # 发送测试事件 curl -X POST http://localhost:8080/webhook \ -H "Content-Type: application/json" \ -d '{"event_type":"PodCreated","namespace":"default","resource_name":"test-pod"}'
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务