2026年物业门控五金耗材推荐榜:中企创联工业品,小区/写字楼/物业多场景门控配件全覆盖
2026/3/1 13:31:04
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 30 timeoutSeconds: 5 periodSeconds: 10 failureThreshold: 3上述配置表示容器启动后等待30秒开始探测,每次请求最长等待5秒,连续失败3次才标记为不健康。| 探针类型 | 作用目标 | 失败后果 |
|---|---|---|
| livenessProbe | 容器生命周期 | 容器被重启 |
| readinessProbe | 服务流量调度 | 从 Service 后端移除 |
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 30 periodSeconds: 10上述配置表示容器启动30秒后,每10秒发起一次HTTP健康检查。若探测失败,Kubernetes将重启该Pod。livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 30 periodSeconds: 10 readinessProbe: httpGet: path: /ready port: 8080 initialDelaySeconds: 5 startupProbe: tcpSocket: port: 8080 failureThreshold: 30 periodSeconds: 10上述配置中,startupProbe 允许应用最长 300 秒启动时间(30次×10秒),期间不执行 liveness 检查,避免误杀慢启动服务。readiness 检查更频繁,确保流量仅进入就绪实例。livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10上述配置表示每 10 秒发起一次 HTTP GET 请求检测健康状态,首次检查延迟 5 秒,避免启动期误判。| 探针类型 | 准确性 | 资源开销 | 适用协议 |
|---|---|---|---|
| HTTP | 高 | 中 | HTTP/HTTPS |
| TCP | 中 | 低 | 任意基于 TCP |
| Exec | 可变 | 高 | 通用 |
livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 15 periodSeconds: 10 failureThreshold: 3上述配置表示每10秒检测一次,连续3次失败后触发容器重启。livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 10 periodSeconds: 5 failureThreshold: 3即应用在 10 秒内未响应健康检查即被视为失败,重试 3 次后触发重启。由于 GC 或瞬时负载波动,/health 接口偶尔响应超过 2 秒,导致容器频繁被误杀,形成“启动→被杀→重启”循环。initialDelaySeconds调整为 30,failureThreshold改为 5,系统恢复稳定。livenessProbe: httpGet: path: /health port: 8080 initialDelaySeconds: 5 periodSeconds: 10上述配置中,应用启动需约 8 秒完成数据加载,而探针在容器启动后 5 秒即开始检测,此时服务未就绪,HTTP 请求返回 503,探针误判为实例异常。initialDelaySeconds,建议预留缓冲时间startupProbe专门处理启动期,延长容忍时间client := &http.Client{ Timeout: 2 * time.Second, // 匹配实际业务延迟 Transport: &http.Transport{ MaxIdleConns: 100, IdleConnTimeout: 90 * time.Second, ExpectContinueTimeout: 1 * time.Second, }, } // 结合指数退避重试策略,最多重试2次合理配置需基于真实压测数据,避免盲目设定阈值。// 错误:使用业务接口作为健康检查 func HandleUserQuery(w http.ResponseWriter, r *http.Request) { // 即使仅用于健康检查,也会触发数据库查询 users, err := db.Query("SELECT * FROM users LIMIT 1") if err != nil { http.Error(w, "DB Error", 500) return } defer users.Close() w.WriteHeader(200) }上述代码中,健康检查通过访问用户查询接口完成,一旦数据库负载升高,即使服务进程正常也会被判定为异常,造成误判。/healthz),仅检测运行时环境func healthHandler(w http.ResponseWriter, r *http.Request) { w.Header().Set("Content-Type", "application/json") response := map[string]string{"status": "healthy"} json.NewEncoder(w).Encode(response) }上述 Go 实现返回简洁 JSON 响应,仅表明服务自身进程存活。代码中设置Content-Type以确保客户端正确解析,响应体极小,降低传输开销。/health或/actuator/healthenv: - name: STARTUP_DURATION value: "30" initialDelaySeconds: "{{ .Env.STARTUP_DURATION }}"该配置需配合 Pod 启动脚本分析历史启动日志,自动更新 Deployment 模板中的 `initialDelaySeconds` 值。readinessProbe: httpGet: path: /health port: 8080 httpHeaders: - name: X-Custom-Header value: Ready initialDelaySeconds: 5 periodSeconds: 10 timeoutSeconds: 3上述配置表示容器启动 5 秒后开始检查 `/health` 接口,每次检测间隔 10 秒,超时时间为 3 秒。只有当探测成功时,Service 才会将该 Pod 加入 Endpoints。scrape_configs: - job_name: 'probe-status' static_configs: - targets: ['192.168.1.10:9100'] # 探针指标地址该配置使 Prometheus 定期拉取探针的 /metrics 接口数据,采集其运行时状态。target 地址需确保网络可达且探针已启用指标服务。apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment spec: replicas: 3 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: containers: - name: nginx image: nginx:1.25 ports: - containerPort: 80| 云服务商 | 边缘节点数量 | 平均延迟(ms) | 支持协议 |
|---|---|---|---|
| AWS Wavelength | 36 | 8.2 | HTTP/3, gRPC |
| Google Cloud Edge | 29 | 7.9 | gRPC, WebRTC |
| Azure Edge Zones | 41 | 9.1 | HTTP/3, MQTT |
架构演进图示:
用户请求 → CDN缓存 → 边缘网关 → 服务网格入口 → 微服务集群 → 异步事件总线