Istio sidecar 管理口
服务网格 Istio 数据面的惯例端口群:15000 是 sidecar 内 Envoy 的管理接口,可查看配置快照、集群端点与运行统计;15001 与 15006 分别承接出向与入向流量的重定向;15020 提供聚合指标与探针端点,15090 暴露 Envoy 自身指标。
基本信息
| 服务 | Istio sidecar(Envoy + istio-agent) |
|---|---|
| 协议 | TCP(管理面 HTTP 接口) |
| 惯例端口 | 15000 管理 / 15001 出向 / 15006 入向 |
| 相关端口 | 15020 指标与探针、15090 Envoy 指标 |
| 暴露面 | Pod 内与节点内,勿对外 |
典型使用场景
- 排查「网格内 503」:看管理口的端点同步情况
- 用 istioctl proxy-status 检查配置下发状态
- 抓配置快照做版本对比,确认规则是否生效
- 观察运行统计判断连接与超时分布
- 核对节点上的重定向规则是否符合预期
Sidecar 排查
Sidecar 排查
istioctl proxy-status
kubectl exec deploy/app -c istio-proxy -- curl -s localhost:15000/clusters | head -20
kubectl exec deploy/app -c istio-proxy -- curl -s localhost:15000/config_dump | head -c 300
kubectl exec deploy/app -c istio-proxy -- curl -s localhost:15000/stats | grep -E 'upstream_cx|timeout' | head排障与核对
| 检查项 | 做法 | 异常表现 |
|---|---|---|
| 绑定地址 | Pod 内 ss -lntp | grep 15000 | 监听非回环地址:配置被改,暴露面扩大 |
| 配置下发 | istioctl proxy-status | 显示 STALE:控制面异常或配置未下发 |
| 端点同步 | /clusters 中的端点列表 | 端点为空:服务选择器或端口名不匹配 |
| 流量劫持 | 节点侧重定向规则 | 规则缺失:未注入 sidecar,流量绕过代理 |
Istio 默认把 Envoy 管理口限制在本机回环,若在节点上看到它绑到其他地址,说明配置被改过,应先确认是否为有意变更。管理口虽然只是读接口,但配置快照与拓扑信息对攻击者价值很高。
端口群的分工
15001 与 15006 是流量劫持的落点:节点上的规则把 Pod 的出向与入向流量改写到这里,再由 Envoy 按路由转发。15020 与 15090 分别暴露聚合指标与 Envoy 自身指标,15021 用于健康检查。记清分工,排查时才不会把代理配置问题误判成应用故障。
排障优先用 istioctl proxy-status 与管理口快照,而不是先翻业务日志:代理层的 503 与超时在快照里能看到具体上游与响应码,比在应用日志里猜要直接得多。
节点网络策略过宽导致 15000 可从 Pod 外访问:代理配置与集群拓扑可被读取,为横向移动提供信息。