动一下小手点一下赞。谢谢! 你的赞就是我更新的动力。

Kubernetes (K8S) 是一个用于自动部署、扩展和管理容器化应用程序的开源系统。在容器化环境中,监控集群和应用程序的流量是非常重要的,以确保系统稳定和高性能。本文将介绍如何在K8S中实现流量监控,帮助刚入行的小白快速上手。

整个流程可以总结为以下几个步骤:

步骤

操作

1

配置Prometheus

2

配置Grafana

3

配置Prometheus Adapter

4

配置ServiceMonitor

5

查看监控数据

接下来我们一步步介绍每个步骤需要做什么以及对应的代码示例:

步骤 1: 配置Prometheus

在K8S中,Prometheus是一个广泛使用的监控工具,可以用于监控不同组件的指标数据。我们首先需要在K8S集群中部署Prometheus。

apiVersion: v1
kind: Namespace
metadata:
  name: monitoring
---
apiVersion: v1
kind: Service
metadata:
  name: prometheus
  namespace: monitoring
spec:
  selector:
    app: prometheus
  ports:
  - port: 9090
    targetPort: 9090
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: prometheus
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: prometheus
  template:
    metadata:
      labels:
        app: prometheus
    spec:
      containers:
      - name: prometheus
        image: prom/prometheus:latest
        ports:
        - containerPort: 9090

这段代码创建了一个名为 prometheus 的Deployment,并将其暴露为一个Service,以便其他组件可以访问Prometheus。

步骤 2: 配置Grafana

Grafana是一个可视化监控工具,可以将Prometheus收集的数据显示为图形化界面。我们需要在K8S中部署Grafana来可视化监控数据。

apiVersion: v1
kind: Namespace
metadata:
  name: monitoring
---
apiVersion: v1
kind: Service
metadata:
  name: grafana
  namespace: monitoring
spec:
  selector:
    app: grafana
  ports:
  - port: 3000
    targetPort: 3000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: grafana
  namespace: monitoring
spec:
  replicas: 1
  selector:
    matchLabels:
      app: grafana
  template:
    metadata:
      labels:
        app: grafana
    spec:
      containers:
      - name: grafana
        image: grafana/grafana:latest
        ports:
        - containerPort: 3000

这段代码创建了一个名为 grafana 的Deployment,并将其暴露为一个Service,以便在浏览器中访问Grafana的界面。

步骤 3: 配置Prometheus Adapter

Prometheus Adapter是一个K8S自定义指标API的适配器,允许Prometheus查询自定义指标并将其暴露给K8S API服务器。

apiVersion: v1
kind: ServiceAccount
metadata:
  name: prometheus-adapter
  namespace: monitoring
---
apiVersion: apiextensions.k8s.io/v1beta1
kind: CustomResourceDefinition
metadata:
  name: custom-metrics
spec:
  group: monitoring.coreos.com
  names:
    kind: CustomMetric
    listKind: CustomMetricList
    plural: custom-metrics
    singular: custom-metric
  scope: Namespaced
  version: v1

这段代码创建了一个ServiceAccount和一个CustomResourceDefinition,用于配置Prometheus Adapter。

步骤 4: 配置ServiceMonitor

ServiceMonitor是Prometheus Operator提供的一个自定义资源,用于告诉Prometheus应该如何监控特定服务。

apiVersion: monitoring.coreos.com/v1
kind: ServiceMonitor
metadata:
  name: my-service-monitor
  namespace: default
spec:
  selector:
    matchLabels:
      app: my-service
  endpoints:
  - interval: 15s
    port: web

这段代码创建了一个名为 my-service-monitor 的ServiceMonitor,告诉Prometheus监控具有标签 app: my-service 的服务,并使用 web 端口。

步骤 5: 查看监控数据

现在,你可以在浏览器中访问Grafana界面,创建仪表盘并查看K8S集群中各个组件的监控数据了。

通过以上步骤,我们成功地实现了在K8S集群中进行流量监控。