美文网首页already
Istio 组件常用端口

Istio 组件常用端口

作者: 程序员札记 | 来源:发表于2023-01-03 22:42 被阅读0次

Istio 组件常用端口

端口 协议 使用者 描述
8060 HTTP Citadel GRPC 服务器
8080 HTTP Citadel agent SDS service 监控
9090 HTTP Prometheus Prometheus
9091 HTTP Mixer 策略/遥测
9876 HTTP Citadel, Citadel agent ControlZ 用户界面
9901 GRPC Galley 网格配置协议
15000 TCP Envoy Envoy 管理端口 (commands/diagnostics)
15001 TCP Envoy Envoy 传出
15006 TCP Envoy Envoy 传入
15004 HTTP Mixer, Pilot 策略/遥测 - mTLS
15010 HTTP Pilot Pilot service - XDS pilot - 发现
15011 TCP Pilot Pilot service - mTLS - Proxy - 发现
15014 HTTP Citadel, Citadel agent, Galley, Mixer, Pilot, Sidecar Injector 控制平面监控
15020 HTTP Ingress Gateway Pilot 健康检查
15029 HTTP Kiali Kiali 用户界面
15030 HTTP Prometheus Prometheus 用户界面
15031 HTTP Grafana Grafana 用户界面
15032 HTTP Tracing Tracing 用户界面
15443 TLS Ingress and Egress Gateways SNI
15090 HTTP Mixer Proxy
42422 TCP Mixer 遥测 - Prometheus

Istio 中的组件及端口示意图

按照习惯,我们首先展示一个全局示意图。下图展示的是 Istio 数据平面中 sidecar 的组成,以及与其交互的对象。

Istio sidecar 组成示意图

我们可以使用 nsenter 命令进入Bookinfo 示例的 productpage Pod的网络空间,查看其内部监听的端口信息。

image.png

从图中我们可以看到除了 productpage 应用本身监听的 9080 端口以外,Sidecar 容器还有监听大量的其他端口,如 150001500115004150061502115090 等,你可以在 Istio 文档 上了解 Istio 中使用的端口。

我们再进入 productpage Pod 中,使用 lsof -i 命令查看它打开的端口,如下图所示。

image.png

我们可以看到其中有 pilot-agentistiod 建立了 TCP 连接,上文中所述的监听中的端口,还有在 Pod 内部建立的 TCP 连接,这些连接对应了文章开头的示意图。

Sidecar 容器(istio-proxy )的根进程是 pilot-agent,启动命令如下图所示:

image.png

从图中我们可以看到,它 pilot-agent 进程的 PID 是 1,是它拉起了 envoy 进程。

istiod 的 Pod 中查看它打开的端口,如下图所示。

image.png

我们可以看到其中的监听的端口、进程间和远程通信连接。

Istio 中各端口的功能概述

这些端口在你进行问题排查时可以起着举足轻重的作用。下面将根据端口所在的组件和功能分类描述。

Istiod 中的端口

Istiod 中的端口相对比较少且功能单一:

  • 9876:ControlZ 用户界面,暴露 istiod 的进程信息
  • 8080:istiod 调试端口,通过该端口可以查询网格的配置和状态信息
  • 15010:暴露 xDS API 和颁发纯文本证书
  • 15012:功能同 15010 端口,但使用 TLS 通信
  • 15014:暴露控制平面的指标给 Prometheus
  • 15017:Sidecar 注入和配置校验端口

Sidecar 中的端口

从上文中,我们看到 sidecar 中有众多端口:

  • 15000:Envoy 管理接口,你可以用它来查询和修改 Envoy 代理的的配置,详情请参考 Envoy 文档
  • 15001:用于处理出站流量。
  • 15004:调试端口,将在下文中解释。
  • 15006:用于处理入站流量。
  • 15020:汇总统计数据,对 Envoy 和 DNS 代理进行健康检查,调试 pilot-agent 进程,将在下文中详细解释。
  • 15021:用于 sidecar 健康检查,以判断已注入 Pod 是否准备好接收流量。我们在该端口的 /healthz/ready 路径上设置了就绪探针,Istio 把 sidecar 的就绪检测交给了 kubelet,最大化利用 Kubernetes 平台自身的功能。envoy 进程将健康检查路由到 pilot-agent 进程的 15020 端口,实际的健康检查将发生在那里。
  • 15053:本地 DNS 代理,用于解析 Kubernetes DNS 解析不了的集群内部域名的场景。
  • 15090:Envoy Prometheus 查询端口,pilot-agent 将通过此端口收集统计信息。

以上端口可以分为以下几类:

  • 负责进程间通信,例如 15001、15006、15053
  • 负责健康检查和信息统计,例如 150021、15090
  • 调试:15000、15004

下文将对几个重点端口详解。

15000 端口

15000 是 Envoy 的 Admin 接口,该接口允许我们修改 Envoy,并获得一个视图和查询指标和配置。

管理接口由一个具有多个端点的 REST API 和一个简单的用户界面组成,你可以使用下面的命令开启 productpage Pod 中的 Envoy 管理接口视图。

kubectl -n default port-forward deploy/productpage-v1 15000

在浏览器中访问 http://localhost:15000,你将看到 Envoy Admin 界面如下图所示。

Envoy Admin 界面

15004 端口

通过 pilot-agent 代理 istiod 8080 端口上的调试端点,你可以进入数据平面 Pod 中访问 localhost 的 15004 端口查询网格信息,其效果与下面的 8080 端口等同。

8080 端口

你还可以在本地转发 istiod 8080 端口,请运行下面的命令。

kubectl -n istio-system port-forward deploy/istiod 8080

在浏览器中访问 http://localhost:8080/debug,你将看到调试端点,如下图所示。

Pilot 调试控制台

当然,这只是一种获取网格信息和调试网格的方式,你还可以使用 istioctl 命令或 Kiali 来调试,那样将更加高效和直观。

15020 端口

15020 端口有三大功能:

  1. 汇总统计数据:查询 15090 端口获取 envoy 的指标,也可以配置查询应用程序的指标,将 envoy、应用程序和自身的指标汇总以供 Prometheus 收集。对应的调试端点是 /stats/prometheus
  2. 对 Envoy 和 DNS 代理进行健康检查:对应的调试端点是 /healthz/ready/app-health
  3. 调试 pilot-agent 进程:对应的调试端点是 /quitquitquitdebug/ndsz/debug/pprof

下图展示的是使用本地端口转发后,在浏览器中打开 http://localhost:15020/debug/pprof 看到的调试信息。

pprof 端点

图中信息展示的是 pilot-agent 的堆栈信息。

总结

通过对 Istio 中各组件端口的了解,你应该对 Istio 中各组件的关系及其内部流量有了更进一步的认识,熟悉这些端口的功能,有助于对网格的故障排除

相关文章

  • Istio 组件常用端口

    Istio 组件常用端口 端口协议使用者描述8060HTTPCitadelGRPC 服务器8080HTTPCita...

  • istio-生产环境搭建

    相关组件 整个 istio 环境需要以下组件 prometheus -- 用于 K8s 平台和 istio 平台监...

  • Istio

    istio主要的应用场景: Istio应要组件 流量管理应用场景,主要由VirtualService组件的配置决定...

  • 删除namespace被hang住 一直处理 "Terminat

    最近清理k8s环境,删除istio时发现istio-system下有组件删除不掉:1.查看该namespase下还...

  • Istio v1.3 发布

    智能协议侦测(实验特性):无需命名端口,基于协议[-后缀]的格式,参照之前的需求:https://istio.io...

  • 问题集锦

    1.istio将入站和出站流量全部打入指定端口,那么是如何区分这些流量的七层是什么协议?目标端口2.tproxy为...

  • 运维工程师必须知道的端口号

    常用端口号: 代理服务器常用以下端口: (1). HTTP协议代理服务器常用端口号:80/8080/3128/80...

  • 端口

    一个计算机最多有65535个端口,端口不能重复。 常用和不常用端口一览表 端口:0服务:Reserved说明:通常...

  • Istio核心组件介绍

    01 架构 我们先简单回顾下Istio的架构,Istio架构图如下: Istio架构,来自Istio官网-Arch...

  • ensp

    1 认识ENSP 直接用安装包安装ensp和所有组件,不要单独安装组件 端口GE端口,指的是Gigabit Eth...

网友评论

    本文标题:Istio 组件常用端口

    本文链接:https://www.haomeiwen.com/subject/wypkcdtx.html