You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Kubernetes集群中追踪未知来源的HTTP请求?

追踪未知请求来源的方法及可能原因

一、追踪未知IP的具体步骤

  • 检查节点的所有网卡IP:kubectl get nodes -o wide仅显示集群默认通信网卡的IP,节点可能存在额外物理/虚拟网卡。登录集群各节点,执行ip addr查看所有网卡的IP地址,确认这两个未知IP是否属于节点的某个网卡。
  • 排查集群服务与端点:
    • 执行kubectl get endpoints --all-namespaces,检查是否存在对应IP的遗留端点(比如已删除Pod但未清理的Endpoint)。
    • 执行kubectl get svc --all-namespaces -o wide,查看是否有服务将流量转发到该IP,或是Headless服务的后端实例。
  • 查看临时/已终止Pod:若请求来自短期运行的Pod(如CronJob任务),Pod执行完会被销毁,常规kubectl get all无法捕获。执行kubectl get pods --all-namespaces --include=terminated查看所有已终止的Pod,检查是否有Pod的IP匹配未知地址;同时用kubectl get cronjobs --all-namespaces排查定时任务。
  • 节点上抓包分析:在Pod所在节点执行抓包命令,获取请求的更多细节:
    tcpdump -i any port 3000 and src host 192.168.21.174 -A
    
    该命令会抓取对应IP的HTTP请求内容,包括User-Agent、请求头信息,帮助判断请求发起方的类型。
  • 检查集群附加组件:排查集群内的CNI插件(如Calico、Flannel)、监控工具(如Prometheus Exporter)、日志收集组件(如Fluentd)等,这些组件多以DaemonSet形式运行,执行kubectl get daemonsets --all-namespaces查看相关Pod的IP是否匹配。如果使用Helm部署组件,执行helm list --all-namespaces确认所有部署的应用。

二、可能的请求来源

  • 节点额外网卡上的进程:节点的非集群通信网卡上可能运行着独立脚本、监控工具或其他服务,每隔几秒发送GET /请求到Pod的3000端口。
  • 定时任务(CronJob):周期性运行的CronJob任务,每次执行时创建临时Pod发送请求,执行完成后Pod被销毁,因此无法通过常规命令看到。
  • CNI网络组件异常:部分CNI插件的维护进程或网络测试逻辑,可能会发送简单HTTP请求验证网络连通性。
  • 集群外同网段设备:同一192.168.x.x局域网内的其他服务器/设备,若能通过NodePort、LoadBalancer或直接访问Pod网络(如同节点的HostNetwork Pod),也可能发起这类请求。
  • 遗留的Endpoint或服务配置:已删除Pod对应的Endpoint未被正确清理,或是服务配置错误导致流量转发到了无效IP。

内容的提问来源于stack exchange,提问作者Aviran

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.25 03:58:09