首页 资讯 社群 我的社区 搜索

istio小结

LM123
2019-04-12 16:52:01

一、概述

测试环境已经跑了很长时间的istio了,也更新到了最新的istio-1.1。性能相较之前提升很大,官方给出的测试数据说是延迟降低到了8ms,但是实际测试确实访问速度有很大的提升,但是确实还是比直接访问pod速度差异很明显,sidecar的引入使数据流向变得层数更多,导致访问性能上的一些损耗。总结下来的使用建议就是不要盲目的使用service-mesh,服务网格是解决了很多问题,但同时也带来很多新的问题。但是istio的pilot和mixer还是可以用的。具体详细的istio介绍直接参考官网:https://istio.io/docs/concepts/what-is-istio/

这里多提一下:有很多人都喜欢看别人的博客,而不喜欢看官方文档,其实官方文档应该是你学习一个服务或者说使用服务的基准,看完一遍以后然后可以找一些具有一定经验使用的的博客说明,这些人在使用过程中根据自己实际的使用经验会有一些自己的见解或使用建议(这些在官网中有的是看不到的)。如果那种copy的blog就不要浪费时间了。

 

二、部署

参考GitHub上的install,然后我这里根据自己的使用做了一份,只是定制了一下values文件,没有做很大的修改。

https://github.com/cuishuaigit/istio-chart

这里使用的是istio的自动注入,所以需要设置一下namespace的label:

kubectl  label namespace default  istio-injection=enabled

首先是部署helm,现在最新版本的helm:https://github.com/helm/helm/releases

wget  https://storage.googleapis.com/kubernetes-helm/helm-v2.13.1-linux-amd64.tar.gz

创建serviceaccount

kubectl create helm-service-account.yaml

安装tiller

helm  init --service-account tiller

生产使用都是TLS的:

参考https://helm.sh/docs/using_helm/#using-ssl-between-helm-and-tiller

istio的安装参考我github的README。

安装完的效果:

root@k3-1:/data/appswitch# kubectl get pods -n istio-system
NAME                                      READY   STATUS      RESTARTS   AGE
grafana-5758685b-9qk5z                    1/1     Running     0          4d8h
istio-citadel-5f88c9b4-wwz2d              1/1     Running     0          4d8h
istio-galley-689b8d98-c5pw8               1/1     Running     0          4d8h
istio-ingressgateway-744855f4-x8jkl       1/1     Running     0          4d7h
istio-init-crd-10-68cgn                   0/1     Completed   0          4d8h
istio-init-crd-11-fsb6w                   0/1     Completed   0          4d8h
istio-init-crd-certmanager-10-64btr       0/1     Completed   0          4d8h
istio-init-crd-certmanager-11-8qzrg       0/1     Completed   0          4d8h
istio-pilot-6cd56bb6cb-6t78m              2/2     Running     0          4d8h
istio-policy-54686485-lsfxt               2/2     Running     0          4d7h
istio-sidecar-injector-746b458c-6rbdz     1/1     Running     0          4d8h
istio-telemetry-77b97547-2pdpq            1/2     Running     0          4d7h
istio-telemetry-77b96547-8gmd8            2/2     Running     0          4d7h
istio-tracing-656fc99c-xggq8              1/1     Running     0          4d8h
istiocoredns-bd4885d-x9hwt                2/2     Running     0          4d8h
kiali-69d68b45-2sxzj                      1/1     Running     0          4d4h
prometheus-66f5694-bn622                  1/1     Running     0          4d8h
servicegraph-759c7d9b-sjdfg               1/1     Running     0          4d8h
tiller-deploy-556f6dd9-jhpt4              1/1     Running     0          6d6h

三、使用

四、Appswitch

istio存在代理多层的问题,还有就是Envoy代理延时设置的问题,考虑引入Appswitch可以将这些层都删减掉,引入一个说明图

appswitch测试demo:

以daemonset的方式部署Appswitch:

git  clone https://github.com/cuishuaigit/appswitch.git

kubectl apply -f appswitch.yaml
root@k3-1:~# ax get nodes
   NAME   CLUSTER        IP       EXTERNALIP    ROLE     APPCOUNT
-----------------------------------------------------------------
  k3-1  cluster0  10.2.8.77               [compute]  1
  k3-3  cluster0  10.2.8.28               [compute]  0
  k3-2  cluster0  10.2.7.10               [compute]  1

部署nginx-demo:

kubectl  apply -f  nginx-demo.yaml

访问:

root@k3-1:/data/appswitch# ax get vservices
    VSNAME    VSTYPE   VSIP     VSPORTS   VSBACKENDIPS                 VSAPPIDS
----------------------------------------------------------------------------------------------
  nginx-demo  Random  1.1.1.1  [{80 80}]  []            [30d2f4g1-6194-4d95-bcvc-6c785c9f0237]
root@k3-1:/data/appswitch# ax run -- curl -I nginx-demo
HTTP/1.1 200 OK
Server: nginx/1.15.10
Date: Mon, 01 Apr 2019 13:52:24 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 26 Mar 2019 14:04:38 GMT
Connection: keep-alive
ETag: "5c9a3176-264"
Accept-Ranges: bytes

 

用户评论