成为赞助商——支持中文 Agent 生态

了解赞助
库Agent场景库
← 返回用例列表

K8s Service 无响应排障清单

按 Service 是否存在、DNS、EndpointSlice 选择器、端口/NetworkPolicy 与 kube-proxy,生成 Service 访问无响应分层排障清单;不代改集群。

飞书DeepSeekClaudeChatGPT🛠️ 开发者工具🏢 企业协作

场景说明

面向独立开发者与平台工程:把「Pod 在跑但 Service 打不通」写成可对账步骤,区别于仅排 Pending Pod。

案例叙事

01他们做了什么

新装集群最常见的坑之一:Deployment 副本全绿,浏览器/下游却访问 Service 无响应——忘了建 Service、selector 打错、或 DNS/kube-proxy 半残。

Kubernetes《Debug Services》说明:Service 工作异常时,可在集群内用交互 busybox Pod(或 kubectl exec)观察「Pod 视角」。建议先确认 Pod 本身在监听端口可用(直连 Pod IP:容器端口)。接着核对 Service 是否真的存在(未创建时按名访问会 DNS 失败)。创建后检查是否有 NetworkPolicy Ingress 影响目标 Pod。再测 DNS 名是否解析到 Service;若本 Service DNS 失败,可对照集群 DNS Service(如 kube-dns)是否可解析,必要时转排 DNS。DNS 正常后再测 Service ClusterIP;核对 spec.ports 是否包含访问端口、targetPort 是否对应 Pod、数值端口勿误写成字符串、命名端口是否与 Pod 声明同名、protocol 是否正确。随后用 `kubectl get endpointslices -l kubernetes.io/service-name=...` 确认 EndpointSlice 是否选中 Pod;ENDPOINTS 为 `<none>` 时检查 Service selector 与 Pod labels(常见笔误如 app= 与 run=)。仍不通则怀疑 Service 代理:多数集群用 kube-proxy,需确认节点上进程在跑、日志与 iptables/IPVS 同步;若集群不用 kube-proxy 则按其自有实现排查。本场景据此输出分层清单。禁止声称「已修复 Service」。

02实际效果

  • 源未披露量化「平均定位耗时」;公开文只描述分层检查命令与常见误配。
  • 能把「没建 Service / selector 空切片 / DNS / kube-proxy」拆开,避免一上来重装 CNI。
  • 与 Pending Pod 排障边界清晰,值班话术可复用。

03值得知道

  • 不同发行版/无 kube-proxy 数据面(如部分 eBPF)步骤需替换,以集群实现为准。
  • 文档示例镜像与端口仅作演示,须换成你的应用端口。
  • 上面写的是文档排障路径,不是你的集群实时状态。

04可复制提示词

Service 无响应分层清单

你是 Kubernetes Service 排障助手。只根据现象给核对清单,不要编造已修复。

Service/工作负载摘要:{{workload_brief}}
现象:{{symptom}}
已执行命令输出摘要:{{kubectl_snippets}}

输出 Markdown:
1. 按文档顺序的检查层(存在性、NetworkPolicy、DNS、ClusterIP、ports、EndpointSlice、Pod 直连、kube-proxy)
2. 每层要看的字段/命令提问
3. selector 空切片的常见笔误提醒
4. 值班群一句话
禁止代跑写操作;禁止索要 kubeconfig。

Service 连通性复盘提纲

Service 长时间无响应后已恢复或仍未恢复,请写复盘提纲。

时间线:{{timeline}}
最终根因(若已知):{{root_cause}}
变更:{{changes}}

输出:
1. 根因分层对照
2. 证据清单
3. 临时缓解
4. 防再发(CI 校验 selector、冒烟 curl)
不要伪造「集群已健康」。

05一手来源

怎么做

  1. 粘贴 Service/Deployment YAML 摘要、kubectl get 现象与从集群内访问方式
  2. Agent 按文档顺序输出:存在性→NetworkPolicy→DNS→IP→ports→EndpointSlice→Pod 直连→kube-proxy 提问清单
  3. 人工在集群执行核对;Agent 不代发 kubectl 写操作

实用提示

  • EndpointSlice 的 ENDPOINTS 为 <none> 时先查 selector 与 Pod labels 是否同名同值
  • 与 k8s-pending-pod-debug-brief 不同:本条是 Service 已创建后的连通性分层,不是调度 Pending
#Kubernetes#Service#EndpointSlice#DNS#排障