15021 是什么
15021 是 Istio sidecar(istio-proxy)的标准健康检查端口:探针访问 /healthz/ready 判断 sidecar 是否完成初始化并准备好接管流量。Istio 的端口规划成体系:15000 是 Envoy 管理口,15001 承接出站流量,15006 承接入站流量,15021 做就绪检查,15090 暴露 Envoy 指标。排查「滚动发布卡住」时,15021 往往是第一个该看的地方。
基本信息
| 服务 | Istio sidecar status(istio-proxy) |
|---|---|
| 协议 | TCP/HTTP |
| 用途 | 就绪健康检查 |
| 检查路径 | /healthz/ready |
| 相关端口 | 15000、15001、15006、15090 |
| 安全等级 | 网格内部 |
典型使用场景
- 就绪探针排障:Pod 卡在未就绪时确认 sidecar 是否准备好
- 发布异常定位:区分应用未就绪与 sidecar 未就绪
- 网络策略核对:确认探针端口未被安全策略拦截
- 网格巡检:批量确认 Pod 的 sidecar 状态
- 版本升级:升级网格组件后逐项验证就绪
- 流量异常分析:结合 Envoy 指标判断重定向是否生效
Istio sidecar 常用端口
| 端口 | 用途 | 说明 |
|---|---|---|
| 15000 | Envoy 管理口 | 配置与统计查询 |
| 15001 | 出站拦截 | 流量重定向入口 |
| 15006 | 入站拦截 | 流量重定向入口 |
| 15021 | 就绪健康检查 | 探针与运维核查 |
| 15090 | Envoy 指标 | Prometheus 采集 |
就绪核查
就绪核查
kubectl exec deploy/app -c istio-proxy -- curl -s localhost:15021/healthz/ready
kubectl describe pod <pod> | grep -A5 Readiness # 探针事件
kubectl get pod -o jsonpath='{.items[*].spec.containers[*].name}' # 确认 sidecar 是否注入
kubectl logs <pod> -c istio-proxy --tail=50 | head -20 # sidecar 日志sidecar 未注入或初始化失败时,15021 不通会直接把 Pod 卡在未就绪:这是网格环境里最常见的发布阻塞原因,先核对注入标签与命名空间配置。
iptables 重定向规则异常同样会让健康检查失败:节点级网络策略、网络插件与规则都要一起看,只看网格配置会漏掉根因。
就绪探针参数不要设得过激:大流量启动场景下探针频繁失败会导致 Pod 反复重建,反而延长发布窗口。
网格排障建议从 Envoy 管理口入手:15000 上的配置与统计能直接说明流量是否被正确接管。
Pod 就绪与业务可用不是同一件事:就绪只说明容器进程与探针通过,业务层的依赖检查仍需单独设计。