目录:
- istio 定义
- 为什么需要istio
- istio的主要功能
- istio架构
- 安装istio
- istio之envoy
- istio之point
- istio之mixer
- istio访问外网问题
Istio定义
一个用来连接、管理和保护微服务的开放平台。
Istio提供一种简单的方式来建立已部署服务网络,具备负载均衡、服务间认证、监控等功能,而不需要改动任何服务代码。
想要为服务增加对Istio的支持,您只需要在环境中部署一个sidecar,使用Istio控制面板功能配置和管理代理,拦截微服务之间的所有网络通信。
为什么需要Istio
随着微服务出现,微服务的连接、管理和监控成为难题。Kubernetes 可以处理多个容器的工作负载,但当涉及更复杂的需求时,需要像Istio这样的微服务网格。
Istio的主要功能
流量管理(Pilot)。控制服务之间的流量和API调用的流向,使得调用更灵活可靠,并使网络在恶劣情况下更加健壮。
可观察性。通过集成zipkin等服务,快速了解服务之间的依赖关系,以及它们之间流量的本质和流向,从而提供快速识别问题的能力。
策略执行(mixer)。将组织策略应用于服务之间的互动,确保访问策略得以执行,资源在消费者之间良好分配。策略的更改是通过配置网格而不是修改应用程序代码。
服务身份和安全(Istio-auth)。为网格中的服务提供可验证身份,并提供保护服务流量的能力,使其可以在不同可信度的网络上流转。
除此之外,Istio针对可扩展性进行了设计,以满足不同的部署需要:
- 平台支持。Istio旨在可以在各种环境中运行,包括跨云、预置环境、Kubernetes、Mesos等。最初专注于Kubernetes,但很快将支持其他环境。
- 集成和定制。策略执行组件可以扩展和定制,以便与现有的ACL、日志、监控、配额、审核等解决方案集成。
Istio 架构
分为控制平面和数据平面两部分。
- 控制平面:Pilot, Mixer, Istio-Auth,分别对Istio中的服务做流量管理,策略配置,安全通信等规则配置
- 数据平面:所有pod上的Envoy,负责所有规则的执行
安装Istio
安装过程
//官网下载最新版本
$ wget https://github.com/istio/istio/releases/download/0.7.1/istio-0.7.1-linux.tar.gz
//解压,切换目录
$ tar -zxvf istio-0.7.1-linux.tar.gz
$ cd istio-0.7.1
//通过yaml文件安装Istio
$ kubectl apply -f install/kubernetes/istio.yaml
或者使用TLS认证模式安装Istio
$ kubectl apply -f install/kubernetes/istio-auth.yaml
解压文件内容
install/
:K8s
使用.yaml
文件sample/
: 简单的示例服务bin/
:istioctl
命令,记得将其路径配置到环境变量
安装成功检验
首先已经部署了这些服务:
[root@user ~]# kubectl get svc -n istio-system
NAME CLUSTER-IP EXTERNAL-IP PORT(S) AGE
istio-ingress 192.168.30.166 <pending> 80:62495/TCP,443:21986/TCP 12d
istio-mixer 192.168.30.238 <none> 9091/TCP,15004/TCP,9093/TCP,9094/TCP,9102/TCP,9125/UDP,42422/TCP 12d
istio-pilot 192.168.30.107 <none</