微服务运行在容器内;容器依靠K8S进行编排、服务发现、负载均衡等;Istio和K8S进行融合,在利用K8S的一些功能的基础上(服务注册),对K8S进行功能的扩展,追加了一些服务治理功能(熔断、限流、动态路由、调用链追踪)。

微服务与容器

为了微服务的快速部署和迭代,如今的微服务架构中,通常将微服务部署在容器内。使用容器的好处

K8S

K8S是一个基于容器技术的分布式架构方案。利用K8S,我们可以很好的对容器进行管理。

其架构如下:

K8S的最基础单位是Pod,一个Pod下可以支持许多容器,Pod中的容器共享网络地址和文件系统。

通常K8S分为两部分,一部分是MASTER,一部分是NODE。

K8S的Service和kube-proxy

K8S的Service是一个抽象概念,他包含了一组Pod(通常这组Pod是一组有相同功能的微服务,即微服务集群)和一种可以访问它们的策略。

因为service是服务的抽象,所以由kube-proxy 负责对所有service进行实现。proxy为 Service 实现了一种 VIP(虚拟 IP)的形式,在k8s内只要通过这个vip即可对service进行访问。

kube-proxy会监视Kubernetes master 相关操作,当Kubernetes master 对 Service 对象和 Endpoints 对象的进行添加和移除的时候,kube-proxy会对上述的变化做出相应的响应(参考下文)。

K8S的Service控制器和endpoint控制器

EndPoint管理器监听master的API服务器中service资源和pod资源的变化,每当master使用Service控制器对服务进行创建或删除的时候,EndPoint管理器会自动更新保存在etcd上的endpoint资源。

K8S的kube-proxy

kube-proxy是Kubernetes的核心组件,部署在每个Node节点上,它是实现Kubernetes Service的通信与负载均衡机制的重要组件; kube-proxy负责为Pod创建代理服务,从apiserver获取所有server信息(就是上面endpoint信息以及service信息),并根据server信息创建代理服务,实现server到Pod的请求路由和转发,从而实现K8s层级的虚拟转发网络。
更为详细的解释可以参考这个

Istio

Isio是基于边车模式(sidecar)以及service mesh模式(服务网格)产生的框架。他的目的是将与业务无关的服务治理功能和具体的业务功能进行解耦,并对服务治理治理功能进行统一管理。

Istio 的架构

Istio 的架构在逻辑上分为“控制面”和“数据面”。

  • “数据面“:由一组 Sidecar 构成。这些 Sidecar 可以调节和控制微服务及 Mixer 之间所有的网络通信。(数据面的组件有 Envoy(在 Istio 中,默认的 Sidecar 是 Envoy))
  • “控制面“:负责管理和配置代理路由流量。此外,控制面通过 Mixer 来实施策略和收集各个 Sidecar 的遥测数据。(控制面的组件有 Pilot、Mixer、Citadel)


每个组件的作用

  • Envoy用于调解服务网格中所有服务的入站和出站流量。所有经过 Envoy 的流量行为都会调用 Mixer。

  • Pilot 为 Sidecar 提供“服务发现”功能(发现所有的Pod)(服务注册功能由基础平台提供(如K8S)),此外,Pilot还用于对整个Istio的流量进行统一管理和配置。

  • Mixer 是一个独立于平台的组件,通过从 Sidecar 和一些其他服务处收集数据,进而在整个 Service Mesh 上控制访问和执行策略。(从envoy收集到的数据会在mixer进行统一管理,并展示给运维;Mixer分为Policy和Telemetry两个子模块。Policy用于向Envoy提供准入策略控制,黑白名单控制,速率限制等相关策略;Telemetry为Envoy提供了数据上报和日志搜集服务,以用于监控告警和日志查询)

  • Citadel 通过内置身份和凭证管理提供“服务间”和“最终用户”身份验证。

K8S和Istio

Istio能为K8S扩展熔断、限流、动态路由、调用链追踪等功能,这些是K8S所不具备的。

在Istio融合至K8S的过程中,Istio的服务发现就是从Kube-apiserver中获取Service和Endpoint,然后将其转换成Istio服务模型的Service和ServiceInstance,但是其数据面组件不再是Kube-proxy,而是在每个Pod里部署的Sidecar,也可以将其看作每个服务实例的Proxy。这样,Proxy的粒度就更细了,和服务实例的联系也更紧密了,可以做更多更细粒度的服务治理通过拦截Pod的Inbound流量和Outbound流量,并在Sidecar上解析各种应用层协议,Istio可以提供真正的应用层治理、监控和安全等能力。

微服务学习笔记 K8S、ISTIO、微服务、容器不得不说的故事相关推荐

  1. Java微服务学习笔记(一):微服务架构的概念理解

    Java微服务学习笔记 Tips:入门学习时粗略整理,仅供参考 (一):架构的基础理解 文章目录 Java微服务学习笔记 前言 一.微服务是什么? 二.常用开源微服务框架演化 1. Dubbo 2. ...

  2. java什么叫做微服务_微服务学习笔记——什么是微服务

    Martin Fowler:简而言之,微服务架构风格这种开发方法,是以开发一组小型服务的方式来开发一个独立的应用系统的.其中每个小型服务都运行在自己的进程中,并经常采用HTTP资源API这样轻量的机制 ...

  3. SpringCloud微服务---学习笔记(三)--服务异步通讯

    1 服务异步通讯 RabbitMQ高级特性 1.1 消息可靠性 消息丢失: · 发送时丢失:· 生产者发送的消息未送达exchange· 消息到达exchange后未到达queue · MQ宕机,qu ...

  4. 【Springboot】微服务学习笔记十:微服务项目整合Kafka实现文章上下架功能

    个人简介:  >

  5. 微营销四剑客-微营销学习笔记3:微营销工具简介

    中国目前总体是处在一个通货膨胀年代.微营销市场也是如此,目前出现了很多微营销工具和平台,什么微卡.微点.营销王之类,这也说明微营销时代的到来和商机,这些均是一些公司打造的微营销平台或工具,本人少使用这 ...

  6. 学习笔记:SpringCloud 微服务技术栈_实用篇①_基础知识

    若文章内容或图片失效,请留言反馈.部分素材来自网络,若不小心影响到您的利益,请联系博主删除. 前言 学习视频链接 SpringCloud + RabbitMQ + Docker + Redis + 搜 ...

  7. Sharepoin学习笔记—架构系列—Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1

    Sharepoin学习笔记-架构系列-Sharepoint服务(Services)与服务应用程序框架(Service Application Framework) 1 Sharepoint服务是Sha ...

  8. PhalAPI学习笔记 ——— 第二章接口服务请求

    PhalAPI学习笔记 --- 第二章接口服务请求 前言 接口服务请求 接口服务请求案例 自定义接口路由 开启匹配路由 配置路由规则 nginx apache 服务请求 结束语 前言 公司业务需要转学 ...

  9. Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析)

    Netty网络框架学习笔记-16(心跳(heartbeat)服务源码分析_2020.06.25) 前言: Netty 作为一个网络框架,提供了诸多功能,比如编码解码等,Netty 还提供了非常重要的一 ...

最新文章

  1. mysql lint的范围_【MySQL】MySQL数据类型
  2. 共享内存+Shellcode实现跨进程调用3环函数
  3. 聚类分析在用户行为中的实例_看完这篇,你还敢说不懂聚类分析?
  4. win7安装python3.6_Win7 64位下python3.6.5安装配置图文教程
  5. 在Leangoo里怎么修改密码?
  6. mysql创建工作经历表_国内首款 Serverless MySQL 数据库重磅发布!
  7. 转:从内部开始 认识Oracle数据库结构组件
  8. wireshark 安装失败报错,缺少kb2999226补丁的解决方案
  9. launchpad乐器_PreSonus 发布 ATOM 打击垫控制器(视频)
  10. 互联网架构师必备技能(使用markdown编写)
  11. linux 有线链接树莓派,linux-通过公共互联网连接到树莓派
  12. HI3520DV200+GV7601采集1080P视频
  13. 陕西云数据库_创业英雄汇:“秦盾云加密数据库系统”沈玉龙
  14. html热点区域的素材,htmllabel
  15. echarts使用总结(使用echarts画工字型标记线;无数据时设置纵坐标刻度0-1;tooltip数据展示;工具栏 toolBox 图标配置)
  16. 事业单位招聘java_新华社新媒体中心2018年面向社会招聘事业单位人员
  17. 数理逻辑小结3——一阶谓词逻辑演算
  18. linux中的“~”,“./”,“/“具体含义
  19. 2d有限元计算机仿真,平面铣削加工过程计算机仿真分析
  20. Python采集某宝数据,轻松解决这个价值千元的外包项目

热门文章

  1. 用canvas实现围绕旋转动画
  2. Java关于null和空字符串““的区别
  3. 妙味课堂实战功能开发视频教程 3D翻转焦点图/瀑布流/拖拽购物车/模块化开发等实战教程
  4. vue+echarts实现中国地图
  5. 大数据入门第一课 Hadoop基础知识与电商网站日志数据分析
  6. 负载均衡的几种常见方式
  7. 微信支付的软件架构,牛逼!
  8. 服务器开超线程性能提升多少,超线程能提升处理器效率
  9. 背景建模方法《python图像处理篇》
  10. 9.华为WLAN产品介绍_华为WLAN产品介绍