首页 > 其他 > 详细

istio 简介

时间:2019-12-04 14:12:47      阅读:47      评论:0      收藏:0      [点我收藏+]

最近接触到了 istio,感觉十分强大,写篇短文推荐给大家。本文所涉及的具体实验步骤可以参考官网教程

istio 相关文章列表:

istio 是什么

Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。

  • istio 适用于容器或虚拟机环境(特别是 k8s),兼容异构架构。
  • istio 使用 sidecard(边车模式)代理服务的网络,不需要对业务代码本身做任何的改动。
  • HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡。
  • istio 通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行为进行细粒度控制;支持访问控制、速率限制和配额。
  • istio 对出入集群入口和出口中所有流量的自动度量指标、日志记录和跟踪。

部署示例

官网的例子在我的环境下有点问题,直接使用部署 review 应用会报 com.ibm.ws.kernel.boot.LaunchException 错误,启动失败。具体原因没找到,猜测是 websphere 和我的环境有点冲突(网上很多直接用 kubeadm 起的集群好像都有点问题)?我将它改写成了 spring boot 项目,代码可见 github

首先部署一个简短书评网站,构架如图。


 
技术分享图片
构架示意

网站包括四个微服务:

  1. productpage :本服务会调用 details 和 reviews 两个微服务,用来生成页面。
  2. details :这个微服务包含了书籍的信息。
  3. reviews :这个微服务包含了书籍相关的评论。它还会调用 ratings 微服务。
  4. ratings :ratings 微服务中包含了由书籍评价组成的评级信息。

reviews 微服务有 3 个版本:

  1. v1 版本不会调用 ratings 服务。
  2. v2 版本会调用 ratings 服务,并使用 1 到 5 个黑色星形图标来显示评分信息。
  3. v3 版本会调用 ratings 服务,并使用 1 到 5 个红色星形图标来显示评分信息。

访问效果如下:


 
技术分享图片
访问效果

由于 Bookinfo 示例部署了三个版本的 reviews 微服务,当我们多次访问应用程序时,可以看到有时输出包含星级评分,有时又没有。

智能路由

可以通过路由规则对流量进行细粒度的控制。

1. 自定义路由

首先将所有流量导入 v1 版本的 reviews

使用如下配置,并提交给 k8s 。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
  - reviews
  http:
  - route:
    - destination:
        host: reviews
        subset: v1

稍等几秒钟就可以看到变化:


 
技术分享图片
提交配置后的访问效果

可以看到现在所有流量都走 v1 版 review。

根据 header 内容分发流量

istio 可以基于内容分发流量,在这里我们让普通用户全部访问 v1 版,而特殊用户(jason)访问 v2 版。
使用如下配置,并提交给 k8s。

apiVersion: networking.istio.io/v1alpha3
kind: VirtualService
metadata:
  name: reviews
spec:
  hosts:
    - reviews
  http:
  - match:
    - headers:
        end-user:
          exact: jason
    route:
    - destination:
        host: reviews
        subset: v2
  - route:
    - destination:
        host: reviews
        subset: v1

可以看到普通用户仍然访问 v1 版 review。


 
技术分享图片
普通用户仍然访问 v1 版 review

而以 jason 身份登录后会访问 v2 版 review(黑色五角星)。


 
技术分享图片
jason 访问 v2 版 review

除此以外 istio 可以在服务之间注入延迟、断开等故障。也可以做到按比例迁移等需求。

监控

在 Istio 中,可以让 Mixer 自动为所有的网格内流量生成和报告新的指标以及新的日志流。下面以 book-info 应用为例,展示分布式追踪。

Prometheus

用作指标采集与查询。


 
技术分享图片
Prometheus 指标查询
 
技术分享图片
Prometheus 指标采集 job

分布式追踪

虽然 Istio 代理能够自动发送 Span 信息,但还是需要一些辅助手段来把整个跟踪过程统一起来。应用程序应该自行传播跟踪相关的 HTTP Header,这样在代理发送 Span 信息的时候,才能正确的把同一个跟踪过程统一起来。

 
技术分享图片
productpage 服务访问总览
 
技术分享图片
调用链追踪
 
技术分享图片
服务拓扑图

grafana

使用 grafana 对 istio 本身和服务网格进行监控。

 
技术分享图片
服务大盘
 
技术分享图片
client workload
 
技术分享图片


作者:RuiWang14
链接:https://www.jianshu.com/p/bed143a1c886
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

istio 简介

原文:https://www.cnblogs.com/cheyunhua/p/11981692.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!