环境
【istio】1.0.1
【Kubernetes】1.10.4
问题描述
istio
使用helm template
安装的,这个方式可以精准控制一些参数,
比如:
- 镜像仓库
默认的镜像仓库都在docker.io
那里,或者dockerhub
,国内访问速度不是很理想
可以换成阿里的镜像仓库 - 自动注入
默认情况下,自动注入是没有开启的,配置加上
--set sidecarInjectorWebhook.enabled=true
就可以开启啦
jaeger
在istio
里叫做tracing
,
默认是安装的,也可以显式指定一下--set tracing.enabled=true
但是安装完成之后,死活访问不到,官方教程也是写着访问http://localhost:16686
这不是在逗我?我装在阿里的k8s集群里,访问localhost
有毛用?
看官网截图
地址
我把localhost
换成istio-ingressgateway
的EXTERNAL-IP
,也无济于事
解决的过程
finding
然后就是谷歌一顿搜,在github
上看到了一个issues
地址
截图
突然反应过来,我安装好的
jaeger-query
类型是 ClusterIP
的,EXTERNAL-IP
是none
再对比一下有外网ip的
istio-ingressgateway
如图
ClusterIP
这个类型我理解是只能在集群内访问,不会分配外网ip
应该要安装为type = LoadBalancer
try
二话不说,先卸载了,重装
问题来了,我是使用helm template
安装的,并没有jaeger
的配置文件
想了想,应该可以把安装时的文件下载下来,先执行删除,再安装
download
wget https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/all-in-one/jaeger-all-in-one-template.yml
这个地址哪来的呢?github项目写的哦
具体请点
uninstall
kubectl delete -n test -f jaeger-all-in-one-template.yml
注意把test
替换为你自己的istio
的命名空间,默认是istio-system
install
这个文件我打开看了看,jaeger-query
的type
类型默认是 LoadBalancer
的,所以直接安装就行,不用修改
kubectl create -n test -f jaeger-all-in-one-template.yml
check
漂亮,直接分配了外网IP,端口号也有了,就是
80
不用去进行什么端口映射了(ps:我也不知道为什么不用,反正我是直接访问80就出现页面了,哪位大佬能告诉我,感激不尽)
发散思维
说明jaeger
外网无法访问的问题就是我安装的时候,配置不对,type
配错了
再回过头看看istio
的安装配置,发现还真有这个配置,而且默认就是ClusterIP
的
链接
截图
所以其实在安装的时候,加上配置
--set tracing.service.type=LoadBalancer
就可以了
solution
综上所述,有两种解决方案
1. 重装jaeger
下载
wget https://raw.githubusercontent.com/jaegertracing/jaeger-kubernetes/master/all-in-one/jaeger-all-in-one-template.yml
卸载
kubectl delete -n test -f jaeger-all-in-one-template.yml
安装
kubectl create -n test -f jaeger-all-in-one-template.yml
2. 重装istio(也适用第一次安装istio)
helm template install/kubernetes/helm/istio --name my-istio --namespace test \
--set global.tag=1.0.0 \
--set global.hub=registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog \
--set global.hyperkube.hub=registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog \
--set kiali.hub=registry.cn-shenzhen.aliyuncs.com/cuishiwen \
--set kiali.tag=istio-release-1.0 \
--set mixer.prometheusStatsdExporter.hub=registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog \
--set prometheus.hub=registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog \
--set tracing.jaeger.hub=registry.cn-hangzhou.aliyuncs.com/aliacs-app-catalog \
--set tracing.service.type=LoadBalancer \
--set servicegraph.enabled=true \
--set tracing.enabled=true \
--set sidecarInjectorWebhook.enabled=true \
--set prometheus.enabled=true \
--set pilot.enabled=true \
--set kiali.enabled=true \
> ./001-my-istio.yaml
参考
https://github.com/jaegertracing/jaeger-kubernetes#development-setup
https://github.com/docker/for-win/issues/1681
https://github.com/kiali/kiali/issues/222
https://preliminary.istio.io/zh/docs/reference/config/installation-options/#tracing-%E9%80%89%E9%A1%B9
https://istio.io/docs/tasks/telemetry/distributed-tracing/#accessing-the-dashboard