Istio

用 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基础环境

╄→尐↘猪︶ㄣ 提交于 2020-08-18 12:39:22
需求 搭建istio基础环境(基于1.5.1版本) 安装步骤 在安装 Istio 之前,需要一个运行着 Kubernetes 的环境,安装步骤可以参考前面的文章 下载istio,然后解压,然后将 istioctl 增加到 path 环境变量中 curl -L https://istio.io/downloadIstio | sh - cd istio-1.5.1 export PATH=$PWD/bin:$PATH 新建 istio-1.5.1.yaml 配置文件、按照官方文档操作安装会出现错误,导致不能正常进行sidecar 自动注入 vim istio-1.5.1.yaml apiVersion: install.istio.io/v1alpha1 kind: IstioOperator spec: components: egressGateways: - name: istio-egressgateway enabled: true k8s: resources: requests: cpu: 10m memory: 40Mi ingressGateways: - name: istio-ingressgateway enabled: true k8s: resources: requests: cpu: 10m memory: 40Mi service: ports: #

Istio的流量管理(实操一)(istio 系列三)

江枫思渺然 提交于 2020-08-17 19:25:50
Istio的流量管理(实操一)(istio 系列三) 使用官方的 Bookinfo 应用进行测试。涵盖官方文档 Traffic Management 章节中的请求路由,故障注入,流量迁移,TCP流量迁移,请求超时,熔断处理和流量镜像。不含ingress和Egree,后续再补充。 目录 Istio的流量管理(实操一)(istio 系列三) 部署Bookinfo应用 Bookinfo应用说明 部署 卸载 流量管理 请求路由 基于用户ID的路由 故障注入 注入HTTP延时故障 注入HTTP中断故障 卸载 流量迁移 基于权重的路由 卸载 TCP流量迁移 基于权重的TCP路由 卸载 请求超时 卸载 断路 配置断路器 添加客户端 触发断路器 卸载 镜像 创建默认路由策略 将流量镜像到v2 卸载 部署Bookinfo应用 Bookinfo应用说明 官方提供的测试应用如下,包含如下4个组件: productpage : productpage 服务会调用 details 和 reviews 来填充web页面. details : details 服务包含book信息. reviews : reviews 服务包含书评,它会调用 ratings 服务. ratings : ratings 服务包与书评相关的含排名信息 reviews 包含3个版本: v1版本不会调用 ratings 服务.

一文详解微服务架构

谁都会走 提交于 2020-08-17 15:20:09
本文将介绍微服务架构和相关的组件,介绍他们是什么以及为什么要使用微服务架构和这些组件。本文侧重于简明地表达微服务架构的全局图景,因此不会涉及具体如何使用组件等细节。 为了防止不提供原网址的转载,特在这里加上原文链接: https://www.cnblogs.com/skabyy/p/11396571.html 要理解微服务,首先要先理解不是微服务的那些。通常跟微服务相对的是单体应用,即将所有功能都打包成在一个独立单元的应用程序。从单体应用到微服务并不是一蹴而就的,这是一个逐渐演变的过程。本文将以一个网上超市应用为例来说明这一过程。 最初的需求 几年前,小明和小皮一起创业做网上超市。小明负责程序开发,小皮负责其他事宜。当时互联网还不发达,网上超市还是蓝海。只要功能实现了就能随便赚钱。所以他们的需求很简单,只需要一个网站挂在公网,用户能够在这个网站上浏览商品、购买商品;另外还需一个管理后台,可以管理商品、用户、以及订单数据。 我们整理一下功能清单: 网站 用户注册、登录功能 商品展示 下单 管理后台 用户管理 商品管理 订单管理 由于需求简单,小明左手右手一个慢动作,网站就做好了。管理后台出于安全考虑,不和网站做在一起,小明右手左手慢动作重播,管理网站也做好了。总体架构图如下: 小明挥一挥手,找了家云服务部署上去,网站就上线了。上线后好评如潮,深受各类肥宅喜爱

Kubernetes 发布策略总结

孤人 提交于 2020-08-17 10:47:23
在Kubernetes中有几种不同的方式发布应用,所以为了让应用在升级期间依然平稳提供服务,选择一个正确的发布策略就非常重要了。选择正确的部署策略是要依赖于我们的业务需求的,下面我们列出了一些可能会使用到的策略: 重建(recreate):停止旧版本部署新版本 (k8s内部支持) 滚动更新(rolling-update):一个接一个地以滚动更新方式发布新版本 (k8s内部支持) 蓝绿(blue/green):新版本与旧版本一起存在,然后切换流量 (k8s内部支持比较繁琐,argo(改动yml),不用太大改动) 金丝雀(canary):将新版本面向一部分用户发布,然后继续全量发布 (k8s内部支持比较繁琐,argo(改动yml),不用太大改动) A/B测(a/b testing):以精确的方式(HTTP 头、cookie、权重等)向部分用户发布新版本。A/B测实际上是一种基于数据统计做出业务决策的技术。在 Kubernetes 中并不原生支持,需要额外的一些高级组件来完成改设置(比如Istio、Linkerd、Traefik、或者自定义 Nginx/Haproxy 等) AB测试 (所有的请求必须走代理网关进行流量拦截,进行转发来实现AB测试 参考: ingress-nginx实现灰度发布 ) 改动点: 滚动更新(rolling-update):yml配置下ok 蓝绿(blue

#新闻拍一拍# 龙芯进驻激光打印机:成功适配国产 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. 53

北战南征 提交于 2020-08-16 22:32:27
作者 | 王思宇、陈洁、陈有坤、宋净超 业界要闻 阿里云重磅发布云原生裸金属方案:裸金属 + 容器,解锁云计算的新方式 在 6 月 9 日 2020 阿里云线上峰会上,阿里云智能基础产品事业部高级研究员蒋江伟重磅发布了云原生裸金属方案。新一代容器服务 ACK,可以将最新神龙弹性裸金属实例的强大性能发挥得淋漓尽致,具备极致性能、高效调度、全面安全的特点。 为云研发而生,阿里巴巴发布新一代 DevOps 平台云效 6 月 9 日,2020 阿里云线上峰会于云端举行,阿里巴巴云研发部门负责人陈鑫出席峰会并发表题为《新云效,新 DevOps 平台》的主题演讲,宣布新一代企业级 DevOps 平台——阿里云·云效正式发布。 上游重要进展 StatefulSet volume resize 为 StatefulSet 增加支持调整 PVC resize 的能力。 fix: leaderelection graceful release doesn't work 解决 client-go 中提供的 leaderelection 存在优雅释放不 work 的问题。 Fix DS expectations on recreate 修复了 DaemonSet 控制器重建 Pod 时,expectations cache 中信息未清理的 BUG。 Fix kube-apiserver panic

微服务开发手册之GRPC

|▌冷眼眸甩不掉的悲伤 提交于 2020-08-16 01:48:20
GRPC是一个高性能、通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化协议开发,支持众多的开发语言。 @[TOC] 1 简介 在GRPC框架中,客户端可以像调用本地对象一样直接调用位于不同机器的服务端方法,如此我们就可以非常方便的创建一些分布式的应用服务。 在服务端,我们实现了所定义的服务和可供远程调用的方法,运行一个gRPC server来处理客户端的请求;在客户端,gRPC实现了一个stub(可以简单理解为一个client),其提供跟服务端相同的方法。 gRPC使用protocol buffers作为接口描述语言(IDL)以及底层的信息交换格式,一般情况下推荐使用 proto3因为其能够支持更多的语言,并减少一些兼容性的问题。 由于gRPC涉及到几个比较重要的技术点http2、protobuf,正是这几个技术点才使得gRPC得到广泛应用,这里也顺带讲一下这几个技术点 1.1 http2 HTTP/2是最新的HTTP协议,提高了资源访问效率。通过本篇科普小文,可以了解HTTP/2协议的概念以及优势。 HTTP/2也被称为HTTP 2.0,相对于HTTP 1.1新增多路复用、压缩HTTP头、划分请求优先级、服务端推送等特性,解决了在HTTP 1.1中一直存在的问题,优化了请求性能,同时兼容了HTTP 1.1的语义。 2015年,HTTP/2 发布。HTTP