使用Kindling 观测 Kubernetes 应用网络连接状态

news2024/12/23 7:23:22

kindling介绍:

Kindling 解决的是,在不入侵应用的前提下,如何观测网络的问题,其功能主要是通过暴露内核事件来实现观测。如果主机内核版本高于 4.14,可以使用 eBPF 模块;如果主机内核是低版本,采用的是 Sysdig 实现相关观测。

[root@master yaml]# uname -a
Linux master 3.10.0-1160.el7.x86_64 #1 SMP Mon Oct 19 16:18:59 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux

我的内核小于4.14

  1. yaml安装kindlking
git clone https://github.com/shaowenchen/demo
cd kindling/yaml
kubectl apply -f ./
  1. 修改kindling-daemonset的资源限制
apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    k8s-app: kindling-agent
  name: kindling-agent
  namespace: kindling
spec:
  selector:
    matchLabels:
      k8s-app: kindling-agent
  template:
    metadata:
      labels:
        k8s-app: kindling-agent
    spec:
      serviceAccount: kindling-agent
      containers:
      - name: kindling-agent
        image: shaowenchen/kindling-agent:ubuntu-20.04
        imagePullPolicy: IfNotPresent
        securityContext:
          privileged: true
        resources:
          limits:
            memory: 1Gi
            cpu: 500m
          requests:
            cpu: 10m
            memory: 300Mi
        env:
        - name: HOST_PROC
          value: /host/proc
        - name: PL_HOST_PATH
          value: /host
        - name: SYSDIG_HOST_ROOT
          value: /host
        - name: GOGC
          value: "400"
        - name: MY_NODE_IP
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        readinessProbe:
          exec:
            command:
            - cat
            - /opt/kernel-support
          initialDelaySeconds: 5
          periodSeconds: 5
        volumeMounts:
        - mountPath: /etc/kindling/config
          name: kindlingcfg
        - mountPath: /sys
          name: sys-vol
        - mountPath: /etc/modprobe.d
          name: modprobe-d
          readOnly: true
        - mountPath: /host/dev
          name: dev-vol
        - mountPath: /host/proc
          name: proc-vol
          readOnly: true
        - mountPath: /host/etc
          name: etc-vol
          readOnly: true
        - mountPath: /host/boot
          name: boot-vol
          readOnly: true
        - mountPath: /host/lib/modules
          name: modules-vol
          readOnly: true
        - mountPath: /host/usr
          name: usr-vol
          readOnly: true
        - mountPath: /host/run
          name: run-vol
        - mountPath: /host/var/run
          name: varrun-vol
        - mountPath: /dev/shm
          name: dshm
      dnsPolicy: ClusterFirstWithHostNet
      hostNetwork: true
      hostPID: true
      restartPolicy: Always
      schedulerName: default-scheduler
      terminationGracePeriodSeconds: 30
      volumes:
      - configMap:
          defaultMode: 420
          name: kindlingcfg
        name: kindlingcfg
      - hostPath:
          path: /etc/modprobe.d
        name: modprobe-d
      - emptyDir:
          medium: Memory
        name: dshm
      - hostPath:
          path: /dev
        name: dev-vol
      - hostPath:
          path: /proc
        name: proc-vol
      - hostPath:
          path: /etc
        name: etc-vol
      - hostPath:
          path: /boot
        name: boot-vol
      - hostPath:
          path: /lib/modules
        name: modules-vol
      - hostPath:
          path: /usr
        name: usr-vol
      - hostPath:
          path: /run
        name: run-vol
      - hostPath:
          path: /var/run
        name: varrun-vol
      - hostPath:
          path: /sys
        name: sys-vol

  1. 手动修改svc当然也可以使用svc的地址
[root@master yaml]# cat kindling-service.yml
apiVersion: v1
kind: Service
metadata:
  namespace: kindling
  name: kindling-agent
  labels:
    k8s-app: kindling-agent
  annotations:
    prometheus.io/path: /metrics
    prometheus.io/port: "9500"
    prometheus.io/scrape: "true"
spec:
  selector:
    k8s-app: kindling-agent
  type: NodePort
  ports:
  - name: http
    port: 9500
    nodePort: 31792
    targetPort: 9500
    protocol: TCP
  1. 访问是否有数据返回http://master_ip:31792/metrics
    在这里插入图片描述
  2. prometheus安装不说了,配置如下:
    k8s prometheus一键安装包https://download.csdn.net/download/weixin_43606975/85824711?spm=1001.2014.3001.5503
    在这里插入图片描述
  3. Grafana 安装忽略,granfan为8.3.1安装插件如下:
    下载插件:
git clone https://github.com/shaowenchen/demo
cd kindling/dashboard
kubectl cp topo-plugin.tar.gz grafana-7559f9456f-l5dqr:/var/lib/grafana/plugins/
kubectl exec -it grafana-7559f9456f-l5dqr -n prometheus bash
#cd var/lib/grafana/plugins/
#mkdir kindlingproject-topology-panel
#mv topo-plugin.tar.gz kindlingproject-topology-panel/
#cd kindlingproject-topology-panel/
#tar xvf topo-plugin.tar.gz
  1. granfan配置文件修改
[root@master yaml]# cat /home/sd-prometheus/grafana/grafana-conf.yaml
apiVersion: v1
data:
  grafana.ini: |
        [paths]
        [server]
        [database]
        [remote_cache]
        [dataproxy]
        [analytics]
        [security]
        [snapshots]
        [dashboards]
        [users]
        [auth]
        [auth.anonymous]
        [auth.github]
        [auth.gitlab]
        [auth.google]
        [auth.grafana_com]
        [auth.azuread]
        [auth.okta]
        [auth.generic_oauth]
        [auth.basic]
        [auth.proxy]
        [auth.ldap]
        enabled = true
        config_file = /etc/grafana/ldap.toml
        allow_sign_up = true
        [smtp]
        enabled = true
        host = smtp.exmail.qq.com:465
        user = gitlab@movie.cn
        password = password
        from_address = gitlab@movie.cn
        from_name = Grafana
        [emails]
        [log]
        [log.console]
        [log.file]
        [log.syslog]
        [quota]
        [alerting]
        [annotations.dashboard]
        [annotations.api]
        [explore]
        [metrics]
        [metrics.environment_info]
        [metrics.graphite]
        [grafana_com]
        [tracing.jaeger]
        [external_image_storage]
        [external_image_storage.s3]
        [external_image_storage.webdav]
        [external_image_storage.gcs]
        [external_image_storage.azure_blob]
        [external_image_storage.local]
        [rendering]
        [panels]
        [plugins]
        enable_alpha = true
        plugin_admin_enabled = true
        plugin_admin_external_mange_enabled = true
        allow_loading_unsigned_plugins = kindlingproject-topology-panel
        [plugin.grafana-image-renderer]
        [enterprise]
        [feature_toggles]
        [date_formats]

在这里插入图片描述

  1. 重启granfan
  2. 访问granfan并导入json
https://github.com/shaowenchen/demo/tree/master/kindling/dashboard

在这里插入图片描述

  1. 查看
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/196189.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

多级缓存实现

多级缓存实现1.什么是多级缓存2.JVM进程缓存2.1.导入案例2.2.初识Caffeine2.3.实现JVM进程缓存2.3.1.需求2.3.2.实现3.Lua语法入门3.1.初识Lua3.1.HelloWorld3.2.变量和循环3.2.1.Lua的数据类型3.2.2.声明变量3.2.3.循环3.3.条件控制、函数3.3.1.函数3.3.2.条件控制3.3.3.案例4…

俯卧撑计数 opencv-python + mediapipe

分享一个国外的趣味项目,可以计数,也可以完善进行动作是打分,确定标准程度 原文链接:https://aryanvij02.medium.com/push-ups-with-python-mediapipe-open-a544bd9b4351 程序原理介绍 在新加坡军队中,有一种测试叫做…

程序股票交易接口怎么撤单?

在程序股票交易接口的开发基础上,还能增加一个撤单的委托模块,因为程序股票交易接口的开发不单单是委托下单,那照样也能撤单,这两种的开发原理上,都不冲突,有的股票接口需要计算多种算法,算起来…

CNCAP2021法规adas功能场景

CNCAP2021法规adas功能场景概述功能介绍试验场景概述 C-NCAP是中国汽车技术研究中心于2006年3月2日正式发布的首版中国新车评价规程。中国新车评价规程每三年进行一次规程改版,最新的是2021版本。本文只针对cncap2021主动安全场景进行梳理。 功能介绍 1、AEB(Aut…

vue2低代码平台搭建(三)组件间交互的实现

前言 大家好,我是L丶Y,我们在上一篇文章中主要介绍了低代码平台的页面设计器相关的一些功能原理,打通了页面设计器顶部操作栏、左侧组件列表,中间画布、右侧属性配置四个部分的关系。能够实现组件列表的展示、组件到画布的拖动,属性配置修改对组件渲染效果影响,并说明了…

Picgo配置Bilibili图床

Picgo 配置Bilibili 图床 picgo-plugin-bilibili 为 PicGo 开发的一款插件,新增了B站图床 图床。 使用用户动态的图片上传API。填写SESSDATA即可,获取方式在下面。 文章目录Picgo 配置Bilibili 图床在线安装获取B站SESSDATA图片样式解决B站防盗链&#…

隐函数及参数方程求导——“高等数学”

各位CSDN的uu们你们好呀,今天,小雅兰的内容是隐函数求导和参数方程求导,下面,就让我们进入求导数的世界吧 一、隐函数的导数 二、隐函数求导 三、由参数方程确定的函数的导数 四、相关变化率 一、隐函数的导数 要想知道隐函数…

官宣:计算中间件 Apache Linkis 正式毕业成为 Apache 顶级项目

Apache 软件基金会(ASF)孵化器于2022年12月03日,通过了 Apache Linkis 计算中间件项目的孵化毕业投票。2023年01月18日,Apache 软件基金会官方宣布 Apache Linkis 顺利毕业,成为 Apache 顶级项目(TLP&#…

泊松分布的计算方式

如果都要计算泊松分布了,那么就默认你知道泊松分布的基本知识了,我这里只介绍如何计算,我是用的Excel直接套用公式计算的,如果想在代码里用,我的实现方式是,先用Excel把值全部求出来,然后做成ma…

开组会写论文必备工具清单

来源:投稿 作者:卷舒 编辑:学姐 公式工具 https://www.latexlive.com/ snip这个工具也与之类似,但是需要安装,且有50个的限制。 这是一个LaTeX公式在线编辑器。提供了各类快捷符号及公式模板。在输入区域尝试LaTeX公…

创建SpringBoot工程

目录 一、官网创建 1、进入spring官网:Spring | Home 2、点击Spring Boot,滑倒最下面,点击Spring initializr 3,创建Spring Boot工程,版本选2.多的,高版本配置可能会出现问题,jdk选你电脑上装…

训练营day15

层序遍历 10 226.翻转二叉树 101.对称二叉树 2 102.二叉树的层序遍历 力扣题目链接 给你一个二叉树,请你返回其按 层序遍历 得到的节点值。 (即逐层地,从左到右访问所有节点)。 接下来我们再来介绍二叉树的另一种遍历方式&#x…

Java面试题二-并发编程、IO、设计模式、通信/网络、JVM

本文目录如下:Java面试题(二)四、并发编程线程和进程的区别?守护线程是什么?创建线程有哪几种方式?线程有哪些状态?sleep() 和 wait() 有什么区别?线程的sleep()方法和yield()方法有什么区别?线…

KVM虚拟机安装Virtio驱动

KVM虚拟机安装Virtio驱动KVM服务器上配置Virtio驱动ISO文件Windows实例安装Virtio驱动Linux实例安装kvm驱动(一般不需要)KVM服务器上配置Virtio驱动ISO文件 参考:https://www.ibm.com/docs/zh/cloud-orchestrator/2.5.0.1?topicimages-installing-virtio-driver-k…

成功解决:尚硅谷中的谷粒商城前端项目运行依赖问题。【详细图解+问题说明+解决思路】

一个混迹于Github、Stack Overflow、开源中国、CSDN、博客园、稀土掘金、51CTO等 的野生程序员。 目标:分享更多的知识,充实自己,帮助他人 GitHub公共仓库:https://github.com/zhengyuzh 以github为主: 1、分享前端后端…

程序员超级书单:技术人必看

写在前面 电影一部两小时打底,却很少有人可以静下心看30分钟书。今天刷沸点摸鱼, 无意中摸到一条让我有写作冲动的鱼,开工几天了,大家应该都暗暗立下不少flag,比如坚持锻炼,再比如自己今年要看多少本书籍。 行业内卷…

舆情监控工具app推荐,舆情监控工具包括哪些?

舆情监控工具的目的是帮助组织了解公众对各种话题、问题或品牌的意见和情绪。它们可以从多种来源收集数据,包括社交媒体、新闻媒体、博客、论坛和评论区。舆情监控工具app推荐,舆情监控工具包括哪些? 一、舆情监控工具app推荐 TOOM舆情监控工具&…

算法基础集训(第31天)------>BFS之经典【走迷宫】

一:概念定义给定一个 nm 的二维整数数组,用来表示一个迷宫,数组中只包含 0 或 1,其中 0 表示可以走的路,1 表示不可通过的墙壁。最初,有一个人位于左上角 (1,1) 处,已知该人每次可以向上、下、左…

扎克伯格15年邮件曝光:AR/VR平台全盘细节,谈收购Unity的优势

近期一份2015年时扎克伯格的一封邮件曝光,文中解释了Facebook在VR领域的战略策略和VR对未来的影响等,揭露了但是Facebook在VR/AR方向上的全盘计划,同时曝光当时Facebook就有收购Unity的计划,值得一看。以下是摘要:1&am…

DarkNet框架实现分类任务避坑指南(附安装包)

声明:本文仅分享技术,无其他 文章目录***声明:本文仅分享技术,无其他***这个框架真的非常非常非常小众,入坑需谨慎DarkNet对编译环境有要求配置前的准备环节1、 DarkNet源码封装(安装包如果失效了&#xff…