Envoy

Service Mesh对比:Istio与Linkerd

蹲街弑〆低调 提交于 2020-09-24 06:03:40
原文发表于 kubernetes中文社区 ,为作者原创翻译 , 原文地址 更多kubernetes文章,请多关注 kubernetes中文社区 目录 Service Mesh简介 Istio 架构(Architecture) 组件(Components) 核心功能 Linkerd Architecture ​控制平面(Control Plane) 数据平面(Data Plane): Service Mesh对比:Istio与Linkerd 结论 参考文献 根据 CNCF 的 最新年度调查 ,很多组织对Service Mesh表现出很高的兴趣,并且有一部分已经在生产环境中使用它们。你可能不知道Linkerd是市场上第一个Service Mesh,但是Istio使Service Mesh更受欢迎。这两个项目都是最前沿的项目,而且竞争非常激烈,因此很难选择一个项目。 在本篇文章中,我们将和你一起了解Istio和Linkerd架构,组件,并比较它们的产品以帮助你做出明智的决定。 Service Mesh简介 在过去的几年中,微服务架构已成为软件设计中流行的样式。在这种架构中,我们将应用程序分解为可独立部署的服务。这些服务通常是轻量级的,多语言的,并且通常由各种职能团队进行开发部署。 当某些服务数量增加,难以管理且越来越复杂时,微服务架构将一直有效。但这也在管理安全性

用 Istio 解释微服务和服务网格

本秂侑毒 提交于 2020-08-19 15:49:37
作者:Sudip Sengupta 翻译: Bach (才云) 校对: bot (才云)、 星空下的文仔 (才云) 微服务 会将应用程序分解为多个较小的服务组件。与传统的一体化(Monolithic)架构相比, 微服务架构将每个微服务视为独立的实体与模块 ,从根本上有助于简化代码和相关基础架构的维护。应用程序的每个微服务都可以编写在不同的技术堆栈中,并且可以进一步独立地部署、优化和管理。 从理论上讲,微服务体系结构特别有利于复杂的大型应用程序的构建,但实际上,它也被广泛用于小型应用程序的构建。 微服务架构的好处 可以通过不同的技术堆栈开发和部署应用程序中的各个微服务。 每个微服务都可以独立优化、部署或扩展。 更好的故障处理和错误检测。 K8sMeetup 微服务架构的组件 在微服务架构上运行的现代云原生应用程序依赖于以下关键组件: 容器化 (通过类似 Docker 的平台):通过将服务分为多个进程进行管理和部署。 编排 (通过类似 Kubernetes 的平台):配置、分配、管理服务的系统资源。 服务网格 (通过类似 Istio 的平台):通过服务代理网格进行服务间通信,以连接、管理、保护微服务。 以上三个是微服务架构中最重要的组件,这些组件允许云原生堆栈中的应用程序在负载下扩展,甚至在云环境部分故障期间也能执行。 K8sMeetup 微服务架构的复杂性

从单体到混乱的微服务,阿里云托管式服务网格是如何诞生的?

霸气de小男生 提交于 2020-08-19 13:41:36
作者 | 王夕宁 阿里巴巴高级技术专家 参与阿里巴巴云原生文末留言互动,即有机会获得赠书福利! 在服务网格技术使用之前,为了更快更灵活地进行业务创新, 我们常常会把现有应用进行现代化改造, 把单体应用程序分拆为分布式的微服务架构。通常来说, 在微服务架构模式的变迁过程中, 最初都是面向代码库的模式。 对这些微服务治理的实现, 往往是以代码库的方式把这些服务治理的逻辑构建在应用程序本身中,这些代码库中包括了流量管理、熔断、重试、客户端负载均衡、安全以及可观测性等这样的一些功能。这些代码库随着功能的不断增强, 版本也随之变更,因为版本不同导致的冲突问题处处可见。此外,库的版本一旦变更,即使你的应用逻辑并没有任何变化,整个应用也要随之全部变更。由此可见, 随着应用的增长和团队数量的增加,跨服务一致地使用这些服务治理功能会变得非常复杂。 服务治理的能力 Sidecar 化 通过把这些服务治理的能力 Sidecar 化,就能够把服务治理的能力与应用程序本身进行了解耦,可以较好地支持多种编程语言、同时这些 Sidecar 能力不需要依赖于某种特定技术框架。这就是我们常说的面向 Sidecar proxy 的架构模式。 随着这些 Sidecar 代理功能的增强,原本需要在代码库中实现的服务治理功能被抽象化为一个个通用组件, 并被逐渐地下沉到代理中。这些服务治理能力的标准化、统一化

Istio Sidecar注入原理

孤者浪人 提交于 2020-08-18 21:17:39
概念 简单来说,Sidecar 注入会 将额外容器 的配置 添加到 Pod 模板中 。这里特指将Envoy容器注应用所在Pod中。 Istio 服务网格目前所需的容器有: istio-init 用于设置 iptables 规则,以便将入站/出站流量通过 Sidecar 代理。 初始化容器与应用程序容器在以下方面有所不同: 它在启动应用容器之前运行,并一直运行直至完成。 如果有多个初始化容器,则每个容器都应在启动下一个容器之前成功完成。 因此,您可以看到,对于不需要成为实际应用容器一部分的设置或初始化作业来说,这种容器是多么的完美。在这种情况下, istio-init 就是这样做并设置了 iptables 规则。 istio-proxy 这个容器是真正的 Sidecar 代理(基于 Envoy)。 下面的内容描述了向 pod 中注入 Istio Sidecar 的两种方法: 使用 istioctl 手动注入 启用 pod 所属命名空间的 Istio Sidecar 注入器自动注入。 手动注入直接修改配置,如 deployment,并将代理配置注入其中。 当 pod 所属 namespace 启用自动注入后,自动注入器会使用准入控制器在创建 Pod 时自动注入代理配置。 通过应用 istio-sidecar-injector ConfigMap 中定义的模版进行注入。 自动注入

Istio Sidecar

空扰寡人 提交于 2020-08-17 17:57:56
Istio Sidecar 概念及示例 Sidecar 描述了sidecar代理的配置。默认情况下,Istio 让每个 Envoy 代理都可以访问来自和它关联的工作负载的所有端口的请求,然后转发到对应的工作负载。您可以使用 sidecar 配置去做下面的事情: 微调 Envoy 代理接受的端口和协议集。 限制 Envoy 代理可以访问的服务集合。 您可能希望在较庞大的应用程序中限制这样的 sidecar 可达性,配置每个代理能访问网格中的任意服务可能会因为高内存使用量而影响网格的性能。 您可以指定将 sidecar 配置应用于特定命名空间中的所有工作负载,或者使用 workloadSelector 选择特定的工作负载。例如,下面的 sidecar 配置将 bookinfo 命名空间中的所有服务配置为仅能访问运行在相同命名空间和 Istio 控制平面中的服务。 每个名称空间只能有一个没有任何配置 workloadSelector 的 Sidecar 配置 , 如果 Sidecar 给定名称空间中存在多个不使用选择器的配置,则系统的行为是不确定的。 下面声明的 Sidecar 在根名称空间中声明了全局默认配置 istio-config ,该配置在所有名称空间中配置了sidecar,以仅允许将流量发送到同一名称空间中的其他工作负载以及该名称空间中的服务 istio-system 。

[转] Service Mesh深度学习系列(三)| istio源码分析之pilot-discovery模块分析(中)

老子叫甜甜 提交于 2020-08-17 15:12:17
pilot总体架构 首先我们回顾一下 pilot 总体架构,上面是官方关于 pilot 的架构图,因为是 old_pilot_repo 目录下,可能与最新架构有出入,仅供参考。所谓的 pilot 包含两个组件:pilot-agent 和 pilot-discovery。图里的 agent 对应 pilot-agent 二进制,proxy 对应 Envoy 二进制,它们两个在同一个容器中,discovery service 对应 pilot-discovery 二进制,在另外一个跟应用分开部署的单独的 deployment 中。 discovery service:从Kubernetes apiserver list/watch service、endpoint、pod、node等资源信息,监听istio控制平面配置信息(如 VirtualService、DestinationRule等), 翻译为Envoy可以直接理解的配置格式。 proxy:也就是Envoy,直接连接 discovery service,间接地从Kubernetes 等服务注册中心获取集群中微服务的注册情况。 agent:生成Envoy配置文件,管理Envoy生命周期。 service A/B:使用了istio的应用,如Service A/B,的进出网络流量会被proxy接管。 对于模块的命名方法

#新闻拍一拍# 龙芯进驻激光打印机:成功适配国产 PC/OS

谁说胖子不能爱 提交于 2020-08-17 02:03:54
龙芯进驻激光打印机:成功适配国产 PC/OS 龙芯中科今天宣布,龙芯1C0300B作为主控芯片,已经批量用于天津光电出品的多款激光打印机中,在打印扫描、通信控制、协议解析方面发挥着重要的作用。 来源: 快科技 拍一拍:可喜可贺! 四分之一的 PC 依然在运行 Windows 7 Windows 7 在 2020 年 1 月达到了延长支持期限,显然微软希望它的用户数量在过去八个月中急剧下降,但是他们错了。这款古老的操作系统的市场份额几个月来变化细微,它仍占所有运行中 PC 设备的近四分之一。 来源: cnBeta.COM 拍一拍:用户总是习惯他们习惯的。 微软开源了一个基于 Envoy 的服务网格 微软宣布了一个新的开源项目,即“开放服务网格Open Service Mesh”(OSM)。它是一种在 Kubernetes 上运行的轻量级且可扩展的服务网格。如今的市场上已经存在有许多其他的服务网格技术;包括 Istio、Kuma 和 Linkerd 等。 来源: 开源中国 拍一拍:继续点赞。 来源: oschina 链接: https://my.oschina.net/u/4306876/blog/4478851

阿里云引领云原生进化 | 云原生生态周报 Vol. 60

随声附和 提交于 2020-08-16 01:25:08
作者 | 王思宇、汪萌海、李鹏 业界要闻 阿里云引领云原生进化,智能、互联、可信三位一体 阿里巴巴致力于为数字经济构建智能、互联、信任三位一体的创新基础设施,引领云原生进化新阶段。反观阿里云容器服务团队近期在 AI、边缘、机密计算三个领域的开源新动态,与智能、互联、信任的方向一一对应。 Chaos Mesh 项目加入 CNCF sandbox Chaos Mesh提供针对Kubernetes上复杂系统的故障注入方法,并涵盖了Pod,网络,文件系统甚至内核中的故障。 阿里云在 KubeCon 2020 峰会上展示什么大杀器? KubeCon 2020 中国站,阿里云容器服务负责人易立会在《云原生,数字经济技术创新基石》的演讲中,分享阿里云原生如何助力数字技术抗“疫”,阐述阿里云对云原生操作系统的思考,同时详解阿里云 ACK Pro、ASM、ACR EE、ACK @Edge 四款企业级容器新品。 上游重要进展 make cadvisor metrics set configurable in kubelet Kubelet 支持可配置的 cadvisor metrics set。 Pod resource metrics 为 Pod resource 增加更通用的 metrics 统计。 Add cronjob controller v2 新增 CronJob 控制器 v2 版本。

直播预告:Service Mesh 技术在美团的落地和挑战

家住魔仙堡 提交于 2020-08-15 05:08:13
一场突如其来的疫情加深了企业对数字化转型升级的渴望,作为新兴数字化业务的基础,云原生技术的价值日益凸显。当前,越来越多的企业逐步引入容器、微服务/Service Mesh 技术改造业务,实现数据库、PaaS 中间件的云原生化,探索 Serverless 的落地应用,以提升应用交付能力,促进业务创新,并提升资源利用率,降低开发运维成本;另一方面,云原生开源社区的核心框架也在不断迭代,使之更符合开发运维需求。 网易杭研举办本次“问道一线专家,探秘云原生实践”系列在线技术沙龙活动,邀请 Envoy 社区 Core Maintainer 及网易杭研、美团、微博等知名互联网公司一线专家联袂分享,解读云原生技术演进趋势,介绍云原生落地应用的经验心得,实践过程中遇到的典型问题及解决之道。 基本信息 议题:Service Mesh 技术在美团的落地和挑战 讲师:刘世朋,美团基础架构部开发工程师 时间: 6月11日 19:00-20:00 地点:在线直播 讲师简介 刘世朋,就职于美团基础架构部服务治理中心,目前负责 OCTO2.0(Service Mesh)项目的建设。技术兴趣集中在云原生相关的领域,包括容器、K8s、Service Mesh等方面。 议题摘要 美团相对具有较为完善的服务治理系统,业务开发语言以 Java 为主且内部技术栈较为统一,OCTO 服务治理系统的接入覆盖率很高。本次主要介绍

Sidecar模式:下一代微服务架构的关键

萝らか妹 提交于 2020-08-14 03:49:00
Sidecar设计模式正在收到越来越多的关注和采用。作为Service Mesh的重要要素,Sidecar模式对于构建高度高度可伸缩、有弹性、安全且可便于监控的微服务架构系统至关重要。而Service Mesh也已经被证明,正在改变企业IT的“游戏规则”,它降低了与微服务架构相关的复杂性,并提供了负载平衡、服务发现、流量管理、电路中断、遥测、故障注入等功能特性。 什么是Sidecar模式? Sidecar模式是一种将应用功能从应用本身剥离出来作为单独进程的方式。该模式允许我们向应用无侵入添加多种功能,避免了为满足第三方组件需求而向应用添加额外的配置代码。 就像边车加装在摩托车上一样,在软件架构中,sidecar附加到主应用,或者叫父应用上,以扩展/增强功能特性,同时Sidecar与主应用是松耦合的。 举个例子,假设现在有6个相互通信的微服务,每个微服务都需要具有可观察性、监控、日志记录、配置、断路器等功能,而所有这些功能都是在微服务中使用一些第三方库实现的。 这样一组服务的实际情况可能会非常复杂,增加了应用的整体复杂性,尤其是当每个微服务用不同的语言编写、使用不同的基于.net、Java、Python等语言的第三方库…… Sidecar模式的好处 通过将公用基础设施相关功能抽象到不同的层来降低微服务的代码复杂性 由于我们不需要在每个微服务中编写配置代码