Service Mesh 介绍
它是一个用于处理服务和服务之间通信的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通信实现了微服务所需要的基本功能:例 如服务发现,负载均衡监控,流量管理,访问控制等。在实践中,服务网络通常实现为一组和应用程序部署在一起的轻量级的网络代理,但对应用程序来说是透明的。
Servcie Mesh的架构
这种架构的优势:
ServiceA 相当于一个微服务,Sidecar是这个微服务的网络代理。ServiceA与外部的所有通信都由Sidercar来负责, Sidecar与ServiceA 相互独立,ServiceA感知不到Sidecar的存在,它们相当于是两个独立的容器,又在同一个Pod之中。
Istio的引入:
Istio 是ServiceMesh的产品化落地,是目前最受欢迎的服务网络,功能丰富,成熟度高。
istio的主要功能:
连接 Connect
安全 Secure
控制 Control
观察 Observe
istio与kubernetes的关系
k8s: 是部署运维,包括:应用部署,弹性伸缩,资源共享,资源隔离
istio: 是服务治理,包括:流量管制,熔断限流,动态路由,链路追踪
两者是一种互补关系。
istio的架构
数据层面:(相当于k8s的node节点)由一组代理级成,代理微服务所有的网络通信,并接收和实施来自mixer的策略。
Proxy: 负责高效转发与策略实现。
控制层面: (相当于k8s的master节点)管理和代理来的路由流星。此外通过mixer实现策略与收集来自代理的数据。
Mixer: 适配组件,数据层面与控制层面通过它实现交互,为proxy提供策略和数据上报。
Pilot: 策略配置组件,为proxy提供服务发现,智能路由,错误处理等
Citadel: 安全组件,提供证书生成下发,加密通信,访问控制。
Galley: 配置管理,验证,分发。
Istio 基本概念
Istio有4个配置资源:
• VirtualService:实现服务请求路由规则的功能,相当地k8s中的service.
• DestinationRule:实现目标服务的负载均衡、服务发现、故障处理和故障注入的功能,相当于ingress.
• Gateway:让服务网格内的服务暴露出去。
• ServiceEntry :让服务网格内的服务可以访问外部
istio的安装
[root@master ~]# mkdir istio [root@master ~]# cd istio/ #下载istio的版本 [root@master istio]# wget https://github.com/istio/istio/releases/download/1.4.2/istio-1.4.2-linux.tar.gz [root@master istio]# ls istio-1.4.2-linux.tar.gz [root@master istio]# [root@master istio]# tar -zxvf istio-1.4.2-linux.tar.gz [root@master istio]# ls istio-1.4.2 bin install LICENSE manifest.yaml README.md samples tools [root@master istio]# cd istio-1.4.2/ [root@master istio-1.4.2]# ls bin/ #把istio的cli二进制文件拷贝到环境变量下 istioctl [root@master istio-1.4.2]# cp bin/istioctl /usr/bin/ [root@master istio-1.4.2]# #查看istio当前支持安装模式 [root@master istio-1.4.2]# istioctl profile list Istio configuration profiles: default #默认安装 demo #完全安装 minimal #最小安装 remote sds [root@master istio-1.4.2]# [root@master istio-1.4.2]# istioctl manifest apply --set profile=demo