istio1.5安装-较以前版本有重大改进

istio是什么?

istio是一个用来链接、管理和保护微服务的开源的服务网格,服务网格是用于描述构成应用程序的微服务网络以及应用之间的交互,随着规模和复杂性的增加,服务网格愈来愈难以理解和管理,它的功能包括服务发现、负载均衡、故障恢复、指标和监控以及更加复杂的运维工做,例如 A/B 测试、金丝雀发布、限流、访问控制和端到端身份验证等,istio解决了开发和运维人员从部署单个应用程序向分布式微服务架构过渡时所面临的挑战,Istio做为微服务网格中的佼佼者,它提供了洞察和操做控制微服务网格的能力,提供完整的解决方案以知足微服务应用程序的各类要求,从较高的层面来讲,Istio 有助于下降这些部署的复杂性,并减轻开发团队的压力,它是一个彻底开源的服务网格,做为透明的一层接入到现有的分布式应用程序里,它也是一个平台,拥有能够集成任何日志、遥测和策略系统的 API 接口,Istio 多样化的特性使你们可以成功且高效地运行分布式微服务架构,并提供保护、链接和监控微服务的统一方法。istio目前仅支持在Kubernetes上的服务部署,但将来版本中将支持其余环境。docker

1、istio1.5较以前版本的重大更新

istiod 介绍

经过“拥抱单体”升级了 istio,将控制平面整合为一个新的二进制文件——istiod,极大地简化了安装、运行和升级 istio 的流程,更少的组件让运维人员的调试和理解也变得更简单,对于网格用户,istiod 不会改变他们的任何体验,全部 API 和运行时特性均与之前的组件一致。后端

新的可扩展性模型

Istio一直都是可扩展性最好的服务网格,其 Mixer 插件容许自定义策略和遥测,而 Envoy 扩展则容许数据平面自定义。在Istio1.5中,咱们发布了一个新模型,该模型使用WebAssembly(Wasm)将Istio的可扩展性模型与Envoy统一。Wasm将使开发人员可以安全地分发和执行 Envoy 代理中的代码,以便与遥测系统、策略系统、路由控制甚至是消息体转换(transformthe body of a message)进行集成,它将更加灵活和高效,再也不须要单独运行 Mixer 组件(这也简化了部署)。安全

更简单

使用istioctl的Istio命令行安装是安装的测试版,这适用于大多数用户,经过 Operator管理安装的Istio仍处于Alpha状态,关于istioctl,它有十几项改进,能够分析新项、更好的验证规则、更好的与CI系统集成,如今,它是了解正在运行 Istio 系统的状态、确保配置安全更改的必要工具。咱们对 Istio 安全性进行了许多加强,使其更易于使用,经过自动 mTLS 的 beat 版 launch,如今配置mTLS 很是简单, 经过 Istio 1.4 中受权策略的beta 版 launch,咱们移除了间接访问,并将其合并到单个 CRD,使得访问控制也获得了简化。网络

更好的可观察性

Telemetry v2 如今会报告原生 TCP 链接(除了HTTP)的度量标准,而且经过在遥测和日志中添加响应状态代码来加强了对 gRPC 工做负载的支持,如今默认使用 Telemetry v2。新的遥测系统将等待时间缩短了一半,90% 的等待时间从 7 毫秒 下降至3.3 毫秒。不只如此,移除 Mixer 还使总的 CPU 消耗减小了 50%(0.55 vCPU,1000 个请求/每秒)。架构

2、istio控制面的核心组件

1.Pilot

Pilot为Envoy sidecar提供服务发现、用于智能路由的流量管理功能(例如,A/B 测试、金丝雀发布等)以及弹性伸缩功能(超时、重试、熔断器等),Pilot将控制流量行为的高级路由规则转换为特定于环境的配置,并在运行时将它们传播到sidecar,Pilot 将特定于平台的服务发现机制抽象出来,并将它们合成为任何符合EnvoyAPI的sidecar均可以使用的标准格式。app

2.Galley

Galley是Istio的配置验证、提取、处理和分发组件,为更好的解耦职责,它在lstio 1.1 后由仅负责配置验证升级成了控制面的配置管理中心,能够对接不一样注册中心,用于为服务网格提供配置输入能力,它负责将其他的 Istio 组件与从底层平台(例如 Kubernetes)获取用户配置的细节隔离开来。负载均衡

3.Injector

在 K8s 体系里负责数据面的初始化相关工做,其中 lstio 的核心特性之一 Sidecar 自动注入正是依赖该组件;运维

4.Mixer

是 ilstio 里负责提供策略控制和遥测收集的组件,内部包含两个子组件 —— Telemetry 和 Policy,其中 Telemetry 负责监控相关的采集信息的数据聚合以用于对接各类监控后端,而Policy 负责在服务相互调用过程当中对请求进行策略检查,例如鉴权等curl

5.Citadel

负责服务网格里安全相关功能,为服务和用户提供认证和鉴权、管理凭据和 RBAC 等相关能力;服务网格控制面各个组件被定义得清楚了然,设计之初就已经考虑到各类组件职责解耦、扩展性、安全性等,架构上看起来也很是清晰优雅。分布式

3、istio架构图

istio1.5安装-较以前版本有重大改进

4、istio为何回归单体?

简化运维和开发人员的维护成本,以前的Istio按功能整理成以下表格
istio1.5安装-较以前版本有重大改进

回归单体以后按功能整理成表格以下
istio1.5安装-较以前版本有重大改进

通过对比能够看到,Istiod是将原有的的其它组件通通塞入了pilot,而架构调整后的新pilot,即Istiod肩负了相比pilot更多的职责,单个二进制文件在部署方式上变得更加简单。

5、搭建istio的前提条件

在正式安装istio以前,请看下面的前提条件

1.在安装istio以前,须要有一个kubernetes集群

istio1.5已经在Kubernetes版本 1.14, 1.15, 1.16 中测试过。

假如没有kubernetes集群,可按以下连接参考安装:

http://mp.weixin.qq.com/s?__biz=MzU0NjEwMTg4Mg==&mid=2247483938&idx=1&sn=ee88518233ef902651e39b9e6a322c9d&chksm=fb638d37cc1404214209da89028b11cffe35a4d062dfaff51d7b66148c0aed140f14f4851471&token=65296373&lang=zh_CN#rd

2.检查pod和service的要求

官方的一个前提条件,此处理解便可,不须要作任何操做,做为 Istio 服务网格中的一部分,Kubernetes集群中的Pod和Service必须知足如下要求:

命名的服务端口:

Service 的端口必须命名。端口名键值对必须按如下格式:name: <protocol>[-<suffix>]。

Service 关联:

每一个 Pod 必须至少属于一个Kubernetes Service,无论这个Pod是否对外暴露端口。若是一个Pod同时属于多个Kubernetes Service,那么这些Service不能同时在一个端口号上使用不一样的协议(好比:HTTP 和 TCP)。带有app和version标签(label)的Deployment:建议给Deployment加上app和version标签,给使用 Kubernetes Deployment部署的Pod部署配置中增长这些标签,能够给 Istio 收集的指标和遥测信息中增长上下文信息。
app标签:每一个部署配置应该有一个不一样的app标签而且该标签的值应该有必定意义。app label用于在分布式追踪中添加上下文信息。

version标签:这个标签用于在特定方式部署的应用中表示版本。

应用UID:

确保你的 Pod 不会以用户 ID(UID)为 1337 的用户运行应用。

NET_ADMIN功能:

若是你的集群执行 Pod 安全策略,必须给 Pod 配置NET_ADMIN功能。若是你使用Istio CNI 插件能够不配置。

6、下载 Istio1.5-在k8s集群的master节点操做

1.下载 Istio

下载内容将包含:安装文件、示例和istioctl命令行工具,访问Istio release页面下载与操做系统对应的安装文件,在macOS或Linux 系统中,也能够经过如下命令下载最新版本的 Istio:

curl -L https://istio.io/downloadIstio | sh -

2.切换到Istio包所在目录下

cd istio-1.5.1

3.安装目录包含以下内容:

install/kubernetes目录下,有Kubernetes相关的YAML安装文件

samples/目录下,有示例应用程序

bin/目录下,包含istioctl的客户端文件,istioctl工具用于手动注入 Envoy sidecar 代理。

4.将istioctl客户端路径增长到path环境变量中,macOS或Linux系统的增长方式以下:

export PATH=$PWD/bin:$PATH

7、安装istio-在k8s集群的master节点操做

若是访问不了docker hub,能够手动把镜像上传到kubernetes机器的各个节点上,或者把镜像传到harbor私有镜像仓库,而后

docker load-i istio_pilot_1_5_1.tar.gz

docker load-i istio_pilot_1_5_1.tar.gz

docker load-i istio_proxyv2_1_5_1.tar.gz

解压镜像便可

镜像所在的百度网盘连接以下:

连接:https://pan.baidu.com/s/1U9osuypeUx6ILjYs3K-04g

提取码:a3sm

1.使用istioctl安装istio,官方建议用此方法,此方法安装可用于生产环境

cd /root/istio-1.5.1

使用默认的配置文件安装istio,最简单的安装是使用istio默认的配置文件

istioctl manifest apply

查看是否安装成功

kubectl get pods -n istio-system

显示以下,说明istio安装成功

istio1.5安装-较以前版本有重大改进

istio1.5安装-较以前版本有重大改进

想要了解更多istio的更多生产案例,获取k8s、devops免费视频,可按以下方式进入技术交流群获取哈~~
istio1.5安装-较以前版本有重大改进

istio1.5安装-较以前版本有重大改进

相关文章
相关标签/搜索