istio系列之六 调试服务网格

一、istio常见的调试方式

主要由以下几种:

  • istioctl 命令行
  • controlZ 控制平面的自检工具
  • Envoy admin 接口
  • Pilot debug 接口

istio的版本信息:

$ istioctl version
client version: 1.11.4
control plane version: 1.11.4
data plane version: 1.11.4 (6 proxies)

二、istioctl命令行

可以使用 --help 查看相关帮助信息:

$ istioctl --help

1.安装部署相关

  • istioctl verify-install: 可用于验证当前的k8s集群环境是否可以部署 Istio
  • istioctl install [flags]: 用于在当前集群安装 Istio 环境
  • istioctl profile [list/diff/dump]: 操作 Istio 的 profile
  • istioctl kube-inject: 用于对Pod注入Envoy sidecar
  • istioctl dashboard [command]:启动指定的 Istio Dashboard Web UI,包含controlz/envoy/grafana/jaeger/kiali/prometheus/skywalking/zipkin

2.网格配置状态检查

  • istioctl ps: 查看网格配置同步状态。有如下几种状态: SYNCED(配置已同步)、NOT SENT(配置没有下发)、STALE(配置下发了,但是Pod并没有响应)
  • istioctl pc [cluster/bootstrap/listener/route/endpoints] <pod-name.namespace>: 获取指定资源的网格配置详情。(官方文档)

3.查看pod相关网格配置信息

istioctl x describe pod <pod-name>[.<namespace>],主要包含以下信息(官方文档):

  • 验证 pod 是否在网格中
  • 验证 destination rule 配置
  • 验证 virtual service 规则
  • 验证流量路由
  • 验证严格双向 TLS

示例:

$ istioctl x describe pod order-deployment-v1-6dc99c4795-l8l5p -n istio-demo
Pod: order-deployment-v1-6dc99c4795-l8l5p
   Pod Ports: 50050 (order-deployment), 15090 (istio-proxy)
--------------------
Service: order-service
   Port: http 50050/HTTP targets pod port 50050
DestinationRule: order-dr for "order-service"      #验证 destination rule 配置
   Matching subsets: v1
      (Non-matching subsets v2)
   No Traffic Policy
VirtualService: order-vs                           #验证 virtual service 规则                      
   Weight 100%                                     #验证流量路由

4.网络配置诊断

  • istioctl analyze [–n <namespace>/--all-namespaces]: 检查指定命名空间下的网格配置情况,如果有问题会提示相应的警告或错误信息
  • istioctl analyze a.yaml b.yaml my-app-config/: 针对单个配置文件或某个目录下的所有配置文件进行检查
  • istioctl analyze --use-kube=false a.yaml: 以忽略部署平台的方式去检查指定的配置文件。官方文档

三、controlZ 可视化自检工具

controlZ 是针对控制平面的可视化自检工具,其主要功能如下:

  • 调整日志输出级别
  • 查看内存使用情况
  • 查看环境变量
  • 查看进程信息

使用方式如下(官方文档):

$ istioctl dashboard controlz deployment/istiod -n istio-system --address=0.0.0.0

浏览器打开页面如下:

 

 需修改日志输出级别,点击 Logging Scopes 菜单进入修改即可。

四、Envoy admin API 接口

Envoy admin API 可以查看和操作数据平面,其主要功能如下:

  • 日志级别调整
  • 性能数据分析
  • 配置等信息
  • 指标查看

使用如下命令打开指定Pod的Envoy admin API:

$ istioctl d envoy <pod-name>.[namespace] --address=0.0.0.0

或者通过如下方式开放端口:

$ kubectl port-forward <pod-name> 15000:15000 --address=0.0.0.0

浏览器打开页面如下:

 

或者直接进入到envoy中,访问接口。(eg:kubectl exec <pod-name> -c istio-proxy curl http://127.0.0.1:15000/help 会列出所有的调试接口)

五、Pilot debug 接口

Pilot debug 接口的主要功能如下:

  • xDS 和配置信息
  • 性能问题分析
  • 配置同步情况

使用如下命令开放其端口:

$ kubectl port-forward service/istiod -n istio-system 15014:15014 --address=0.0.0.0

浏览器打开页面如下(后面需要跟/debug路由):

 

posted @ 2022-05-11 20:35  划水的猫  阅读(448)  评论(0)    收藏  举报