Istio:Google、IBM 和 Lyft 联合开源的微服务 Service Mesh 框架

Service Mesh 的实现,Google 的 Istio Istio 是一个开源服务网格,它透明地分层到现有的分布式应用程序上。Istio 强大的特性提供了一种统一和更有效的方式来保护、连接和监视服务。Istio 是实现负载平衡、服务到服务身份验证和监视的路径——只需要很少或不需要更改服务代码。使用 TLS 加密、强身份认证和授权的集群内服务到服务的安全通信自动负载均衡的 HTTP, gRPC, WebSocket,和 TCP 流量通过丰富的路由规则、重试、故障转移和故障注入对流量行为进行细粒度控制。 阅读详情

Istio是Google、IBM和Lyft联合开源的微服务Service Mesh框架,旨在解决大量微服务的发现、连接、管理、监控以及安全等问题。

Istio的主要特性包括:

  • HTTP、gRPC和TCP网络流量的自动负载均衡
  • 丰富的路由规则,细粒度的网络流量行为控制
  • 流量加密、服务间认证,以及强身份声明
  • 全范围(Fleet-wide)策略执行
  • 深度遥测和报告

原理

Istio从逻辑上可以分为数据平面和控制平面:

  • 数据平面主要由一系列的智能代理(Envoy)组成,管理微服务之间的网络通信
  • 控制平面负责管理和配置这些智能代理,并动态执行策略

Istio架构可以如下图所示



主要由以下组件构成

  • Envoy:Lyft开源的高性能代理总线,支持动态服务发现、负载均衡、TLS终止、HTTP/2和gPRC代理、健康检查、性能测量等功能。Envoy以sidecar的方式部署在相关的服务的Pod中。
  • Mixer:负责访问控制、执行策略并从Envoy代理中收集遥测数据。Mixer支持灵活的插件模型,方便扩展
  • Pilot:用户和Istio的接口,验证用户提供的配置和路由策略并发送给Istio组件,管理Envoy示例的生命周期
  • Istio-Auth:提供服务间和终端用户的认证机制

安装

Istio目前仅支持Kubernetes,在部署Istio之前需要先部署好Kubernetes集群并配置好kubectl客户端。

下载Istio

curl -L https://git.io/getIstio | sh -
cd istio-0.1.6/
cp bin/istioctl /usr/local/bin/

创建RBAC角色和绑定

$ kubectl apply -f install/kubernetes/istio-rbac-beta.yaml
clusterrole "istio-pilot" created
clusterrole "istio-ca" created
clusterrole "istio-sidecar" created
rolebinding "istio-pilot-admin-role-binding" created
rolebinding "istio-ca-role-binding" created
rolebinding "istio-ingress-admin-role-binding" created
rolebinding "istio-sidecar-role-binding" created

如果碰到下面的错误

Error from server (Forbidden): error when creating "install/kubernetes/istio-rbac-beta.yaml": clusterroles.rbac.authorization.k8s.io "istio-pilot" is forbidden: attempt to grant extra privileges: [{[*] [istio.io] [istioconfigs] [] []} {[*] [istio.io] [istioconfigs.istio.io] [] []} {[*] [extensions] [thirdpartyresources] [] []} {[*] [extensions] [thirdpartyresources.extensions] [] []} {[*] [extensions] [ingresses] [] []} {[*] [] [configmaps] [] []} {[*] [] [endpoints] [] []} {[*] [] [pods] [] []} {[*] [] [services] [] []}] user=&{user@example.org [...]

需要给用户授予admin权限

kubectl create clusterrolebinding myname-cluster-admin-binding --clusterrole=cluster-admin --user=myname@example.org

部署Istio核心服务

两种方式(选择其一执行)

  • 禁止Auth:kubectl apply -f install/kubernetes/istio.yaml
  • 启用Auth:kubectl apply -f install/kubernetes/istio-auth.yaml

部署Prometheus、Grafana和Zipkin插件

kubectl apply -f install/kubernetes/addons/prometheus.yaml
kubectl apply -f install/kubernetes/addons/grafana.yaml
kubectl apply -f install/kubernetes/addons/servicegraph.yaml
kubectl apply -f install/kubernetes/addons/zipkin.yaml

等一会所有Pod启动后,可以通过NodePort或负载均衡服务的外网IP来访问这些服务。比如通过NodePort方式,先查询服务的NodePort

$ kubectl get svc grafana -o jsonpath='{.spec.ports[0].nodePort}'
32070
$ kubectl get svc servicegraph -o jsonpath='{.spec.ports[0].nodePort}'
31072
$ kubectl get svc zipkin -o jsonpath='{.spec.ports[0].nodePort}'
30032
$ kubectl get svc prometheus -o jsonpath='{.spec.ports[0].nodePort}'
30890

通过http://<kubernetes-ip>:32070/dashboard/db/istio-dashboard访问Grafana服务


通过http://<kubernetes-ip>:31072/dotviz访问ServiceGraph服务,展示服务之间调用关系图



通过http://<kubernetes-ip>:30032访问Zipkin跟踪页面



通过http://<kubernetes-ip>:30890访问Prometheus页面



部署示例应用

在部署应用时,需要通过istioctl kube-inject给Pod自动插入Envoy容器,即

kubectl create -f <(istioctl kube-inject -f <your-app-spec>.yaml)

比如Istio提供的BookInof示例:

kubectl apply -f <(istioctl kube-inject -f samples/apps/bookinfo/bookinfo.yaml)

原始应用如下图所示



istioctl kube-inject在原始应用的每个Pod中插入了一个Envoy容器


服务启动后,可以通过Ingress地址http://<ingress-address>/productpage来访问BookInfo应用

$ kubectl describe ingress
Name:            gateway
Namespace:        default
Address:        192.168.0.77
Default backend:    default-http-backend:80 (10.8.0.4:8080)
Rules:
  Host    Path    Backends
  ----    ----    --------
  *
        /productpage     productpage:9080 (<none>)
        /login         productpage:9080 (<none>)
        /logout     productpage:9080 (<none>)
Annotations:
Events:    <none>


本文来自开源书《Kubernetes指南》,欢迎关注和参与。

nacos-istio-2.0.4.RELEASE-API文档-中文版.zip 赠送jar包:nacos-istio-2.0.4.RELEASE.jar; 赠送原API文档:nacos-istio-2.0.4.RELEASE-javadoc.jar; 赠送源代码:nacos-istio-2.0.4.RELEASE-sources.jar; 赠送Maven依赖信息文件:nacos-istio-2.0.4.RELEASE.pom; 包含翻译后的API文档:nacos-istio-2.0.4.RELEASE-javadoc-API文档-中文(简体)版.zip; Maven坐标:com.pig4cloud.nacos:nacos-istio:2.0.4.RELEASE; 标签:pig4cloud、istio、nacos、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,请放心使用。 立即下载

相关推荐

GNSS - PPP软件 - GAMP 在VS2019/2022下完成调试、跑通程序(超详细!)

WIN32;_DEBUG;_CONSOLE;O_WARNINGS;ENAGLO;ENACMP;ENAGAL;ENAQZS;NFREQ=3。

qq_43381998的博客 8252

(推荐) Istio:Google、IBM 和 Lyft 联合开源的微服务框架

Istio是Google、IBM和Lyft联合开源的微服务Service Mesh框架,旨在解决大量微服务的发现、连接、管理、监控以及安全等问题。 Istio的主要特性包括: HTTP、gRPC和TCP网络流量的自动负载均衡丰富的路由规则,细粒度的网络流量行为控制流量加密、服务间认证,以及强身份声明全范围(Fleet-wide)策略执行深度遥测和报告 原理 Istio从逻辑

大树叶 技术专栏 2943

使用Xpath语法爬取豆瓣读书Top250

使用Xpath语法爬取豆瓣读书Top250 使用的软件是Spyder 网页地址:https://book.douban.com/top250?start=0 直接上代码: # -*- coding: utf-8 -*- """ Created on Thu Apr 30 18:35:17 2020 @author: ASUS """ import requests import csv fr...

weixin_43987253的博客 2082

CCF中国开源大会专访|毛晓光:“联合”是开源走向“共赢”的必由之路

一方面加深了开源社区和开源人之间的友谊,为参与者提供了一个发现志同道合者的平台,另一方面,大家还通过交流开源之路和所思所想,共同探讨了中国开源版图的发展方向和现状。随着国内互联网和信息技术的快速发展,越来越多的企业和个人开始关注并参与到开源事业中来,他们希望通过开源的方式,获得更好的技术、更稳定的产品和更高效的服务,并且能在开源社区中寻找到更广泛的合作机会,实现共赢。,包括开源平台与基础设施、开源社区与开源治理、开源项目与开源产业、开源教育与开源研究等四大板块,各类开源相关的议题,应有尽有。

开源吞噬世界。 1815

Oracle EBS财务模块(三)总账功能

(一)总账管理系统主要功能  总账管理系统(Oraclegeneralledger)是一个公司一切账务系统的核心,它好比是公司会计信息的中央处理器。总账管理系统提供了一个完整的财务管理核算及分析流程。它是所有子账户的信息存储器,因此反映了所有子账户的财务和现金活动。总账管理系统的主要作用是记录公司的财务活动,并生成财务报表和管理报表,以帮助公司内外人士进行决策。一个公司或组织的制造系统、项目管理系

苏南生的优快云博客 2万+

AI驱动全栈开发实战:基于Spec与Codex的规格驱动开发指南

1. 先搞清楚“AI重构前端全栈”到底在解决什么实际问题 最近很多人在聊“AI重构前端全栈”,听起来像是又一个营销概念。但如果你真的拆开看,它核心解决的是一个非常具体且痛苦的问题: 一个开发者,如何从零开始,系统性地、不跑偏地完成一个完整项目,并且保证代码质量和架构一致性。 传统开发流程里,产品经理出PRD,前后端开会对齐,前端画页面,后端写接口,测试再介入。这个过程沟通成本高,文档容易过时,新人上手慢。而“AI重构”的思路,是试图用一套 规范化的指令(Spec) 来驱动AI(比如Codex这类模型)生成代

weixin_30596023的博客 460

istio基本概念、架构、主要功能和原理

传统单体应用的缺点:持续部署困难,单体应用的某一个组件更新,需要重新部署整个应用,一旦部署失败,造成整个应用宕机。而微服务架构,将单体应用拆分为多个微服务,各微服务之间通过网络进行通信,解决上面的问题。业务逻辑:定义如何处理应用业务逻辑网络功能:负责服务间的通信,如超时重试,服务发现,负载均衡等但带来一个挑战:如何标准化管理各个微服务,如何保证微服务间的可靠通信,如何确保可用性。

MinutkiBegut的博客 3356

资金穿透分析

我们把准备好的银行数据导入到软件中,导入具体步骤这里不做详解,大家可以通过“清林情报分析师”公众号,查看操作视频第二节

清林情报分析师 3493

阿里联合北大开源数字人项目FantasyTalking,输出内容更加动态化~

FantasyTalking 的核心目标是从单一静态图像、音频(以及可选的文本提示)生成高保真、连贯一致的说话肖像。研究表明,现有方法在生成可动画化头像时面临多重挑战,包括难以捕捉细微的面部表情、整体身体动作以及动态背景的协调性。该项目旨在解决这些问题,通过先进的 AI 技术实现更高质量的生成。

CherryXieのblog 1610

STM32实战开发(99):基于STM32的智能交通灯控制系统设计与实现

随着城市化进程的加速和交通流量的不断增长,传统的交通灯控制系统已逐渐不能满足现代城市交通管理的需求。为了更好地提高交通效率、减少交通拥堵、降低事故发生率,智能交通灯控制系统成为了解决这一问题的重要途径。通过智能算法和自动化控制,智能交通灯控制系统能够根据实时交通流量和交通状况来自动调整红绿灯的切换,从而优化交通流和提高交通安全。STM32作为一款高性能的微控制器,具备较强的运算能力、丰富的外设接口和优良的功耗表现,非常适合用来设计和开发智能交通灯控制系统。

2201_76125393的博客 1219

Winform从入门到精通(38)——StatusStrip(史上最全)

本文介绍StatusStrip控件的详细用法,包含所有属性和事件,绝对史上最全!

qq_34059233的博客 2759

Istio 集成 Nacos 作为注册中心

springboot + nacos + istio server 配置 nacos.discovery.server-addr=192.168.27.173:8848 server.port=10016 spring.application.name=mesh-server nacos.discovery.auto-register=true nacos.discovery.register.group-name=group1 nacos.discovery.register.healthy=true

偶是一只小小鸟~ 6539

【语音分析】语音倒谱分析(变声器 男变女 女变男 童声)【含GUI Matlab源码 4247期】

语音倒谱分析(变声器 男变女 女变男 童声) 完整的代码,方可运行;可提供运行操作视频!适合小白!

订阅付费专栏Matlab(奶茶价版),可赠送奶茶价版付费专栏指定代码1份; 826

深度剖析Service Mesh服务网格新生代Istio

作者简介:敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,Cloud Native拥护者,敏捷实践者。曾在亚信、爱立信、唯品会和ppmoney任职, 现任数人云资深架构师,本文由数人云独家授权发布,欢迎加作者微信(aoxiaojian80)交流。 Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主...

karamos的专栏 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

数人云|万字解读:Service Mesh服务网格新生代--Istio

Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮的Istio!讲师简介:敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,cloud native拥护者,敏捷实践者。曾在亚信,爱立信,唯品会和ppmoney任职, 现任数人云资深架构师。以下内容

shurenyun的博客 7534

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

Service Mesh服务网格新生代--Istio

Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮的Istio! 讲师简介: 敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,cloud native拥护者,敏捷实践者。曾在亚信,爱立信,唯品会和ppmoney任职, 现任数人云资深架构师...

精进编程の博客 822

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

Istio和Service Mesh

控制平面:包括 Pilot(负责配置分发和流量管理)、Citadel(负责身份认证和密钥管理)、Galley(负责配置验证和分发)、Mixer(已弃用,其功能被整合到 Envoy 中)等组件,负责管理和配置数据平面的行为,以及收集和聚合服务间的遥测数据。总结来说,Istio 是一个功能丰富、成熟且广泛采用的 Service Mesh 实现,它通过提供一致的流量管理、安全性和可观测性能力,极大地简化了微服务架构中的网络治理工作,促进了云原生应用的高效、安全和可观察性。

易之阴阳,量子纠缠,道之一体,缘起性空 553

【转载】IBM、Google 和 Lyft 在 Istio Service Mesh 上提供微服务

5 月 24 日,IBM 和 Google 宣布共同发布 Istio,这是一项开源技术,可以为开发人员提供一种途径来无缝连接、管理和保护不同微服务网络——而且与平台、源代码或供应商无关。 Istio 是 IBM、Google 和 Lyft 联手协作的成果,是支持在微服务之间进行流量管理、访问策略实施和遥测数据聚合的一种方法。它使开发人员无需更改先前基于 IBM、Google 和 Lyft 技术开...

xiaoxiaoxiaomaolv的专栏 827

【SkyWalking从入门到精通】第08篇:Service Mesh入门——下一代微服务通信架构你了解多少

Service Mesh入门:下一代微服务通信架构解析 本文从微服务通信的痛点出发,系统介绍了Service Mesh的诞生背景和核心架构。主要内容包括: 微服务通信的挑战:传统SDK方式存在语言绑定、版本管理困难等问题 Sidecar模式:通过独立代理将通信逻辑与业务解耦,实现语言无关和统一管理 数据面与控制面分离: 数据面由Envoy等代理组成,负责实际流量处理 控制面如Istio负责策略配置下发 SkyWalking的整合:作为APM工具,SkyWalking原生支持Service Mesh环境,可无

xyghehehehe的专栏 345

万字长文|深度剖析Service Mesh服务网格新生代Istio

Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮的Istio! 今天的主角名叫 Istio,估计很多同学在此之前可能完全没有听过这个名字。请不必介意,没听过很正常,因为Istio的确是一个非常新的东西,出世也才四个月而已。 今天的内容将会分成三

优快云云计算 3455

深度剖析Service Mesh服务网格新生代 Istio

https://www.jianshu.com/p/a2cd02118ef1 Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮的Istio! 今天的主角名叫 Istio,估计很多同学在此之前可能完全没有听过这个名字。请不必介意,没听过很正常,因...

yb223731的博客 634

万字解读:Service Mesh服务网格新生代--Istio

Service Mesh新秀,初出茅庐便声势浩荡,前有Google,IBM和Lyft倾情奉献,后有业界大佬俯首膜拜,这就是今天将要介绍的主角,扛起Service Mesh大旗,掀起新一轮微服务开发浪潮的Istio! 讲师简介: 敖小剑,十五年软件开发经验,微服务专家,专注于基础架构,cloud native拥护者,敏捷实践者。曾在亚信,爱...

weixin_33989780的博客 1274
上一篇: Fluentd 配置
下一篇: Kubeflow 入门——为 Kubernetes 打造的组件化、可移植、可扩展的机器学习堆栈
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值