docker desktop之Istio初体验
本文环境为Mac,其中 Docker Desktop中安装的k8s集群环境的版本为v1.19.7,istio v1.8.1
Istio下载安装
进入Istio发布页面,下载版本istio-1.8.1-osx.tar.gz,然后解压到/usr/local/istio-1.8.1,可以看到下面包含bin及samples文件夹,bin里包含istioctl命令,samples里包含Istio自带的样例应用的部署配置。
样例演示
选择profile=demo,安装命令如下:istioctl install --set profile=demo -y
1 | #会看到如下输出 |
稍等片刻之后,等重要组件Istiod, Ingress Gateway, Egress Gateway都安装完成了。可以发现,其将上述组件安装到了istio-system这个namespace下。
1 | $ kubectl get pods -n istio-system ✔ 00:26:42 |
Bookinfo样例应用部署
新建一个专门用来演示的namespace istio-demo,且标记该namespace使用istio自动注入。
1 | $ kubectl create namespace istio-demo |
粗略看下Bookinfo的几个模块
1 | $ cd /usr/local/istio-1.8.1 |
下面,使用Istio samples文件夹下自带的配置部署Bookinfo应用:
1 | $ cd /usr/local/istio-1.8.1 |
Bookinfo样例应用访问
查看deployments及pods,发现Bookinfo的各个组件已部署完成:
1 | kubectl get pods -n istio-demo ✔ 00:14:09 |
下面我们试着在ratings容器里访问Bookinfo的入口页面productpage。
执行命令时,需指定容器为ratings,curl请求productpage,发现页面标题已可正常显示。
1 | kubectl exec ratings-v1-7d99676f7f-x4vkn -c ratings -n istio-demo -- curl -s productpage:9080/productpage | grep -o "<title>.*</title>" |
下面看一下该应用如何在集群外部进行访问。涉及到通过配置Istio的Ingress Gateway,从而将流量打到productpage。同样,需要执行下samples文件夹下自带的配置文件。$ kubectl apply -n istio-demo -f samples/bookinfo/networking/bookinfo-gateway.yaml
然后查看下Ingress Gateway的ip及端口。
1 | kubectl get service istio-ingressgateway -n istio-system ✔ 00:33:07 |
对于本文所采用的Docker Desktop K8s本地部署环境来说,外部IP就是localhost。采用http://localhost/productpage即可访问Bookinfo的productpage页面。
Istio Dashboard安装
安装一下Istio的几个插件,初步体验里边的一些功能。
1 | $ cd /usr/local/istio-1.8.1 |
- Kiali 面板
输入如下命令打开Kiali面板$ istioctl dashboard kiali
选择对应的namespaces。
可以看到,调用关系一目了然,请求由Istio Ingress Gateway进来,首先访问productpage,productpage访问details获取图书详情,productpage访问reviews获取评论,reviews访问ratings获取图书评级。 - 打开
Jaeger面板$ istioctl dashboard jaeger
左侧Service下拉菜单,选择productpage.istio-demo,从右面的Traces里点击productpage,可以看到如下调用详情。
调用链以时间序横向展示,同样可以看到请求由istio-ingressgateway进来到达productpage,productpage调用details及reviews,reviews调用ratings,每个调用的时间花费亦显示了出来。Istio卸载 - 卸载
addons1
2cd /usr/local/istio-1.8.1
$ kubectl delete -f samples/addons - 卸载
Bookinfo1
2
3cd /usr/local/istio-1.8.1
$ kubectl delete -n istio-demo -f samples/bookinfo/platform/kube/bookinfo.yaml
$ kubectl delete -n istio-demo -f samples/bookinfo/networking/bookinfo-gateway.yaml - 卸载
Istio1
$ istioctl manifest generate --set profile=demo | kubectl delete --ignore-not-found=true -f -
- 删除
namespace istio-system1
$ kubectl delete namespace istio-system
- 取消对
istio-demo进行Istio自动注入1
$ kubectl label namespace istio-demo istio-injection-
- 删除
namespace istio-demo1
$ kubectl delete namespace istio-demo
转载磊磊落落-
Isoti使用,个人实战踩坑已验证无问题。




