You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 02:10:34