此文系[大话云原生]系列第四篇,该系列文章期望用最通俗.简单的语言说明白云原生生态系统内的组成.架构以及应用关系.从这篇开始我们要开始针对Kubernetes进行介绍了,本文内容如下: 一.Kubernetes的Pod概念解析 前文说到老婆过生日了我们一起出去旅游,上了团体服务班车,小娜同学(老婆)闲聊到:"这服务还不错哈,2个跟车导游,1个司机".三句不离老本行,我无聊的说到:"他们三个人就是一个Pod,提供一天的旅游服务内容,有主有次不可分割". 小娜同学又上套…
Kubernetes 作为基础平台,提供了强大的容器编排能力.但是在其上部署业务和服务治理上,仍然会面对一些复杂性和局限性.在服务治理上,已经有许多成熟的 ServiceMesh 框架用于扩充其能力,如 Istio.Linkerd.Dapr 等.本文将主要介绍如何使用 Istio 扩充 Kubernetes 灰度发布的能力. 而在部署上,则会利用开源项目 Rainbond 作为基础平台来进行实践.Rainbond 是一个云原生应用管理平台,它使用以应用为中心的设计模式.基于这一设计模式抽象出了标…
今天简单介绍下SpringFramework微服务中几种服务发布策略以及实现方式.我接触过的有蓝绿.滚筒和灰度发布. 蓝绿发布: 简单说就像美帝选总统投票一样,非蓝即绿一刀切,这个其实也是传统软件架构最常使用的升级方式,只不过服务需要重启才能生效,而在微服务中这种部分节点的替换是热部署上去的. 微服务中的蓝绿部署依赖的是Spring Cloud Zuul + Spring Cloud Config + Spring Cloud Eureka,实现方式如下: 我准备了5个节点: 1 GreenBl…
本期是Istio技术实践专题的最后一个模块,主题是Istio的路由控制与灰度发布.上一期我们讲到,虚拟服务(Virtual Service)以及目标规则(Destination Rule)是 Istio 流量路由的两大基石.虚拟服务可以将流量路由到 Istio 服务网格中的服务.每个虚拟服务由一组路由规则组成,这些路由规则按顺序进行评估.如果没有 Istio virtual service,仅仅使用 k8s service 的话,那么只能实现最基本的流量负载均衡转发,但是就不能实现类似按百分比来…
写在前面 在<[高并发]面试官问我如何使用Nginx实现限流,我如此回答轻松拿到了Offer!>一文中,我们主要介绍了如何使用Nginx进行限流,以避免系统被大流量压垮.除此之外,Nginx还有很多强大的功能,例如:负载均衡.缓存.黑白名单.灰度发布等.今天,我们就来一起探讨Nginx支持的这些强大的功能! Nginx安装 注意:这里以CentOS 6.8服务器为例,以root用户身份来安装Nginx. 1.安装依赖环境 yum -y install wget gcc-c++ ncurses…
灰度发布,是指在黑与白之间,能够平滑过渡的一种发布方式.通俗来说,即让产品的迭代能够按照不同的灰度策略对新版本进行线上环境的测试,灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以对新版本进行测试.发现和调整问题,以保证其影响度.KubeSphere 基于 Istio 提供了蓝绿部署.金丝雀发布.流量镜像等三种灰度策略,无需修改应用的服务代码,即可实现灰度.流量治理.Tracing.流量监控.调用链等服务治理功能. 目的 本示例在 KubeSphere 容器平台中使用 Istio 官方提供的…
使用 Ingress 实现灰度发布 一.Canary 规则说明 Ingress-Nginx 是一个K8S ingress工具,支持配置 Ingress Annotations 来实现不同场景下的灰度发布和测试( Ingress-Nginx 是在0.21.0 版本 中,引入的Canary 功能). Nginx Annotations 支持以下 4 种 Canary 规则: nginx.ingress.kubernetes.io/canary-by-header:基于 Request Header…
云原生的概念最近非常火爆,企业落地云原生的愿望也越发强烈.看过很多关于云原生的文章,要么云山雾罩,要么曲高和寡. 所以笔者就有了写<大话云原生>系列文章的想法,期望用最通俗.简单的语言说明白云原生生态系统内的组成及应用关系.那么,开始吧,这是第一篇! 这真的是一篇讲架构技术的文章,不是小说!建议您看下去! 一.周末煮饺子聊到容器问题 周末和老婆一起包了顿饺子,"老公,我去买瓶醋,你把饺子先煮一下吧".我笨手笨脚准备半天,还没煮完,老婆就回来了.我看着这一锅饺子问道:&quo…
实战场景 - 灰度发布 灰度发布的作用:按照一定的关系区别,分部分的代码进行上线,使代码的发布能平滑过渡上线实现方式: 1.用户的信息cookie等信息区别 2.根据用户的IP地址 安装memcached:yum -y install memcached 准备好两个tomcat,9090代表生产环境,8080代表预发布环境 为避免冲突,修改tomcat9090的端口号 这里分别在同个tomcat/webapp/ROOT/下放了同样内容的jsp文件 把8080下的jsp问价内容改一下区别于9090…
Istio是什么? Istio是Google继Kubernetes之后的又一开源力作,主要参与的公司包括Google,IBM,Lyft等公司.它提供了完整的非侵入式的微服务治理解决方案,包含微服务的管理.网络连接以及安全管理等关键能力,无需修改任何代码就能够实现微服务的负载均衡,服务与服务之间的认证授权以及监控.从整个基础设施角度上看,可以将它理解为PaaS平台上的一个面向微服务管理平台的补充. Istio架构示意图 Istio与Kubernetes Kubernetes提供了部署.升级和有限的…