如何通过IP地址定位Kubernetes集群中发起请求的资源?
定位Kubernetes集群中发起TLS握手错误请求的IP来源
已知集群内IP 10.1.239.128 向cert-manager-webhook和vault Pod发起请求,触发TLS握手错误,常规查询Service、Endpoints等资源未找到对应来源,可尝试以下排查方法:
1. 直接匹配所有Pod的IP
遍历集群内所有Pod的IP地址,直接定位归属Pod:
kubectl get pods --all-namespaces -o wide | grep 10.1.239.128
若该IP属于某个Pod,命令会返回对应的Pod名称、命名空间及所在节点信息。
2. 检查集群节点IP
确认该IP是否为集群节点本身的IP(比如控制平面或工作节点上的系统进程发起请求):
kubectl get nodes -o wide
对比节点的Internal-IP或External-IP字段,匹配后可进一步检查节点上的进程(如kubelet、系统服务等)。
3. 节点上抓包分析请求细节
在目标Pod所在节点上,通过tcpdump抓包获取该IP的请求特征:
- 先确定目标Pod所在节点:
kubectl get pod cert-manager-webhook-6787f645b9-s5fxl -o wide | awk '{print $7}'
- 登录节点(Microk8s可使用
microk8s kubectl node-shell <节点名称>),执行抓包命令:
tcpdump -i any host 10.1.239.128 and port <服务端口>
(cert-manager-webhook默认端口为443,vault默认端口为8200)
抓包结果可展示请求的协议、内容片段,辅助判断请求发起者的类型。
4. 排查容器运行时中的特殊容器
若IP不在Pod和节点列表中,可能是容器运行时的沙箱容器、CNI辅助容器等,直接通过容器运行时工具查询:
Microk8s默认使用containerd,执行:
crictl ps --all -o wide | grep 10.1.239.128
若找到对应容器,可通过crictl inspect <容器ID>查看其详细配置和所属组件。
5. 检查集群网络组件日志
排查kube-proxy、CNI插件等网络组件是否发起了该请求:
- 查看kube-proxy日志:
kubectl logs -n kube-system pod/kube-proxy-<节点名称>
- 查看Calico(Microk8s默认CNI)组件日志:
kubectl logs -n kube-system -l k8s-app=calico-node
6. 确认IP是否属于集群网络范围
检查该IP是否在集群的Pod CIDR或Service CIDR范围内,判断是否为集群外请求:
microk8s kubectl cluster-info dump | grep -E "podCIDR|serviceCIDR"
若不在范围内,需检查集群Ingress、LoadBalancer或防火墙配置,确认外部访问路径。
内容的提问来源于stack exchange,提问作者marcel h
相关产品推荐
相关产品推荐

