prometheus-operator使用(三) -- podMonitor监控calico

上文讲到podMonitor是pod监控对象的抽象,本文就以calico为例,分析如何使用podMonitor对象监控calico。

calico中核心的组件是Felix,它负责设置路由表和ACL规则,同时还负责提供网络健康状况的数据;这些数据会被写入etcd。
由此可见,监控calico的核心便是监控felix,felix相当于calico的大脑。

1. calico的部署方式

calico-node在集群中以daemonset部署,部署了3个Pod:

# kubectl get all -A|grep calico-node
kube-system     pod/calico-node-j5kw9                          1/1     Running   6          195d
kube-system     pod/calico-node-njz9m                          1/1     Running   4          195d
kube-system     pod/calico-node-tmg9v                          1/1     Running   4          195d
kube-system     daemonset.apps/calico-node                3         3         3       3            3           <none>                   217d

2. 打开calico的metrics监听

calico在启动时,默认没有打开Metrics监听:

# kubectl edit ds calico-node -n kube-system

# 修改container name=calico-node的配置;
# 将其env:FELIX_PROMETHEUSMETRICSENABLED修改为“True”
    spec:
      containers:
      - env:
        ......
        - name: FELIX_PROMETHEUSMETRICSENABLED
          value: "True"
        - name: FELIX_PROMETHEUSMETRICSPORT
          value: "9091"

将FELIX_PROMETHEUSMETRICSENABLED=True,其监听端口为9091:

# curl http://localhost:9091/metrics
# HELP felix_active_local_endpoints Number of active endpoints on this host.
# TYPE felix_active_local_endpoints gauge
......

3. 创建podMonitor

首先,修改dameonset,为container定义container port;
containerPort=9091,name=http-metrics:

# kubectl edit ds calico-node -n kube-system

# 修改container name: calico-node的配置
# 增加ports声明
    spec:
      containers:
        ......
        ports:
        - containerPort: 9091
          name: http-metrics
          protocol: TCP

再创建podMonitor对象:

# cat prometheus-podMonitorCalico.yaml

apiVersion: monitoring.coreos.com/v1
kind: PodMonitor
metadata:
  labels:
    k8s-app: calico-node
  name: calico-node
  namespace: monitoring
spec:
  podMetricsEndpoints:
  - interval: 15s
    path: /metrics
    port: http-metrics
  namespaceSelector:
    matchNames:
    - kube-system
  selector:
    matchLabels:
      k8s-app: calico-node

其中定义了pod的筛选条件:

  • Port名称=http-metrics;
  • k8s-app=calico-node;
  • namespace=kube-system;

4. prometheus dashboard查看calico监控任务

参考:

  1. https://fuckcloudnative.io/po...
38 声望
21 粉丝
0 条评论
推荐阅读
cadvisor采集docker容器的DiskUsage指标--源码分析
一. DiskUsage指标cadvisor采集的docker容器的DiskUsage指标,包含:container_fs_inodes_freecontainer_fs_inodes_totalcontainer_fs_limit_bytescontainer_fs_usage_bytes {代码...} 二. 采集的过程docker容器...

a朋阅读 507

Helm3-安装RabbitMQ
最近在使用k8s搭建微服务时,发现需要手动修改yaml文件里面的pod name、pod image、svc name、ingress tls等等,非常麻烦,但是有了helm之后情况就不一样了,helm是k8s的包管理器,类似ubuntu的apt-get,centos的...

Awbeci阅读 9.5k

Kubernetes Gateway API 深入解读和落地指南
Kubernetes Gateway API 是 Kubernetes 1.18 版本引入的一种新的 API 规范,是 Kubernetes 官方正在开发的新的 API,Ingress 是 Kubernetes 已有的 API。Gateway API 会成为 Ingress 的下一代替代方案。Gateway A...

Rainbond2阅读 417

Jvm调优与微服务资源分配
在没有接触微服务之前,我们的java程序一般都部署在WebLogic、Tomcat这类应用服务器上,这些应用服务器本身也是基于Jvm虚拟机的。一般我们统一对应用服务器做Jvm参数调优(分配多大内存,线程池限制等),而不用...

KerryWu阅读 6.1k

K8S-使用Helm安装RabbitMQ和Redis的总结
记得去年2021上半年的时候自学了k8s并且使用helm安装了rabbitmq和redis,可以在开发、测试和生产环境上用起来,但是下半年之后就没有用,再拾起来的时候发现好多知识点都忘了,这篇文章就是总结使用helm安装rabbm...

Awbeci1阅读 1.9k

Kubernetes v1.27 新特性一览
Kubernetes v1.27 是 2023 年的第一个大版本更新,包含了近 60 项主要的更新。 而 1.26 只有 37 项,所以这个版本可以说是一个变化非常显著的版本了。

张晋涛1阅读 1.1k

封面图
实战:用“廉价”的NFS作为K8S后端存储
大家都知道,NFS是一种基于网络的文件系统协议,允许在不同的机器之间共享文件系统资源。在K8S中,可以使用NFS作为后端存储,以提供持久化存储和共享存储卷。但是否适合在生产环境使用NFS作为后端存储,这取决于...

不背锅运维2阅读 722

38 声望
21 粉丝
宣传栏