云原生

Istio 进程解析(基于Istio1.10.0)

2021-09-07  本文已影响0人  rushui

控制面

Polit调试接口:

curl http://istiod.istio-system:15014/debug/list

进程信息

/usr/local/bin/pilot-discovery discovery --monitoringAddr=:15014 --log_output_level=default:info --domain cluster.local --keepaliveMaxServerConnectionAge 30m
 
istio-proxy@istiod-77f89457ff-twz8k:/$ netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 127.0.0.1:9876          0.0.0.0:*               LISTEN      1/pilot-discovery  
tcp6       0      0 :::15010                :::*                    LISTEN      1/pilot-discovery  
tcp6       0      0 :::15012                :::*                    LISTEN      1/pilot-discovery  
tcp6       0      0 :::15014                :::*                    LISTEN      1/pilot-discovery  
tcp6       0      0 :::15017                :::*                    LISTEN      1/pilot-discovery  
tcp6       0      0 :::8080                 :::*                    LISTEN      1/pilot-discovery

端口解析

9876    tcp pilot-discovery ControlZ 自检工具
15010   grpc    pilot-discovery gRPC discovery service
15012   grpc    pilot-discovery secure gRPC discovery service - mTLS
15014   http    pilot-discovery http监听端口地址 开启debug时,handler参考xds/debug.go 后期可能由8080端口替代
15017   https   pilot-discovery HTTPS监听地址(webhooks)
8080    http    pilot-discovery HTTP监听地址(debug)

ControlZ 查看:

用法 https://www.servicemesher.com/istio-handbook/practice/controlz-tool.html

export ISTIOD_POD=$(kubectl get pod -n istio-system -l app=istiod -o jsonpath=``'{.items[0].metadata.name}'``)`
istioctl dashboard controlz $ISTIOD_POD -n istio-system

15014监控端口(通过代码分析,后期可能由8080端口替代)

http://localhost:8080/debug/list 接口列表(不包含pprof)

http://localhost:15014/debug/pprof/ 原生的pprof 可使用controlZ查看

http://localhost:15014/debug/mesh

详情见xds/debug.go

15017端口

只有设置了k8s配置才会开启该端口,目前分析主要用来自动注入sidecar的控制

使用k8s选项启动pilot-descovery后,请求 http://localhost:8080/debug/inject 可看到注入信息

设置handleFunc地址:pkg/kube/inject/webhook.go

请求地址:https://localhost:15017/inject

8080端口

http://localhost:8080/ready 健康检查接口

也支持debug

http://localhost:8080/debug/mesh

http://localhost:8080/debug/inject 注入的webhook

数据面

Envoy调试接口:

curl http://127.0.0.1:15000/help

进程信息

istio-p+     1     0  0 Jul17 ?        00:07:36 /usr/local/bin/pilot-agent proxy sidecar --domain default.svc.cluster.local --serviceCluster productpage.default --proxyLogLevel=warning --proxyComponentLogLevel=misc:error --log_output_level=default:info --concurrency 2
istio-p+    21     1  0 Jul17 ?        00:40:39 /usr/local/bin/envoy -c etc/istio/proxy/envoy-rev0.json --restart-epoch 0 --drain-time-s 45 --drain-strategy immediate --parent-shutdown-time-s 60 --service-cluster productpage.default --service-node sidecar~10.42.1.80~productpage-v1-6b746f74dc-hp9jp.default~default.svc.cluster.local --local-address-ip-version v4 --bootstrap-version 3 --disable-hot-restart --log-format %Y-%m-%dT%T.%fZ.%l.envoy %n.%v -l warning --component-log-level misc:error --concurrency 2
 
istio-proxy@productpage-v1-6b746f74dc-hp9jp:/$ netstat -ntlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name   
tcp        0      0 0.0.0.0:15090           0.0.0.0:*               LISTEN      21/envoy           
tcp        0      0 127.0.0.1:15000         0.0.0.0:*               LISTEN      21/envoy           
tcp        0      0 0.0.0.0:9080            0.0.0.0:*               LISTEN      -                  
tcp        0      0 0.0.0.0:15001           0.0.0.0:*               LISTEN      21/envoy           
tcp        0      0 0.0.0.0:15006           0.0.0.0:*               LISTEN      21/envoy           
tcp        0      0 0.0.0.0:15021           0.0.0.0:*               LISTEN      21/envoy           
tcp6       0      0 :::15020                :::*                    LISTEN      1/pilot-agent 

可以看到 pilot-agent链接的是 pilot-descovery 的15012端口
envoy会请求本地pilot-agent的15020端口

端口解析

15021   tcp envoy   健康检查
15090   TCP envoy   http链接管理 暴露 prometheus 接口 请求地址:http://0.0.0.0:15090/stats/prometheus,通过代码可以知道,这个默认是代理应用的 /metrics 接口
15000   grpc    envoy   Envoy 管理端口 (commands/diagnostics)
15001   TCP envoy   Envoy 传出
15006   TCP envoy   Envoy 传入
15020   http    pilot-agent 
为envoy提供服务的端口(看代码像是健康检查的)

定义路由:pilot/cmd/pilot-agent/status/server.go:199

9080    http    productpage 应用服务端口
上一篇 下一篇

猜你喜欢

热点阅读