Kubernetes多副本Deployment中Dotnet Monitor正确监控方案咨询
Kubernetes多副本Deployment下的Dotnet Monitor监控方案
你的单副本配置已经采用了Sidecar模式(每个Pod内运行dotnet monitor容器),这种模式天然支持多副本场景,只需要做以下调整和补充:
1. 调整Deployment副本数并修正路径问题
直接修改Deployment的replicas字段为你需要的数量,同时修正原配置中主容器诊断端口路径与挂载目录不匹配的问题(否则Sidecar无法连接到主容器的诊断socket):
apiVersion: apps/v1 kind: Deployment namespace: test spec: progressDeadlineSeconds: 600 replicas: 2 # 修改为目标副本数 selector: matchLabels: app: manager-app # 补充Selector标签,与Pod模板标签对齐 template: metadata: labels: app: manager-app # 给Pod添加标签,用于后续Service和监控匹配 spec: volumes: - name: diagnostics emptyDir: {} containers: - env: - name: DOTNETMONITOR_DiagnosticPort__ConnectionMode value: Listen - name: DOTNETMONITOR_DiagnosticPort__EndpointName value: /tmp/port.sock # 修正路径,与挂载的/tmp目录对应 - name: DOTNETMONITOR_Storage__DumpTempFolder value: /tmp/dumps # 同步修正存储路径到挂载目录 - name: DOTNETMONITOR_Urls value: http://localhost:52323 image: manager:master imagePullPolicy: Always name: chart ports: - containerPort: 10800 protocol: TCP volumeMounts: - mountPath: /tmp name: diagnostics - name: sidecar image: dotnet/nightly/monitor ports: - containerPort: 52325 name: metrics # 给端口命名,方便后续Service引用 args: ["collect","--urls", "http://*:52323", "--metricUrls", "http://*:52325", "--no-auth"] volumeMounts: - name: diagnostics mountPath: /tmp resources: limits: cpu: "1" memory: 500Mi requests: cpu: 200m memory: 500Mi
2. 创建Service暴露Metrics端点
创建ClusterIP类型的Service,匹配所有Pod的标签,将Sidecar的52325端口暴露给监控系统:
apiVersion: v1 kind: Service metadata: name: manager-monitor-service namespace: test spec: selector: app: manager-app # 匹配Deployment Pod的标签 ports: - name: metrics port: 52325 targetPort: 52325 # 对应Sidecar的容器端口
3. 配置监控系统自动抓取Metrics
以Prometheus为例,可通过PodMonitor或ServiceMonitor实现多副本Pod的Metrics自动发现:
示例PodMonitor配置(直接监控Pod)
apiVersion: monitoring.coreos.com/v1 kind: PodMonitor metadata: name: manager-pod-monitor namespace: test spec: selector: matchLabels: app: manager-app # 匹配Pod标签 podMetricsEndpoints: - port: metrics # 对应Sidecar容器的端口名 path: /metrics interval: 15s
示例ServiceMonitor配置(通过Service代理监控)
apiVersion: monitoring.coreos.com/v1 kind: ServiceMonitor metadata: name: manager-service-monitor namespace: test spec: selector: matchLabels: app: manager-app # 需给Service添加对应标签 endpoints: - port: metrics path: /metrics interval: 15s
关键注意事项
- 每个Pod的Sidecar仅监控当前Pod内的主容器,多副本间通过Pod级别的emptyDir隔离,不会互相干扰。
- 确保监控系统具备目标Namespace下的Pod/Service访问权限,RBAC配置需正确。
内容的提问来源于stack exchange,提问作者Iceforest
相关产品推荐
相关产品推荐

