Service Mesh 介绍
它是一个用于处理服务和服务之间通讯的基础设施层,它负责为构建复杂的云原生应用传递可靠的网络请求,并为服务通讯实现了微服务所须要的基本功能:例 如服务发现,负载均衡监控,流量管理,访问控制等。在实践中,服务网络一般实现为一组和应用程序部署在一块儿的轻量级的网络代理,但对应用程序来讲是透明的。node
这种架构的优点:linux
ServiceA 至关于一个微服务,Sidecar是这个微服务的网络代理。ServiceA与外部的全部通讯都由Sidercar来负责, Sidecar与ServiceA 相互独立,ServiceA感知不到Sidecar的存在,它们至关因而两个独立的容器,又在同一个Pod之中。git
Istio 是ServiceMesh的产品化落地,是目前最受欢迎的服务网络,功能丰富,成熟度高。github
链接 Connect
安全 Secure
控制 Control
观察 Observe
安全
k8s: 是部署运维,包括:应用部署,弹性伸缩,资源共享,资源隔离
istio: 是服务治理,包括:流量管制,熔断限流,动态路由,链路追踪
二者是一种互补关系。bash
数据层面:(至关于k8s的node节点)由一组代理级成,代理微服务全部的网络通讯,并接收和实施来自mixer的策略。
Proxy: 负责高效转发与策略实现。
控制层面: (至关于k8s的master节点)管理和代理来的路由流星。此外经过mixer实现策略与收集来自代理的数据。
Mixer: 适配组件,数据层面与控制层面经过它实现交互,为proxy提供策略和数据上报。
Pilot: 策略配置组件,为proxy提供服务发现,智能路由,错误处理等
Citadel: 安全组件,提供证书生成下发,加密通讯,访问控制。
Galley: 配置管理,验证,分发。网络
Istio有4个配置资源:
• VirtualService:实现服务请求路由规则的功能,至关地k8s中的service.
• DestinationRule:实现目标服务的负载均衡、服务发现、故障处理和故障注入的功能,至关于ingress.
• Gateway:让服务网格内的服务暴露出去。
• ServiceEntry :让服务网格内的服务能够访问外部架构
[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