场景目标
形成一份覆盖故障源端、正常对照、DNS、Service、后端与节点数据面的排查记录,依据明确证据执行一项获批的最小修复;在约定窗口验证业务成功率与延迟恢复、原有访问隔离仍成立,并登记无法验证的地址族、节点或客户端路径。
云原生与容器 · 进阶
从只读对象证据出发,分离 DNS、Service、后端与网络策略故障,经过授权探测和最小变更验证恢复。
形成一份覆盖故障源端、正常对照、DNS、Service、后端与节点数据面的排查记录,依据明确证据执行一项获批的最小修复;在约定窗口验证业务成功率与延迟恢复、原有访问隔离仍成立,并登记无法验证的地址族、节点或客户端路径。
已有 Kubernetes 集群与受控 kubeconfig,先登记 Kubernetes、CoreDNS、网络插件和容器运行时版本及集群域。需要目标命名空间资源、EndpointSlice、事件和限定日志读取权限;容器内执行、主动流量探测、节点访问与配置修改分别审批。准备正常和异常调用端、无副作用健康接口、历史配置及可回退版本;日志需脱敏。预计 90 分钟用于限定对象定位及短时验证,长周期观察和网络维护另排窗口。不默认具备特权 Pod、集群管理员权限或访问全部节点的授权。
把解析请求与应用请求拆成两条路径,结合 EndpointSlice、节点数据面和 NetworkPolicy 定位故障;先采集对象证据,再批准有限探测与最小变更。
点击组件,在图下方查看职责;连线编号对应流向解读。小屏可横向滚动,或直接展开文字说明。
调用端按实际解析器配置查询域名;DNS 通常返回地址,不替应用代理后续业务请求。
解析后应用请求进入对应 Service 地址和端口;保持主机名、SNI 与 TLS 校验。
表达普通 ClusterIP 的逻辑转发路径,具体代理、地址转换和负载选择按插件核对。
节点代理或替代数据面使用服务与端点信息建立转发,不是业务数据经过切片对象。
检查源端到实际 DNS 和业务目标的出口允许范围,地址转换细节按实现核验。
检查目标 Pod 入口策略与匹配标签,不通过删除全部策略制造连通。
缺少查询日志不代表 DNS 未收到请求,区分未开启、无权限和真实错误。
对照不同源端、节点及必要地址族,保留未覆盖范围。
Headless、ExternalName、无选择器 Service 与不同地址族分别处理;图中不默认存在 kube-proxy 或 NodeLocal DNS。
kubectl exec 启动进程,探测产生流量;没有工具时不擅自创建特权 Pod、安装软件或扩大网络放行。
保存原配置和回退版本,恢复时重验正常对照与访问隔离;仅重启后暂时正常仍标为缓解。
适用于已有 Kubernetes 工作负载中域名解析异常、Service 请求超时及部分节点偶发失败。沿调用端、DNS 服务、Service 与 EndpointSlice、后端进程、节点数据面建立证据链。CoreDNS、NodeLocal DNSCache、kube-proxy 或替代数据面的实际安装方式必须先盘点,托管环境按获准边界操作。
本场景为 PENDING(待环境验证),不表示已部署或演练。先读取资源与获准日志;kubectl exec 会启动容器进程,主动探测会产生流量,均需单独授权,不能标作纯 API 只读。没有诊断容器时先申请资源,不默认创建 Pod、安装软件、开启全量 DNS 日志或放通全部网络。Linux、Windows、Headless 与 ExternalName Service 的行为不能互相套用。
原异常源端与正常对照源端的受控测试均通过,相关节点、地址族与必要协议在观察窗口内满足既定成功率和延迟基线;未授权访问仍被拒绝,变更对象和回退版本可定位。只重启后恢复而未定位根因时,记录为临时缓解。
由值班人员核对集群、命名空间、调用端和被调服务,记录首次异常时间、端口、协议、错误类型与最近变更。用一个同版本正常调用端作对照,将仅短名称失败、全部域名失败、仅一个 Service 失败和仅某节点失败分别登记。先从现有日志和告警补齐证据,未知路径保持待查,不通过重复请求真实写接口制造测试数据。
kubectl config current-context
kubectl -n NAMESPACE get pod POD_NAME -o wide
kubectl -n NAMESPACE get service SERVICE_NAME -o wide上下文由集群负责人确认,工单包含异常和正常对照的 Pod、节点、时间、协议及原始错误。请求目标与业务语义明确,未取得容器执行或主动探测授权的项目标记为待授权,没有把 API 查询失败误判为业务网络故障。
本阶段仅读取现场,不修改资源。上下文错误、身份不明或故障已扩散到控制面时立即停止继续查询与后续探测,保留已获取的脱敏记录并升级处理;不删除 Pod、重启 DNS 或临时扩大管理员权限。
读取目标 Service 的选择器、类型、端口与地址族,检查相关 EndpointSlice 的后端地址、端口和就绪条件,再与 Pod 标签及实际工作负载配置对照。一个服务可能有多个切片,必须全部核对。Headless、ExternalName、无选择器 Service 单独标注,不能套用普通 ClusterIP 的通过条件,也不手动修改控制器管理的切片。
kubectl -n NAMESPACE get service SERVICE_NAME -o yaml
kubectl -n NAMESPACE get endpointslices -l kubernetes.io/service-name=SERVICE_NAME -o yaml
kubectl -n NAMESPACE get pods -o wide --show-labelsService 端口与 targetPort 对应关系、后端地址和标签有可核对结果;没有后端时可区分选择器错误、未就绪及非自动管理类型。所有相关切片均已审阅,正常与异常副本差异有证据,未把 Running 等同于就绪或可接流量。
对象检查无配置变更。如发现端口或标签疑似错误,先保存当前版本与期望配置交给应用负责人确认,停止猜测式修改。涉及持久化工作负载或发布异常时转入对应流程,不批量重建 Service 或 EndpointSlice。
确认实际 DNS Service、Pod、集群域以及是否启用 NodeLocal DNSCache,读取 DNS 端口、EndpointSlice、就绪状态与限定时间日志。查看调用端 Pod 的 dnsPolicy、dnsConfig 和 hostNetwork,区分集群解析与上游解析。常见 CoreDNS 服务名为 kube-dns,但以现有安装为准;未开启查询日志时,日志没有请求记录不能证明 DNS 未收到流量。
kubectl -n kube-system get services
kubectl -n kube-system get endpointslices -l kubernetes.io/service-name=DNS_SERVICE_NAME -o yaml
kubectl -n kube-system logs DNS_POD_NAME -c DNS_CONTAINER_NAME --since=10m --tail=200 --timestamps
kubectl -n NAMESPACE get pod POD_NAME -o yaml已明确异常是 DNS Pod 不可用、无服务端点、API 权限或上游错误的候选,还是调用端策略差异。组件名称和集群域来自现场,日志范围受控;Windows 和 hostNetwork 情况有单独解释,不把默认域名或 Linux 配置当成所有集群事实。
只读检查不需要恢复配置。若日志权限不足或输出包含敏感信息,停止收集并按权限流程处理;不直接开启全量查询日志、不修改全局 Corefile、不为排障授予宽泛 RBAC,保持现有解析服务运行。
申请指定 Pod 与容器的执行权限,以及有限次数、限定目标的 DNS 和无副作用健康探测。kubectl exec 会启动容器进程,不是纯 API 只读;下例仅在授权后读取解析文件。使用已有诊断工具比较短名称与实际完整域名,登记 DNS 响应码及耗时;没有工具时申请独立诊断资源,不在业务容器安装软件,也不默认创建特权 Pod。
# 仅在获得指定容器执行授权后使用;全部大写名称须替换。
kubectl -n NAMESPACE exec POD_NAME -c CONTAINER_NAME -- cat /etc/resolv.conf审批覆盖目标、工具、次数、超时与日志保留;解析器、搜索域、ndots 和响应结果可对照应用配置。记录哪些检查实际执行、哪些未授权,诊断流量没有触发真实写接口或新增资源,未将工具缺失误判为 DNS 故障。
容器诊断或主动流量引起延迟、资源变化时立即停止本次命令和后续请求,保持业务进程与容器不变。若另行获批的诊断资源已创建,按其专用清单及保留策略回收,不使用命名空间级批量删除。
在相同获准源端和时间窗口,用业务批准的无副作用探测分别比较完整域名、Service IP 和后端地址,区分 Service 端口与后端端口。HTTPS 保持正确主机名、SNI 和证书校验,避免直连 IP 制造假故障;UDP 和 TCP DNS 分别记录。后端正常但 Service 异常时,再读取实际代理或替代数据面的现有日志及指标,不默认所有集群都运行 kube-proxy。
每次探测都有源 Pod、节点、目标层、协议、耗时与结果,能说明故障位于解析、端点选择、后端应用还是节点数据面的候选路径。对照覆盖计划中的节点与地址族,无法覆盖的项目明确标注,未依据单次成功认定整个服务恢复。
探测超过批准范围、响应可能产生业务副作用或目标身份无法确认时停止,不继续扫描地址段。节点证据不足则交由网络负责人接手,不清空 iptables、不重启所有网络组件,也不绕开 TLS 校验换取表面成功。
读取调用端与被调端命名空间的 NetworkPolicy,核对实际标签、出口与入口规则以及 DNS 解析器路径。标准策略允许项累加,是否实施依赖网络插件;NodeLocal DNS 和地址转换按实现复核。依据证据只选择一个明确修复对象,保存原版本、变更差异、预计传播时间和回退入口,经负责人批准后通过既有配置管理落地,不默认全网放通。
kubectl -n SOURCE_NAMESPACE get networkpolicies -o yaml
kubectl -n TARGET_NAMESPACE get networkpolicies -o yaml修复假设可以被前五步证据支持,审批具体到对象、字段与源目标范围,原配置和恢复版本可取得。影响面、失败阈值、停止负责人及 GitOps 同步方式明确;没有将临时放宽全部策略作为排障默认动作。
未获得变更授权就停在审阅阶段,不执行修改。试点扩大故障或原有隔离失效时停止推广,仅恢复本次修改对象的已知版本并复查传播状态;不删除全部 NetworkPolicy,业务请求造成的数据变化另行核对。
重放此前获准的有限探测矩阵,对异常源端、正常对照、相关节点和必要地址族逐项验收。覆盖 DNS 缓存与探针刷新周期,观察已有业务成功率、延迟、DNS 错误和重启趋势。对已批准的负向测试确认不应访问的路径仍然被拒绝;没有负向测试权限时由安全负责人提供证据,不自行访问范围外资产。
原失败路径在约定窗口持续满足团队基线,正常路径未回退,后端就绪与 DNS 组件状态稳定。应拒绝的访问仍被拒绝,监控无持续增长异常;验证表中每项均区分实际测试、替代证据与未验证,不仅展示一张成功截图。
出现新错误、越权放通或恢复不稳定时立即停止扩大变更,按第六步恢复获批对象的前一版本。回退后重新验证正常对照与业务基线;如果恢复配置仍不能恢复业务,升级事件而不是连续叠加未经评估的修复。
整理故障矩阵、配置差异、探测授权、变更与恢复时间线,明确最终根因和仍未排除的因素。把查询入口、运行版本、节点与插件差异更新到配套手册及值班工单;临时诊断权限和额外日志按批准期限撤销。若仅暂时缓解或存在未验证节点,保留未完成状态与负责人,不声称已经完成全环境恢复验证。
交接人员能够从工单定位对应场景、知识文章和编排文档,并用脱敏证据复现判断路径。权限、临时资源和日志保留有关闭记录,复发监控与后续期限明确;恢复结论与实际验证范围一致。
交接发现证据缺失、权限残留或指标继续异常时重新打开事件,保持已验证的稳定配置并补齐检查。撤销文档中的过度结论,不销毁审计证据,也不把后续待办简单标记完成来结束故障处理。