美文网首页云原生
Istio 进程解析(基于Istio1.10.0)

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

作者: rushui | 来源:发表于2021-09-07 15:07 被阅读0次

    控制面

    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 应用服务端口
    

    相关文章

      网友评论

        本文标题:Istio 进程解析(基于Istio1.10.0)

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