一、概述

测试环境已经跑了很长时间的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-:/data/appswitch# kubectl get pods -n istio-system
NAME READY STATUS RESTARTS AGE
grafana-5758685b-9qk5z / Running 4d8h
istio-citadel-5f88c9b4-wwz2d / Running 4d8h
istio-galley-689b8d98-c5pw8 / Running 4d8h
istio-ingressgateway-744855f4-x8jkl / Running 4d7h
istio-init-crd--68cgn / Completed 4d8h
istio-init-crd--fsb6w / Completed 4d8h
istio-init-crd-certmanager--64btr / Completed 4d8h
istio-init-crd-certmanager--8qzrg / Completed 4d8h
istio-pilot-6cd56bb6cb-6t78m / Running 4d8h
istio-policy--lsfxt / Running 4d7h
istio-sidecar-injector-746b458c-6rbdz / Running 4d8h
istio-telemetry-77b97547-2pdpq / Running 4d7h
istio-telemetry-77b96547-8gmd8 / Running 4d7h
istio-tracing-656fc99c-xggq8 / Running 4d8h
istiocoredns-bd4885d-x9hwt / Running 4d8h
kiali-69d68b45-2sxzj / Running 4d4h
prometheus-66f5694-bn622 / Running 4d8h
servicegraph-759c7d9b-sjdfg / Running 4d8h
tiller-deploy-556f6dd9-jhpt4 / Running 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-:~# ax get nodes
NAME CLUSTER IP EXTERNALIP ROLE APPCOUNT
-----------------------------------------------------------------
ku13- cluster0 10.1.80.149 [compute]
ku13- cluster0 10.2.68.77 [compute]
ku13- cluster0 10.2.73.110 [compute]
ku13- cluster0 10.2.83.248 [compute]

部署nginx-demo:

kubectl  apply -f  nginx-demo.yaml

访问:

root@k3-:/data/appswitch# ax get vservices
VSNAME VSTYPE VSIP VSPORTS VSBACKENDIPS VSAPPIDS
----------------------------------------------------------------------------------------------
nginx-demo Random 1.1.1.1 [{ }] [] [30d2f4g1--4d95-bcvc-6c785c9f0237]
root@k3-:/data/appswitch# ax run -- curl -I nginx-demo
HTTP/1.1 OK
Server: nginx/1.15.
Date: Mon, Apr :: GMT
Content-Type: text/html
Content-Length:
Last-Modified: Tue, Mar :: GMT
Connection: keep-alive
ETag: "5c9a3176-264"
Accept-Ranges: bytes

跨网段访问:

root@ku13-:~# ax run -- curl -I nginx-demo
HTTP/1.1 OK
Server: nginx/1.15.
Date: Tue, Apr :: GMT
Content-Type: text/html
Content-Length:
Last-Modified: Tue, Apr :: 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

istio小结的更多相关文章

  1. Istio如何使用相同的端口访问网格外服务

    1.1.背景 写这篇文章的目的是为了说明以下问题:如何使用TCP协议相同的端口访问网格外多个服务? 这是最近直播的时候有一个同学提出的,当时我没有完全明白,“访问多集群” 的意思.后来仔细思考了一下, ...

  2. Istio流量管理实现机制深度解析

    https://zhaohuabing.com/post/2018-09-25-istio-traffic-management-impl-intro/TOC 前言 Pilot高层架构 统一的服务模型 ...

  3. 使用Istio治理微服务入门

    近两年微服务架构流行,主流互联网厂商内部都已经微服务化,初创企业虽然技术积淀不行,但也通过各种开源工具拥抱微服务.再加上容器技术赋能,Kubernetes又添了一把火,微服务架构已然成为当前软件架构设 ...

  4. 【译文连载】 理解Istio服务网格(第七章 安全)

    全书目录 第一章 概述 第二章 安装 第三章 流控 第四章 服务弹性 第五章 混沌测试 第六章 可观测性 本文目录 第7章 安全 7.1 身份认证 7.1.1 Kubernetes上的Istio的身份 ...

  5. Istio 流量劫持过程

    开篇 Istio 流量劫持的文章其实目前可以在servicemesher社区找到一篇非常详细的文章,可查阅:Istio 中的 Sidecar 注入及透明流量劫持过程详解.特别是博主整理的那张" ...

  6. Istio 运维实战系列(1):应用容器对 Envoy Sidecar 的启动依赖问题

    本系列文章将介绍用户从 Spring Cloud,Dubbo 等传统微服务框架迁移到 Istio 服务网格时的一些经验,以及在使用 Istio 过程中可能遇到的一些常见问题的解决方法. 故障现象 该问 ...

  7. Istio 运维实战系列(2):让人头大的『无头服务』-上

    本系列文章将介绍用户从 Spring Cloud,Dubbo 等传统微服务框架迁移到 Istio 服务网格时的一些经验,以及在使用 Istio 过程中可能遇到的一些常见问题的解决方法. 什么是『无头服 ...

  8. 在 Istio 中实现 Redis 集群的数据分片、读写分离和流量镜像

    Redis 是一个高性能的 key-value 存储系统,被广泛用于微服务架构中.如果我们想要使用 Redis 集群模式提供的高级特性,则需要对客户端代码进行改动,这带来了应用升级和维护的一些困难.利 ...

  9. 如何在 Istio 中支持 Dubbo、Thrift、Redis 以及任何七层协议?

    赵化冰,腾讯云高级工程师,Istio Member,ServiceMesher管理委员,Istio 项目贡献者, Aerika 项目创建者 ,热衷于开源.网络和云计算.目前主要从事服务网格的开源和研发 ...

随机推荐

  1. 走进JDK(十二)------TreeMap

    一.类定义 TreeMap的类结构: public class TreeMap<K,V> extends AbstractMap<K,V> implements Navigab ...

  2. [swarthmore cs75] Compiler 6 – Garbage Snake

    课程回顾 Swarthmore学院16年开的编译系统课,总共10次大作业.本随笔记录了相关的课堂笔记以及第9次大作业. 赋值的副作用:循环元组 下面的代码展示了Python3是如何处理循环列表(pri ...

  3. U-Boot Makefile分析(2) config.mk分析

    浏览一下U-Boot各个子目录下的Makefile可以看到,几乎他们都会包含$(TOPDIR)/config.mk,那么这个文件进行了什么操作呢?简单概括:读入include/config.mk.in ...

  4. <笔记>TP5的分页传递额外参数

    默认生成的分页只有page一个参数,若需要提供额外的参数才能访问分页(例如查询结果的分页,需要传入查询关键字的参数才能显示结果),则需要设置额外参数query

  5. POJ - 3278 Catch That Cow bfs 线性

    #include<stdio.h> #include<string.h> #include<algorithm> #include<queue> usi ...

  6. java 保证程序安全退出

    以前在开发时只知道依靠数据库事务来保证程序关闭时数据的完整性. 但有些时候一个业务上要求的原子操作,不一定只包括数据库,比如外部接口或者消息队列.此时数据库事务就无能为力了. 这时我们可以依靠java ...

  7. optimizer

    在很多机器学习和深度学习的应用中,我们发现用的最多的优化器是 Adam,为什么呢? 下面是 TensorFlow 中的优化器, https://www.tensorflow.org/api_guide ...

  8. VSCode插件开发全攻略(十)打包、发布、升级

    更多文章请戳VSCode插件开发全攻略系列目录导航. 发布方式 插件开发完了,如何发布出去分享给他人呢?主要有3种方法: 方法一:直接把文件夹发给别人,让别人找到vscode的插件存放目录并放进去,然 ...

  9. C#通过COM组件操作IE浏览器(三):了解IHTMLDocument2

    IHTMLDocument2方法 说明 write 写入 writeln 写入并换行 open 打开一个流,以收集 document.write 或 document.writeln 的输出 clos ...

  10. 解决微信小程序的wx-charts插件tab切换时的显示会出现位置移动问题-tab切换时,图表显示错乱-实现滑动tab

    解决Echarts在微信小程序tab切换时的显示会出现位置移动问题 tab切换时,图表显示错乱 <canvas class="kcanvas" canvas-id=" ...