热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

十五分钟过下ISTIO

Istio是一个用来连接、管理和保护微服务的开放平台。Istio提供一种简单的方式来为已部署的服务建
官网本身有详细的说明,这里简述,当快速入门

目录

什么是ISTIO

Istio 是一个用来连接、管理和保护微服务的开放平台。

Istio 提供一种简单的方式来为已部署的服务建立网络,该网络具有负载均衡、服务间认证、监控等功能,而不需要对服务的代码做任何改动。想要让服务支持 Istio,只需要在您的环境中部署一个特殊的 sidecar,使用 Istio 控制平面功能配置和管理代理,拦截微服务之间的所有网络通信。

  • HTTP、gRPC、WebSocket 和 TCP 流量的自动负载均衡。
  • 通过丰富的路由规则、重试、故障转移和故障注入,可以对流量行为进行细粒度控制。
  • 可插入的策略层和配置 API,支持访问控制、速率限制和配额。
  • 对出入集群入口和出口中所有流量的自动度量指标、日志记录和跟踪。
  • 通过强大的基于身份的验证和授权,在集群中实现安全的服务间通信。

ISTIO有什么用

Istio 提供了一个完整的解决方案,通过为整个服务网格提供行为洞察和操作控制来满足微服务应用程序的多样化需求。它在服务网络中统一提供了许多关键功能:

  • 流量管理。控制服务之间的流量和API调用的流向,使得调用更可靠,并使网络在恶劣情况下更加健壮。
  • 服务身份和安全。为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转。
  • 策略执行。将组织策略应用于服务之间的互动,确保访问策略得以执行,资源在消费者之间良好分配。可以通过通过配置网格而不是修改应用程序代码来完成策略的更改。
  • 遥测:了解服务之间的依赖关系,以及它们之间流量的本质和流向,从而提供快速识别问题的能力。

架构

Istio 服务网格逻辑上分为数据平面和控制平面。

  • 数据平面 由一组以 sidecar 方式部署的智能代理(Envoy)组成。这些代理可以调节和控制微服务及 Mixer 之间所有的网络通信。
  • 控制平面负责管理和配置代理来路由流量。此外控制平面配置 Mixer 以实施策略和收集遥测数据。

    下图显示了构成每个面板的不同组件:

    十五分钟过下ISTIO

Envoy

  • 动态服务发现
  • 负载均衡
  • TLS 终止
  • HTTP/2 & gRPC 代理
  • 熔断器
  • 健康检查、基于百分比流量拆分的灰度发布
  • 故障注入
  • 丰富的度量指标
    Envoy 被部署为 sidecar,和对应服务在同一个 Kubernetes pod 中。这允许 Istio 将大量关于流量行为的信号作为属性提取出来,而这些属性又可以在 Mixer 中用于执行策略决策,并发送给监控系统,以提供整个网格行为的信息。

Mixer

Mixer 是一个独立于平台的组件,负责在服务网格上执行访问控制和使用策略,并从 Envoy 代理和其他服务收集遥测数据。代理提取请求级属性,发送到 Mixer 进行评估。

Pilot

Pilot 为 Envoy sidecar 提供服务发现功能,为智能路由(例如 A/B 测试、金丝雀部署等)和弹性(超时、重试、熔断器等)提供流量管理功能。它将控制流量行为的高级路由规则转换为特定于 Envoy 的配置,并在运行时将它们传播到 sidecar。

Citadel

Citadel 通过内置身份和凭证管理可以提供强大的服务间和最终用户身份验证。可用于升级服务网格中未加密的流量,并为运维人员提供基于服务标识而不是网络控制的强制执行策略的能力。从 0.5 版本开始,Istio 支持基于角色的访问控制,以控制谁可以访问您的服务

基于kubernetes的安装

下载和准备安装

curl -L https://git.io/getLatestIstio | sh -
mv    istio-0.8.0  /usr/local/istio
echo 'PATH=$PATH:/usr/local/istio/bin:' >>  /etc/profile

安装 Istio 的核心部分

kubectl apply  -f  install/kubernetes/istio.yaml

确认安装

查看启动的服务

$ kubectl get svc -n istio-system

十五分钟过下ISTIO

查看pod是否都启动成功

$ kubectl get pods -n istio-system

从运行的组件理解ISTIO

grafana

Grafana支持多种不同的时序数据库数据源,Grafana对每种数据源提供不同的查询方法,而且能很好的支持每种数据源的特性。

istio-citadel

实现istio的Citadel功能的组件

istio-egressgateway

控制内部访问外部链接的代理,如果这里没设置规则,Envoy将因为不能识别访问规则而抛弃访问请求。

istio-ingressgateway

控制外部访问内部数据的策略,只有配置后外部(kubernetes集群外)业务才能访问集群内业务。

istio-pilot

ISTIO的pilot组件

istio-policy

ISTIO的策略控制组件

istio-sidecar-injector

提供自动注入功能,这样yaml文件就不需要再手动打补丁注入

istio-telemetry

ISTIO 实现遥测数据的组件

prometheus

替代heapster的一个监控数据收集工具

servicegraph

Istio网格中的服务生成一个图。在这个task中,你将安装Servicegraph 插件并使用基于web的界面来查看服务网格的服务图。

十五分钟过下ISTIO

tracing,zipkin

服务轨迹跟踪,同时可以记录到业务的访问量等

测试下:Bookinfo 应用

Bookinfo 应用分为四个单独的微服务:

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

reviews 微服务有 3 个版本:

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

十五分钟过下ISTIO

安装bookinfo

安装bookinfo应用,由于默认启动了 istio-sidecar-injector ,所以不需要手动注入

$  kubectl apply -f /usr/local/istio/samples/bookinfo/kube/bookinfo.yaml

添加一个Ingress gateway 应用,以便外部可以访问测试

$ kubectl apply -f   /usr/local/istio/samples/bookinfo/kube/bookinfo-gateway.yaml

确认所有的服务和 Pod 都已经正确的定义和启动:

$ kubectl get services
$ kubectl get pods
确认都是处于runing状态

十五分钟过下ISTIO

  • 测试下部署是否成功
curl   curl -o /dev/null -s -w "%{http_code}\n"   http://172.254.48.40:9080/productpage

十五分钟过下ISTIO

可以看到有三个版本,一个没等级信息,所有没font(v1),一个颜色是红色(v2),一个颜色是黑色(v3)

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 我们


推荐阅读
  • 了解_Istio是啥?一文带你彻底了解!
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Istio是啥?一文带你彻底了解!相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 如果程序使用Go语言编写并涉及单向或双向TLS认证,可能会遭受CPU拒绝服务攻击(DoS)。本文深入分析了CVE-2018-16875漏洞,探讨其成因、影响及防范措施,为开发者提供全面的安全指导。 ... [详细]
  • JUC并发编程——线程的基本方法使用
    目录一、线程名称设置和获取二、线程的sleep()三、线程的interrupt四、join()五、yield()六、wait(),notify(),notifyAll( ... [详细]
  • 微服务之总体架构篇
    一、单体架构存在的问题缺点:1、难以维护:当单体应用业务不断迭代后代码量非常臃肿,模整个项目非常复杂,每次更改代码都可能带来新的bug;2、部署项目麻烦:庞大之后项目部署效率 ... [详细]
  • 本文探讨了在Windows系统中运行Apache服务器时频繁出现崩溃的问题,并提供了多种可能的解决方案和建议。错误日志显示多个子进程因达到最大请求限制而退出。 ... [详细]
  • 秒建一个后台管理系统?用这5个开源免费的Java项目就够了
    秒建一个后台管理系统?用这5个开源免费的Java项目就够了 ... [详细]
  • Juval Löwy主张,每个类都应被视为服务,这并非是为了让服务无处不在,而是因为微服务是经过深思熟虑后系统分解的自然结果。在他的设计和构建的系统中,这种理念有助于提高模块化、可维护性和扩展性。通过将每个类视为独立的服务,系统能够更好地应对复杂性,实现更灵活的部署和更高的性能。 ... [详细]
  • 服务器部署中的安全策略实践与优化
    服务器部署中的安全策略实践与优化 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 基于Dubbo与Zipkin的微服务调用链路监控解决方案
    本文提出了一种基于Dubbo与Zipkin的微服务调用链路监控解决方案。通过抽象配置层,支持HTTP和Kafka两种数据上报方式,实现了灵活且高效的调用链路追踪。该方案不仅提升了系统的可维护性和扩展性,还为故障排查提供了强大的支持。 ... [详细]
  • 本文探讨了使用Python进行微服务架构设计的合理性和适用性。首先,介绍了微服务的基本概念及其在现代软件开发中的重要性。接着,通过具体的业务场景,详细分析了Python在微服务架构设计中的优势和挑战。文章还讨论了在实际应用中可能遇到的问题,并提出了相应的解决方案。希望本文能够为从事Python微服务开发的技术人员提供有价值的参考和指导。 ... [详细]
  • 在这分布式系统架构盛行的时代,很多互联网大佬公司开源出自己的分布式RPC系统框架,例如:阿里的dubbo,谷歌的gRPC,apache的Thrift。而在我们公司一直都在推荐使用d ... [详细]
  • 5分钟学会 gRPC
    5分钟学会gRPC-介绍我猜测大部分长期使用Java的开发者应该较少会接触gRPC,毕竟在Java圈子里大部分使用的还是DubboSpringClound这两类服务框架。我也是 ... [详细]
  • [翻译]微服务设计模式5. 服务发现服务端服务发现
    服务之间需要互相调用,在单体架构中,服务之间的互相调用直接通过编程语言层面的方法调用就搞定了。在传统的分布式应用的部署中,服务地 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
author-avatar
柔柔的爱2502880187
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有