首页 > 其他分享 >kubeshark查看k8s中pod的流量

kubeshark查看k8s中pod的流量

时间:2024-03-19 18:13:20浏览次数:31  
标签:set harbor ssl meta kubeshark pod k8s com

kubeshark的介绍

在底层实现当中,Kubeshark主要使用到了Linux内核中的各种内置方法和API,隐藏了对流量数据的加解密实现,可以直接收集到K8s集群中的加密和未加密流量。对网络数据的收集主要使用了直接抓包法和基于拓展伯克利包过滤(eBPF)的数据包获取。直接抓包法涉及libpcap、AF_PACKET和PF_RING获取集群TCP流量,eBPF的方法主要使用到了加密流量 (TLS),并挂钩到OpenSSL库和 Go 的crypto/tls包中某些函数的入口点和出口点。

kubeshark的部署

安装kubeshark

从https://github.com/kubeshark/kubeshark/releases/下载需要的版本。
本次测试过程,下载的版本是38.3

在k8s的master上执行

curl -Lo kubeshark https://github.com/kubeshark/kubeshark/releases/download/38.3/kubeshark_linux_amd64 && chmod 755 kubeshark
cp kubeshark /usr/bin/
kubeshark version

准备kubeshark的服务镜像

将自己本地的镜像导入到环境,并打tag推送到自己镜像仓库

docker tag harbor.voneyun.com/kubeshark/hub:latest harbor.shengydt.com/prod-meta/hub:latest
docker tag harbor.voneyun.com/kubeshark/worker:latest harbor.shengydt.com/prod-meta/worker:latest
docker tag harbor.voneyun.com/kubeshark/front:latest harbor.shengydt.com/prod-meta/front:latest
docker push harbor.shengydt.com/prod-meta/hub:latest
docker push harbor.shengydt.com/prod-meta/worker:latest
docker push harbor.shengydt.com/prod-meta/front:latest

制作配置文件

mkdir /root/.kubeshark
vi config.yaml 
tap:
    docker:
        registry: harbor.shengydt.com/prod-meta
        tag: latest
        imagepullpolicy: IfNotPresent
        imagepullsecrets: []
    proxy:
        worker:
            port: 8897
            srvport: 8897
        hub:
            port: 8898
            srvport: 80
        front:
            port: 8899
            srvport: 80
            nodeport: 8899
        host: 0.0.0.0
    regex: .*
    namespaces: []
    allnamespaces: false
    storagelimit: 200MB
    dryrun: false
    pcap: ""
    resources:
        worker:
            cpu-limit: 750m
            memory-limit: 1Gi
            cpu-requests: 50m
            memory-requests: 50Mi
        hub:
            cpu-limit: 750m
            memory-limit: 1Gi
            cpu-requests: 50m
            memory-requests: 50Mi
    servicemesh: true
    tls: true
    packetcapture: libpcap
    debug: false
logs:
    file: ""
kube:
    configpath: ""
    context: ""
selfnamespace: kubeshark
dumplogs: false
headless: false

启动kubeshark

kubeshark clean
kubeshark tap -n prod-meta 


kubeshark的使用

配置nginx代理到kubeshark

cat kubeshark.conf 
upstream  kubeshark8899 {
          server 172.16.80.50:8899;
              }
server {
    listen       80;
    listen       443 ssl;
    server_name  tmp.shengydt.com;

    ssl_certificate /usr/local/nginx/cert/shengydt.com.pem;
    ssl_certificate_key /usr/local/nginx/cert/shengydt.com.key;
    ssl_protocols TLSv1 TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_ciphers TLS13-AES-256-GCM-SHA384:TLS13-CHACHA20-POLY1305-SHA256:TLS13-AES-128-GCM-SHA256:TLS13-AES-128-CCM-8-SHA256:TLS13-AES-128-CCM-SHA256:EECDH+CHACHA20:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;
    ssl_prefer_server_ciphers on;
    ssl_session_timeout 10m;
    ssl_session_cache builtin:1000 shared:SSL:10m;
    ssl_buffer_size 1400;
    add_header Strict-Transport-Security max-age=15768000;
    ssl_stapling on;
    ssl_stapling_verify on;
    if ($ssl_protocol = "") { return 301 https://$host$request_uri; }    

    # 日志中时间戳设置固定格式:2023-09-28 15:57:01
    if ($time_iso8601 ~ "^(\d{4})-(\d{2})-(\d{2})T(\d{2}):(\d{2}):(\d{2})") {
                set $year $1;
                set $month $2;
                set $day $3;
                set $hour $4;
                set $minutes $5;
                set $seconds $6;
    }


    location / {
                proxy_set_header   X-Real-IP        $remote_addr;
                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
                proxy_set_header Host $http_host;
                proxy_set_header X-Nginx-Proxy true;
                proxy_pass http://kubeshark8899;
                proxy_set_header X-Forwarded-Proto $scheme;
               access_log   /prod-meta-logs/nginx-logs/tmp.access.log json;
               error_log    /prod-meta-logs/nginx-logs/tmp.error.log ;
}


}

添加本地解析,使用域名访问:

流量监控

标签:set,harbor,ssl,meta,kubeshark,pod,k8s,com
From: https://www.cnblogs.com/zoujiaojiao/p/18083602

相关文章

  • 通过nginx来验证k8s中externalTrafficPolicy策略
    过nginx来验证k8s中externalTrafficPolicy策略域名--->172.16.80.32(域名解析反向代理)----->nginx-pod1(Local模式,模拟前端代理到nginx2-pod2)----->nginx2-pod2(Cluster模式,实际后端服务)nginx的日志格式log_formatmain'"$remote_addr""$remote_user""......
  • 解决部署在k8s上spring cloud gateway 无故假死的情况
    解决部署在k8s上springcloudgateway无故假死的情况线上发现gateway会无故假死,测试环境使用jmeter几分钟后,gateway也会复现假死的情况开始排查获取容器列表kubectlgetpod-owide进入gatewaykubectlexec-itgateway-7dbc5d8d6d-wtbs5--bash将jdk拷贝进容器......
  • CentOS 7 安装 DNF 包管理工具和 Podman
    安装软件包:bashdnfinstall<package_name>用于安装指定的软件包。更新软件包:bashdnfupdate用于更新系统中已安装的所有软件包到最新版本。搜索软件包:bashdnfsearch<keyword>用于搜索具有指定关键字的软件包。移除软件包:bashdnfremove<package_name>......
  • K8s(Kubernetes)-Tips
    K8S中文官网https://www.kubernetes.org.cn/Kubernetes集群组件结构一个kubernetes集群主要是由控制节点(master)、**工作节点(node)**构成,每个节点上都会安装不同的组件。master:集群的控制平面,负责集群的决策(管理)ApiServer:资源操作的唯一入口,接收用户输......
  • RHCE(podman容器)
    一:容器的基础1:为什么会出现容器? 开发和运维的矛盾:就是开发人员有个环境来专门进行开发使用的,运维人员的服务器上面没有开发的环境,因为,不是开发人员,如果添加了,服务器的占用的内存就大了起来,所以就出现了一个问题,当开发的东西放到运维的上面时,因为没有环境,这个就部署不上去,就会报......
  • K8S集合
    1.什么是k8s,有什么用处?k8s是容器化编排管理工具。可以用来完成以下一些主要功能:基于容器的应用部署、维护和滚动升级。负载均衡和服务发现:跨机器和跨地区的集群调度。自动伸缩。广泛的Volume支持。插件机制保证扩展性2.工作节点NodeNode是K8S集群中的工作负载节点,每个No......
  • 猫头虎分享已解决Bug || Error: ImagePullBackOff (K8s)
    博主猫头虎的技术世界......
  • P9077 [PA2018] Poddrzewo 题解
    思考感觉题目有点迷惑的意思,要最小化操作\(1\)使用的次数,也就是要节约修改操作,让我们认为操作\(1\)是最有用的,其实只要稍微动动脑子想一想,删除操作才是最有用的,而交换操作根本没用。当将序列删除到只剩两个点时,就把两个点连上,度都为\(1\)。所以如果序列中\(1\)的数量超......
  • K8s的概念
    Kubernetes(简称K8s)是一个开源的容器编排系统,由Google开发,用于管理容器化的应用程序。K8s在Docker技术的基础上,提供了应用部署、资源调度、服务发现和动态伸缩等一系列功能,提高了大规模容器集群管理的便捷性。它能够自动化地部署、扩展和管理容器应用,还可以监控容器......
  • 处理K8S镜像无法拉取问题
    问题原因国内无法直接访问镜像地址,改为国内地址即可#!/bin/bash#downloadk8s1.28.8images#getimage-listby'kubeadmconfigimageslist--kubernetes-version=v1.15.2'#gcr.azk8s.cn/google-containers==k8s.gcr.ioimages=(kube-apiserver:v1.28.8kube-contr......