3. 缓存命中概念:DNS缓存、连接复用缓存、路由缓存、缓存命中率指标
在容器网络运维中,“缓存命中”是衡量网络性能与资源利用效率的核心维度。容器化环境下的网络缓存体系主要涵盖DNS缓存、连接复用缓存和路由缓存三大类。理解它们的命中机制与指标,是制定灰度批次巡检策略的前提。
3.1 DNS缓存
DNS缓存是容器网络中最基础、最易被忽视的缓存层。当容器内的应用发起域名解析请求时,DNS解析结果会被临时存储在本地或集群级别的缓存中,避免重复查询上游DNS服务器。
| 缓存层级 | 典型位置 | TTL默认值 | 命中影响 |
|---|---|---|---|
| 容器本地缓存 | 容器内 /etc/hosts、nscd | 由应用配置决定 | 减少延迟,降低DNS服务器压力 |
| 节点DNS缓存 | kubelet、node-local-dns | 30s~300s | 提升集群内服务发现速度 |
| 集群DNS缓存 | CoreDNS、coredns-cache | 30s~600s | 减少上游查询,提高稳定性 |
运维提示:在灰度批次巡检中,应重点检查DNS缓存TTL是否与业务变更窗口匹配。过长的TTL会导致新Pod无法及时解析到更新的Service Endpoint,造成“灰度黑洞”。
3.2 连接复用缓存
连接复用缓存(Connection Reuse Cache)是容器网络性能优化的关键。它通过复用已建立的TCP连接,避免频繁的三次握手和TLS协商,显著降低延迟和CPU开销。
- HTTP Keep-Alive:在同一个TCP连接上复用多个HTTP请求,减少连接建立开销。
- gRPC连接池:gRPC客户端维护的连接复用池,支持多路复用。
- Sidecar代理连接缓存:Istio/Linkerd等Service Mesh中的Envoy代理维护的连接复用表。
- TCP连接复用表:操作系统内核维护的TCP连接复用状态(如TIME_WAIT复用)。
避坑指南:连接复用缓存并非越大越好。过大的连接池会占用大量内存,且在Pod滚动更新时导致大量“孤儿连接”。建议在灰度批次中逐步调整连接池大小,观察命中率与内存消耗的平衡。
3.3 路由缓存
路由缓存(Routing Cache)是容器网络数据平面中的转发决策缓存。它记录了数据包从源Pod到目标Pod/Service的最优路径,避免每次转发都进行完整的路由表查询。
| 缓存类型 | 作用范围 | 缓存内容 | 失效场景 |
|---|---|---|---|
| FIB缓存 | 节点内核 | 下一跳、出接口 | 路由表变更、网络拓扑变化 |
| ARP缓存 | 节点内核 | IP到MAC映射 | Pod迁移、节点故障 |
| CNI路由缓存 | CNI插件(如Calico、Flannel) | Pod CIDR到节点映射 | Pod调度、节点加入/离开 |
| eBPF路由缓存 | eBPF程序(如Cilium) | 连接跟踪、策略决策 | 策略更新、连接超时 |
3.4 缓存命中率指标
缓存命中率是衡量缓存有效性的核心量化指标。在容器网络运维中,需要从三个维度分别采集和监控。
3.4.1 核心指标定义
| 指标名称 | 计算公式 | 健康阈值 | 异常阈值 |
|---|---|---|---|
| DNS缓存命中率 | DNS缓存命中次数 / 总DNS查询次数 × 100% | ≥ 95% | < 80% |
| 连接复用率 | 复用连接数 / 总连接数 × 100% | ≥ 85% | < 60% |
| 路由缓存命中率 | 路由缓存命中次数 / 总路由查询次数 × 100% | ≥ 98% | < 90% |
3.4.2 灰度批次中的指标采集方法
在灰度批次巡检中,建议使用以下命令和工具采集缓存命中率数据:
# DNS缓存命中率(使用coredns metrics)
curl -s http://localhost:9153/metrics | grep coredns_cache_hits_total
# 连接复用率(使用istio-proxy stats)
curl -s http://localhost:15000/stats | grep "cluster.*upstream_cx_total"
# 路由缓存命中率(使用calico felix metrics)
curl -s http://localhost:9099/metrics | grep felix_route_cache_hits
灰度批次巡检清单(缓存命中部分):
- 确认每个灰度批次中DNS缓存命中率不低于95%,否则暂停灰度。
- 检查连接复用率是否随批次推进而下降,下降超过20%需回滚。
- 验证路由缓存命中率在Pod滚动更新后5分钟内恢复至98%以上。
- 记录每个批次的缓存命中率基线,用于后续批次对比。
3.5 缓存命中率与灰度批次的关系
缓存命中率在灰度批次中呈现典型的“U型曲线”特征:
- 批次初期:新Pod启动,本地缓存为空,命中率短暂下降。
- 批次中期:缓存逐渐预热,命中率回升至正常水平。
- 批次后期:缓存稳定,命中率维持在高位。
运维人员需要区分“正常预热”与“异常失效”。正常预热时命中率下降幅度通常不超过15%,且恢复时间在3分钟以内;若命中率下降超过30%或恢复时间超过10分钟,则表明缓存机制存在异常,应立即暂停灰度并排查。