检查 Service 和 Pod 是否在相同 Namespace
kubectl get svc-n # 确认 Service Namespace kubectl get pods -n # 确认 Pod 是否存在
验证 Pod 是否处于 Running
状态
kubectl get pods -n--show-labels # 检查 Pod 状态和标签 kubectl describe pod -n # 查看 Pod 详细事件
kubectl get endpoints-n # 确认 Endpoints 是否包含 Pod IP # 正常输出示例: # ENDPOINTS: : [ : , ...]
• 从 Service IP 访问 Pod
curl -v http://: # 检查是否返回 HTTP 错误 # 如果无法访问,继续排查:
• 从其他 Pod 访问目标 Pod
kubectl exec -it--namespace= -- sh # 在 Pod 内执行: wget http:// : -O -
kubectl get networkpolicies -n# 查看是否有拦截流量的策略 # 示例 NetworkPolicy 规则: # allow egress from /default to
• 云环境:确认云服务商的安全组/ACL 是否放行 Service 端口。
• 本地集群:检查 iptables
或 firewalld
规则是否拦截流量。
# 示例:ClusterIP/NodePort/ExternalName 等类型 apiVersion: v1 kind: Service metadata: name: my-service namespace: default spec: type: ClusterIP # 或 NodePort/ExternalName ports: - protocol: TCP port: 80 targetPort: 9090 selector: app: my-app
• NodePort/ExternalName:需额外检查端口映射和 DNS 解析。
• Headless Service:需直接访问 Pod IP,而非通过负载均衡。
kubectl get pods -n-l app=my-app # 确认 Pod 是否匹配 Service 的 Selector
kubectl logs-n # 查看应用日志 kubectl logs -n --previous # 查看重启前日志
kubectl describe pod-n | grep IPAddress # 输出示例: # IPAddress: 10.244.1.2 # HostIP: 10.244.1.2
kubectl exec -it--namespace= -- sh # 在 Pod 内执行: curl http://localhost: # 测试服务是否正常响应
tcpdump
捕获流量# 在目标 Pod 内执行(需安装 tcpdump): kubectl exec -it--namespace= -- sh -c "tcpdump -i any -nn port -w /tmp/capture.pcap" # 在攻击者 Pod 内执行: kubectl exec -it --namespace= -- sh -c "tcpdump -i any -nn port -w /tmp/capture.pcap"
# 在 Pod 内执行: dig +trace. .svc.cluster.local # 检查 DNS 解析路径 nslookup # 确认解析结果
istioctl
检查服务网格(Istio)istioctl analyze --set namespace=# 自动分析网络配置 istioctl proxy-config routes # 查看 Sidecar 路由规则
现象 | 可能原因 | 解决方案 |
---|---|---|
Endpoints 为空 | Selector 不匹配 | 更新 Service 的 selector 字段,确保与 Pod 标签一致。 |
Pod IP 未注册 | CNI 插件故障 | 重启 CNI 插件(如 Calico、Flannel),检查节点网络配置。 |
防火墙拦截流量 | 安全组规则错误 | 添加入站规则放行 Service 端口(如 tcp 80/443 )。 |
服务未监听端口 | 应用配置错误 | 检查 Pod 内的应用日志,确认服务是否在指定端口监听(如 netstat -tuln )。 |
Service 类型错误 | NodePort 未暴露公网 IP | 使用 kubectl port-forward 临时测试,或配置 Ingress 资源暴露服务。 |