1 前提
istio组件已部署完毕
2 启用istio的skywalking链路追踪配置
#istio默认版本安装的情况下,不需要指定--set revision=1-19-1版本
istioctl install --set revision=1-19-1 -y -f - <<EOF
apiVersion: install.istio.io/v1alpha1
kind: IstioOperator
spec:
meshConfig:
defaultProviders:
tracing:
- "skywalking"
enableTracing: true
extensionProviders:
- name: "skywalking"
skywalking:
service: tracing.istio-system.svc.cluster.local
port: 11800
EOF
如下:
3 配置采样率为100%
kubectl apply -f - <<EOF
apiVersion: telemetry.istio.io/v1alpha1
kind: Telemetry
metadata:
name: mesh-default
namespace: istio-system
spec:
tracing:
- randomSamplingPercentage: 100.00
EOF
如下:
4 安装skywalking
kubectl apply -f samples/addons/extras/skywalking.yaml
安装成功后,svc是clusterIp,改为nodePort指定对外暴露的端口,方便浏览器访问。
访问地址为:http://${ip}:32188/
5 部署bookinfo服务
使用istio官方提供的bookinfo服务验证
#开启注入
kubectl label namespace default istio-injection=enabled
#部署bookinfo服务
kubectl apply -f samples/bookinfo/platform/kube/bookinfo.yaml
如下:
调用服务,有调用信息才能看到链路追踪的过程
for i in $(seq 1 100); do curl -s -o /dev/null "http://${ip}:30381/productpage"; done
6 查看效果
7 核心步骤
看bookinfo源码,发现如果想实现上述效果,必须在服务的header中透传request-id。
这点在自己服务编码使用的时候,需要注意。