kubernetes1.5.2--部署监控服务
发布日期:2025-04-03 03:55:26 浏览次数:8 分类:精选文章

本文共 4751 字,大约阅读时间需要 15 分钟。

Heapster与InfluxDB-Gracana集成监控方案


Heapster监控原理解析

Heapster作为Kubernetes集群的核心监控工具,在容器化管理中发挥着重要作用。其工作原理基于Kubernetes集群中的每个节点运行cAdvisor(容器化udeauer),用于收集节点和容器级资源数据(如CPU、内存、网络等)。在Kubernetes 1.5.2版本中,cAdvisor已被集成至kubelet,通过netstat可以发现kubelet新增了4194端口,这是cAdvisor监听的端口。开发人员可通过http://<node-ip>:4194访问cAdvisor。

Heapster不仅支持本地监控,还支持将采集到的数据存储至后端系统。值得注意的是,Heapster依赖于Kubernetes的DNS配置才能正常工作,默认使用inClusterConfig配置。在本文中,我们将使用influxDB作为后端存储系统,通过存储容器数据来展示监控指标。


Heapster配置与使用说明

Heapster配置文件解读

Heapster的部署通常采用控制器模式(ReplicationController),通过自定义配置文件(如heapster-controller.yaml)进行初始化。以下是示例配置文件的内容:

apiVersion: v1kind: ReplicationControllermetadata:  labels:    k8s-app: heapster    name: heapster  namespace: kube-systemspec:  replicas: 1  selector:    k8s-app: heapster  template:    metadata:      labels:        k8s-app: heapster    spec:      containers:      - command:          - /heapster          - --source=kubernetes:http://192.168.20.128:8080?inClusterConfig=false          - --sink=influxdb:http://172.17.114.120:8086        image: kubernetes/heapster:canary        imagePullPolicy: IfNotPresent        name: heapster      dnsPolicy: ClusterFirst      restartPolicy: Always      securityContext: {}      terminationGracePeriodSeconds: 30

Http和Https访问cfg说明

在实际使用中, Heapster 提供了两种主要的方式来访问API Server:通过HTTP和HTTPS。如果选择使用HTTPS,需确保集群内部的通信安全可靠。以下是通过HTTPS访问API Server的示例配置:

apiVersion: v1kind: ReplicationControllermetadata:  labels:    k8s-app: heapster  name: heapster  namespace: kube-systemspec:  replicas: 1  selector:    k8s-app: heapster  template:    metadata:      labels:        k8s-app: heapster    spec:      containers:      - name: heapster        image: kubernetes/heapster:canary        imagePullPolicy: IfNotPresent        command:        - /heapster        - --source=kubernetes:https://192.168.20.128:6443?inClusterConfig=false&auth=/etc/kubernetes/kubeconfig/kubeconfig        - --sink=influxdb:http://172.17.114.120:8086        volumeMounts:        - name: config          mountPath: /etc/kubernetes/kubeconfig/kubeconfig          readOnly: true        - name: certs          mountPath: /etc/ssl/kube          readOnly: true      volumes:      - name: certs        hostPath: /etc/ssl/kube      - name: config        hostPath: /etc/kubernetes/kubelet-config

服务配置说明

除了配置控制器, Heapster 的服务资源(Service)配置也至关重要。以下是 Heapster 服务配置文件的示例:

apiVersion: v1kind: Servicemetadata:  labels:    kubernetes.io/cluster-service: 'true'    kubernetes.io/name: Heapster  name: heapster  namespace: kube-systemspec:  ports:  - port: 80    targetPort: 8082  selector:    k8s-app: heapster

InfluxDB-Gracana集成部署

数据存储与可视化

InfluxDB作为时间序列数据库,适合存储容器化环境中的监控数据。Grafana则提供了可视化界面,能够直观展示数据趋势和指标状态。


InfluxDB与Grafana配置文件

以下是 InfluxDB 和 Grafana 的配置文件示例:

InfluxDB-Gracana 控制器配置:

apiVersion: v1kind: ReplicationControllermetadata:  labels:    name: influxdb-grafana  name: influxdb-grafana  namespace: kube-systemspec:  replicas: 1  selector:    name: influxdb-grafana  template:    metadata:      labels:        name: influxdb-grafana    spec:      containers:      - image: kubernetes/heapster_influxdb:v0.5        imagePullPolicy: IfNotPresent        name: influxdb        resources: {}        terminationMessagePath: /dev/termination-log        volumeMounts:        - mountPath: /data          name: influxdb-storage      - image: docker.io/googlecontainer/heapster_grafana:v2.6.0-2        imagePullPolicy: Never        name: grafana        resources: {}        terminationMessagePath: /dev/termination-log        volumeMounts:        - mountPath: /var          name: grafana-storage      dnsPolicy: ClusterFirst      restartPolicy: Always      securityContext: {}      terminationGracePeriodSeconds: 30      volumes:      - emptyDir: {}        name: influxdb-storage      - emptyDir: {}        name: grafana-storage

** Grafana 服务配置:**

apiVersion: v1kind: Servicemetadata:  labels:    kubernetes.io/cluster-service: 'true'    kubernetes.io/name: monitoring-grafana  name: monitoring-grafana  namespace: kube-systemspec:  ports:  - port: 80    targetPort: 3000  selector:    name: influxdb-grafana

** InfluxDB 服务配置:**

apiVersion: v1kind: Servicemetadata:  name: monitoring-influxdb  namespace: kube-systemspec:  clusterIP: 172.17.114.120  ports:  - name: http    port: 8083    targetPort: 8083  - name: api    port: 8086    targetPort: 8086  selector:    name: influxdb-grafana

部署指南

完成配置后,通过以下命令将资源部署到Kubernetes集群中:

kubectl create -f influxdb-grafana-controller.yamlkubectl create -f influxdb-service.yamlkubectl create -f grafana-service.yamlkubectl create -f heapster-service.yamlkubectl create -f heapster-controller.yaml

最后测试

部署完成后,建议等待数分钟以确保所有资源正常运行。然后,您可以通过以下路径访问Heapster监控界面:

  • 通过HTTP:http://192.168.20.128:8080/ui
  • 通过HTTPS:https://192.168.20.128:6443/ui

确保每个资源对象的监控图能够正确显示,为集群管理提供实时可视化支持。

上一篇:kubernetes1.5.2集群部署过程--安全模式
下一篇:kubernetes1.5.2--部署node-problem-detector服务

发表评论

最新留言

第一次来,支持一个
[***.219.124.196]2025年05月12日 16时54分23秒