每天进步一点点

2020-05-17【Istio基本事儿】

2020-05-17  本文已影响0人  桢桢claire
郁金香花海

今日鸡汤:

勒庞在《乌合之众》中写道:
”但凡能够成就大业的领袖人物,他重要的品质不是博学多识,而是必须具备强大而持久的意志力,这是一种极为罕见,极为强大的品质,它足以征服一切。“

愿你也拥有这种意志力。

今天的笔记来自于《云原生服务网格Istio》。

Istio是什么?
Istio 是一个(与Kubernetes紧密结合的)(适用于云原生场景的)(Service Mesh形态的)(用于服务治理的开放平台)。

服务治理的形态演进?
第1种:在应用程序中包含治理逻辑。
当服务被拆分为一个个微服务后,业务代码与治理逻辑耦合严重。

第2种:治理逻辑独立的代码。
将治理的公共逻辑抽出来成为一个公共库,让所有微服务都使用这个公共库,即SDK,非常典型的是Spring Cloud。虽然在一定程度上解耦了治理逻辑和业务逻辑,但业务代码和SDK还要一同编译,于是要求语言绑定(业务代码和SDK要用同一种语言)。

第3种:治理逻辑独立的进程。
Sidecar模式,即把治理逻辑彻底从用户业务代码中剥离出来,两者都以独立进程存在,代码运行无耦合,因此与语言无关,升级也独立。

服务网格的特点?
服务网格有下面几个特点:

  1. 基础设施。
    服务网格是一种处理服务间通信的基础设施层。
  2. 云原生。
    服务网格尤其适用于在云原生场景下帮助应用程序在复杂的服务拓扑间可靠的传递请求。
  3. 对应用透明。
    应用感知不到代理的存在。

Istio的工作机制?
Istio包括控制面和数据面。
控制面包括Pilot、Mixer、Citadel等服务组件;
数据面由伴随每个应用程序部署的代理程序Envoy组成;
服务调用双方的Envoy代理拦截流量,并根据管理面的相关配置执行相应的治理动作。

Istio的工作机制

具体的流程如下:
1) 在创建应用程序时自动注入sidecar代理。(Kube-apiserver调用管理面组件Sidecar-Injector服务,自动修改应用程序描述信息并注入Sidecar。在真正创建Pod时,在创建业务容器的同时在Pod中创建Sidecar容器。)
2)Pod初始化时设置iptables规则,基于配置的iptables规则拦截业务容器的Inbound流量和Outbound流量到Sidecar上。
3)服务发起方的Envoy调用Pilot的服务发现接口发现接口获取目标服务的实例列表,为访问做准备。
4)服务发起方的Envoy根据配置的负载均衡策略选择服务实例,并连接对应的实例地址。
5)Envoy从Pilot中获取配置的流量规则,拦截到Inbound和Outbound流量时执行治理逻辑。
6)在服务间访问时通过双方的Envoy进行双向认证和通道加密,并基于服务的身份进行授权管理。
7)服务间通信时,通信双方的Envoy都会连接Mixer上报数据,并通过Mixer将数据转发给对应的监控后端。
8)通过Mixer连接后端服务来控制服务间的访问,判断放行还是拒绝。
9)网格入口有一个Envoy扮演入口网关的角色。

Istio-pilot有什么用?
Istio-pilot是Istio的控制中枢Pilot服务。主要有两个功能:
1)服务发现:Pilot直接从运行平台提取数据并将其构造和转换为Istio的服务发现模型。
2)向数据面下发规则:将各种规则转换为Envoy可识别的格式,通过xDS协议发送给Envoy,指导Envoy完成动作。

Istio-telemetry和Istio-policy有什么用?
Istio部署了两个Mixer服务组件,其中Istio-telemetry用于收集遥测数据,Istio-policy负责执行策略。
在服务交互时,Envoy都会对Mixer进行一次调用,这是一次实时管理。

Istio-citadel有什么用?
Istio-citadel提供了自动生成、分发、轮换与撤销密钥和证书功能。它监听Kube-apiserver,以secret形式为每个服务都生成证书密钥,并在Pod创建时挂载到Pod上,代理容器使用这些文件做服务身份认证,进而代理两端服务实现双向TLS认证、通道加密、访问授权等安全功能。

Istio-sidecar-injector有什么用?
Istio-sidecar-injector负责在Pod创建时自动注入Sidecar容器。

Istio-ingressgateway有什么用?
从网格外访问网格内的服务就是通过Ingress gateway进行,是一个Loadbalancer类型的Service,开放一组端口供外部访问。

上一篇下一篇

猜你喜欢

热点阅读