istio小结

一、概述

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

 

二、部署

参考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也能解决k8s的跨网段通信问题。

 

 appswitch测试demo:

以daemonset的方式部署Appswitch:

 

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

kubectl apply -f appswitch.yaml

 

root@ku13-1:~# ax get nodes
   NAME   CLUSTER        IP       EXTERNALIP    ROLE     APPCOUNT
-----------------------------------------------------------------
  ku13-5  cluster0  10.1.80.149              [compute]  0
  ku13-1  cluster0  10.2.68.77               [compute]  0
  ku13-2  cluster0  10.2.73.110              [compute]  1
  ku13-3  cluster0  10.2.83.248              [compute]  0

 

部署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

 

跨网段访问:

root@ku13-5:~# ax run -- curl -I nginx-demo
HTTP/1.1 200 OK
Server: nginx/1.15.11
Date: Tue, 16 Apr 2019 08:39:17 GMT
Content-Type: text/html
Content-Length: 612
Last-Modified: Tue, 09 Apr 2019 11:20:51 GMT
Connection: keep-alive
ETag: "5cac8013-264"
Accept-Ranges: bytes

 

参考:

http://appswitch.io/blog/kubernetes_istio_and_network_function_devirtualization_with_appswitch/

https://appswitch.readthedocs.io/en/latest/reading.html

https://appswitch.readthedocs.io/en/latest/integrations.html

https://istio.io/blog/2018/delayering-istio/

https://github.com/cuishuaigit/appswitch

posted @ 2019-03-29 17:19  诗码者  阅读(967)  评论(0编辑  收藏  举报