这里提供一个经过测试的示例YAML模板,用于在Kubernetes中部署一个Node.js应用程序,并将其指标收集并发送到Prometheus:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-app
  labels:
    app: nodejs-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nodejs-app
  template:
    metadata:
      labels:
        app: nodejs-app
    spec:
      containers:
        - name: nodejs-app
          image: nodejs-app:latest
          ports:
            - name: http
              containerPort: 3000
          env:
            - name: PROMETHEUS_PORT
              value: "9090"
---
apiVersion: v1
kind: Service
metadata:
  name: nodejs-app
  labels:
    app: nodejs-app
spec:
  selector:
    app: nodejs-app
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 3000
---
apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: nodejs-app-monitor
  labels:
    app: nodejs-app
spec:
  selector:
    matchLabels:
      app: nodejs-app
  endpoints:
    - port: http
      interval: 30s
      path: /metrics


这个示例使用Deployment来创建一个Pod,其中包含一个名为nodejs-app的容器。容器运行Node.js应用程序,它在端口3000上暴露指标。这个容器还定义了一个名为PROMETHEUS_PORT的环境变量,用于指定Prometheus的端口号。Service将流量转发到Pod中的端口3000上,ServiceMonitor使用标签选择器选择要监视的Pod,并将其指标上传到Prometheus。在这个示例中,ServiceMonitor将每30秒轮询一次/metrics路径,并将指标发送到Prometheus的默认端口(9090)。

请注意,这个示例中的环境变量和路径可能需要根据你的应用程序做出一些调整。另外,你需要根据你的实际情况对Pod、Service和ServiceMonitor的名称、标签和选择器进行适当修改。你还需要在Kubernetes集群中安装和配置Prometheus和kube-prometheus-stack等监控相关的组件,以确保这个模板能够正常工作。


 

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐