背景
旁路/镜像模式用于“先检测再阻断”。自身不在链路上,无法直接拦截,需要将阻断动作联动到真实入口(Ingress/Gateway/防火墙等)。本方案在 Kubernetes 中通过 Nginx Ingress Controller 启用 ModSecurity(仅检测),并用 Redis 维护动态黑名单,定期把黑名单同步到 Ingress 的阻断策略,实现“旁路检测→入口阻断”闭环。
9094,管理口 9902,启用来源/目标 RBAC、动态前向代理(c-ares DNS)、访问日志与本地限流。8080,启用 HTTP/1.1 长连接与 reuseport、CONNECT 支持,变量上游转发。ip_local_port_range=20000–65535、tcp_tw_reuse=1、tcp_timestamps=1、tcp_max_tw_buckets=200000。connect() failed)。TIME_WAIT 总量与趋势。curl http://localhost:9902/stats | head -n 200,关注 cluster.dynamic_forward_proxy_cluster.*、dns_cache.*、local_ratelimit.*、http.*。docker run --rm rakyll/hey -z 60s -c 200 -x http://host.docker.internal:9094 http://example.org/docker run --rm rakyll/hey -z 60s -c 200 -x http://host.docker.internal:8080 http://example.org/docker run --rm curlimages/curl:8.5.0 -sS --proxy http://host.docker.internal:9094 https://ifconfig.iowatch -n 5 'netstat -an | grep TIME_WAIT | wc -l'watch -n 5 'ss -tan state time-wait | wc -l'TIME_WAIT 初值/峰值/稳态值、Envoy/Nginx关键指标快照。scripts/run_benchmark.shbash scripts/run_benchmark.shDURATION 压测时长秒(默认 60)CONCURRENCY 并发数(默认 200)TARGET HTTP目标(默认 http://example.org/)ENVOY_PROXY(默认 http://host.docker.internal:9094)NGINX_PROXY(默认 http://host.docker.internal:8080)CONNECT_TARGET(默认 https://ifconfig.io)CONNECT_COUNT(默认 50)CONNECT_PARALLEL(默认 10)docs/results/<timestamp>/,包含 hey 输出、TIME_WAIT 采样、Envoy stats 快照与 CONNECT 结果。TIME_WAIT 峰值与稳态值更低,失败率更低,P99更稳。TIME_WAIT,高并发下更易受端口耗尽影响。*.{region}.log.aliyuncs.com)。前置条件
| |
localhost/127.0.0.1/169.254.169.254 与私网目标,防止穿透内网资源。*.{region}.log.aliyuncs.com(:port)?,适配 ap-southeast-1/cn-hangzhou 等地域。allow_coalesced_connections 合并连接,提升复用、降低 TIME_WAIT。9902 管理接口与 /stats 指标;access_log_path 记录 admin 访问路径,便于审计。connection_limit 与 global_downstream_max_connections 控制下游最大连接数;防止代理被瞬时并发拖垮。9094 监听正向代理入口;enable_reuse_port 提升多 worker 可接受新连接能力,降低 accept 锁竞争。127.0.0.1/::1/10.0.0.0/8/192.168.0.0/16 来源;阻止公网来源滥用代理。allow_absolute_url 支持 HTTP 代理规范;启用 HTTP/2 allow_connect 与 HTTP/3 allow_extended_connect 支持隧道。stdout,包含 authority/response_code/duration_ms/upstream_* 等关键字段,便于观测与问题定位。prefix "/",路由到 dynamic_forward_proxy_cluster 进行转发与连接池复用。connect_matcher: {} 捕获 CONNECT 方法,并通过 upgrade_type: CONNECT + connect_config: {} 开启隧道透传,TLS 握手由客户端与目标站点直接完成。allow_absolute_url,见 envoy/envoy-forward-proxy.yaml:54–55),Envoy 按目标域名使用动态前向代理的 DNS 缓存与上游连接池转发请求。CONNECT 目标域名:443;代理建立隧道后返回 200 Connection Established,后续 TLS 流量仅透传(不解密)。envoy/envoy-forward-proxy.yaml:56–59)。envoy/envoy-forward-proxy.yaml:101–161),不会进入路由阶段。localhost/127.0.0.1/169.254.169.254 与私网地址作为目标,避免代理访问云元数据或内网服务。.*\.[a-z0-9-]+\.log\.aliyuncs\.com(?::\d+)?$;支持不同地域与可选端口。300s,最大挂起解析 1024;与集群侧配置保持一致性,避免解析差异。100;filter_enabled/enforced 100% 打开;用于抑制突发流量,保护代理稳定。allow_coalesced_connections 合并同域连接,显著提升上游复用,减少短连接与 TIME_WAIT;DNS 配置与过滤器侧保持一致。Connection: close;在上游域名稳定的场景下复用效果更显著。8.8.8.8/223.5.5.5),并统一在过滤器与集群侧设置相同 TTL 与 resolver,减少解析不一致导致的失败。[a-z0-9-]+ 改为 ap-southeast-[0-9]+ 等更严格模式。https://目标域名:443/,代理侧允许 CONNECT(envoy/envoy-forward-proxy.yaml:93–99)。本文基于1.29.0版本
Kubelet 是 Kubernetes 集群中不可或缺的节点代理,负责管理 Pod 的生命周期、监控资源并确保节点上的容器按照预期状态运行。本文旨在通过对 Kubelet 源码的深度剖析,揭示其核心工作机制,内容涵盖从启动初始化、核心工作循环、Pod 生命周期管理到基于 cAdvisor 的指标监控全流程。通过对这些关键模块的分析,我们将构建一个关于 Kubelet 如何作为节点"管家"维持集群稳定性的完整视图。