• istio 简介


    最近接触到了 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
    来源:简书
    著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
  • 相关阅读:
    oracle用户被锁
    Docker入门
    物化视图
    MySQL报错:Packets larger than max_allowed_packet are not all
    ORA-01555 快照过旧
    mysql授予权限
    CentOS7.4安装部署KVM虚拟机
    前端面试题收藏
    CoffeeScript 学习笔记
    spring学习笔记(四)
  • 原文地址:https://www.cnblogs.com/cheyunhua/p/11981692.html
Copyright © 2020-2023  润新知