我最新最全的文章都在 南瓜慢说 http://www.pkslow.com ,文章更新也只在官网,欢送大家来喝茶~~
1 简介
之前在文章《服务网格Istio入门-具体记录Kubernetes装置Istio并应用》曾经具体地介绍了如何在Linux零碎上在Kubernetes装置并应用Istio,但毕竟服务器是要钱的,几毛钱一小时,是我格局小了,但我还是想在Mac上装置应用。
2 装置Istio
我的电脑曾经装置了Kubernetes了,能够参考《Mac上应用Docker Desktop启动Kubernetes,踩坑后终于搞掂》,当初间接装置Istio。
下载对应的安装包:
<code class="bash">$ curl -L https://istio.io/downloadIstio | sh -
目录如下:
把bin目录下的istioctl增加到PATH。
<code class="bash">$ export ISTIO_HOME=/Users/larry/Software/istio/istio-1.10.3 $ export PATH=$PATH:$ISTIO_HOME/bin
检测是否能够执行装置:
<code class="bash">$ istioctl x precheck ✔ No issues found when checking the cluster. Istio is safe to install or upgrade!
没有问题,就能够开始装置了:
<code class="bash">$ istioctl install
因为要下载镜像,所以须要花一点工夫,胜利装置如下:
能够做一些简略的查看:
<code class="bash"># 查看istio-system命令空间下的Pod $ kubectl get pod -n istio-system # 查看资源 $ kubectl api-resources | grep istio
后果如下:
3 应用istio
3.1 注入代理
Istio默认不会给其它Pod注入代理,须要给Namespace增加对应的标签才能够:
<code class="bash">$ kubectl label namespace default istio-injection=enabled
但对于现有的Pod,也还是不会注入的,没关系,咱们来应用官网提供的示例,新创建一些资源:
<code class="bash">$ kubectl apply -f istio-1.10.3/samples/bookinfo/platform/kube/bookinfo.yaml
因为是第一次启动,要下载镜像,所以要花比拟长的工夫,如上面命令察看:
<code class="bash">$ watch 'kubectl get pod -l app -l version'
几分钟后,终于搞定:
能够看到每个Pod都有两个Container,一个是利用的,一个是代理的。
3.2 装置监控插件
为了更好地可视化地监控利用,咱们来装置一些插件:
<code class="bash">$ kubectl apply -f istio-1.10.3/samples/addons
同样的期待:
<code class="bash">$ watch 'kubectl get pod -n istio-system'
大略5分钟左右,胜利启动了:
能够看到许多很常见的监控软件:Grafana、Prometheus等。
3.3 在内部拜访资源
Istio给咱们提供了Gateway的性能,咱们给利用创立一个Gateway对外裸露服务:
<code class="bash">$ kubectl apply -f istio-1.10.3/samples/bookinfo/networking/bookinfo-gateway.yamlgateway.networking.istio.io/bookinfo-gateway createdvirtualservice.networking.istio.io/bookinfo created$ kubectl get gatewayNAME AGEbookinfo-gateway 17s$ kubectl get virtualservices.networking.istio.ioNAME GATEWAYS HOSTS AGEbookinfo ["bookinfo-gateway"] ["*"] 29s
因为我很早之前就装置了Ingress Controller(Kubernetes用Helm装置Ingress并踩一下应用的坑),为了避免抵触,把原来的给删掉:
<code class="bash"># 装置命令,不执行# helm install azure-ingress azure/nginx-ingress# 删除Ingress Controllerhelm delete azure-ingress
而后就能够失常拜访利用了:http://localhost/productpage
咱们能够多点击几次,多刷新几次,能够多产生一些流量,以便后续查看监控。
3.4 查看监控
同样,咱们也须要在内部拜访监控的内容,拜访kiali如下,会间接帮咱们关上浏览器:
<code class="bash">$ istioctl dashboard kialihttp://localhost:20001/kiali
能够查看残缺清晰的流量走向图,晓得有什么组件,它们之间的调用关系是怎么的:
查看特定的组件productpage,会以它为核心显示与它间接关联的利用和关系:
当然,也能够查看Grafana:
<code class="bash">$ istioctl dashboard grafana
界面如下:
查看Jaeger:
<code class="bash">$ istioctl dashboard jaeger
界面如下:
查看Prometheus:
<code class="bash">$ istioctl dashboard prometheus
界面如下:
总结
Istio给咱们提供了很多有用的个性,光监控方面就十分丰盛,更多细节咱们后续再探讨吧。