[TOC]
# istio的介绍
### 介绍
在介绍 istio 之前,需要知道什么是`Service Mesh`
#### Service Mesh 概念
Service Mesh 的技术根本就是————`网络代理`代理是可以嵌套的,也就是说通信的双方A、B之间,可以有很多层代理,而这些代理对于A和B来说是透明的。 这个代理机制可以带来以下这些好处:
* **拦截**:相当于是防火墙
* **统计**:统计网络中的数据信息
* **缓存**:将一些访问比较慢的网络热点数据作为缓存。CDN就是典型代表
* **分发**:也就是负载均衡功能,将流量分发到不同的后端。Nginx就是代表之一
* **跳板**:A和B之间不能直接访问,可以通过代理作为访问手段
* **注入**:既然代理可以看到流量,那么也就可以修改网络流量,向流量中加入数据
Service Mesh 就是代理的升级版,是一种**分布式微服务代理**在传统模式下,代理一般都集中在单独的服务器中,所有请求都会先通过代理,然后在转发到后端
而在 Service Mesh 中,**代理变成了分布式**,在k8s环境中,**每一个 Pod 中都运行着一个代理容器(这种模式称为 Sidecar 边车模式)**,这样的话,所有应用的流量都会被代理接管,然后将所有代理都**通过控制中心来统一管理**。
在微服务的架构中, Service Mesh 会知道整个集群的所有应用信息,并且额外添加了**热更新、诸如服务发现、降级熔断、认证授权、超时重试、日志监控等功能**。
#### istio 介绍
istio 就是Service Mesh 众多产品比较杰出的一个。 istio 包含以下组件:
##### istio-proxy(envoy)
envoy是istio中的数据层面组件,提供了动态服务发现、负载均衡、TLS , HTTP/2 及gRPC 代理、熔断器、健康检查、流量拆分、灰度发布、故障注入等功能。在istio-proxy容器中除了有Envoy ,还有一个pilot-agent的守护进程。
##### pilot
如果把数据面的envoy 也看作一种agent, 则 Pilot 服务端Master,下发指令控制客户端完成业务功能。

##### mixer
mixer 分为`istio-telemetry`和`istio-policy`
* **istio-telemetry**:是用于收集数据的组件,当两个服务之间有调用时,代理 envoy 就会上班数据给 istio-telemetry 组件
* **istio-policu**:根据配置,将请求转发到相应的Adapter中做检查,给 envoy 返回是允许访问还是拒绝。对服务之间的访问进行可扩展的控制
##### istio-citadel
istio-citadel 是istio 的核心安全组件。 citadel 会时刻监控 kube-apiserver,然后以`Secret`的形式,为每个服务都生成证书密钥,并在生成 Pod 时,挂在到 Pod 中,代理envoy通过这个证书来对服务行进身份验证,
##### istio-galley
istio-galley 负责管理配置的组件,验证配置信息的格式和内容正确性,然后将配置信息提供给`Pilot`和`mixer`使用,
##### istio-sidecar-injector
负责自动注入的组件。 在 Pod 创建时就会自动调用 istio-sidecar-injector ,向 Pod 中注入 Sidecar 容器。 这个注入动作对于用户来讲是透明的。
##### istio-ingressgateway
是Gateway网关,从外部访问内部时,就要通过这个Gateway来进行,是一种Loadbalancer 类型的Service,并开放了一组端口,
- 一、K8S的安装
- 1.1 安装环境
- 1.2 问题汇总
- 1.3 事前准备
- 1.4 安装配置负载均衡
- 1.5 安装K8S软件
- 1.6 初始化kubeadm
- 1.7 添加控制节点
- 1.8 添加计算节点
- 1.9 安装故障问题处理
- 1.10 安装管理dashboard
- 1.11 编写测试Pod
- 1.12 从外部访问集群中的Pod
- 1.13 部署metrics-server指标采集
- 二、Pod管理
- 2.1 Pod 资源需求和限制
- 2.2 Init 容器
- 2.3 Pod 健康检查(探针)和重启策略
- 2.4 Pod 生命周期(钩子Hook)
- 2.5 静态Pod
- 2.6 初始化容器(init container)
- 2.7 资源限制
- 三、资源控制器
- 3.1 Deployment
- 3.2 StatefulSet
- 3.3 DaemonSet
- 3.4 Job
- 3.5 定时任务
- 3.6 准入控制器
- 3.7 自动伸缩
- 3.8 ReplicaSet
- 四、存储
- 4.1 Secret 管理敏感信息
- 4.2 ConfigMap 存储配置
- 4.3 Volume
- 4.4 PV
- 4.5 PVC
- 4.6 StorageClass
- 4.7 暴露宿主机信息给Pod
- 五、服务Service
- 5.1 Service 资源
- 5.2 服务发现
- 5.3 服务暴露
- 5.4 Ingress 资源
- 5.5 Ingress 专题
- 5.6 traefik 2.X版本使用
- 六、认证、授权、准入控制
- 6.1 服务账户
- 6.2 LimitRange资源与准入控制器
- 6.3 ResourceQuota 资源与准入控制器
- 七、Helm
- 7.1 Helm 安装
- 八、 istio
- 8.1 istio 介绍
- 8.2 iotis 安装
- 九、calico
- 9.1 两种网络模式
- 9.2 全互联模式 与 路由反射模式
- 9.3 BGP跨网段(大型网络)
- 十、Ingress
- 10.1 安装 LoadBalancer
- 10.2 部署 ingress-nginx
- 10.3 Ingress-nginx 的使用
- 10.4 开启TCP和UDP
- 使用中的问题
- CSI Node问题
