Kubernetes集群中使用阿里云 SLB 实现四层金丝雀发布

摘要: 上文介绍了如何使用Ingress实现蓝绿发布。可是对于不少只提供tcp/udp的服务来讲,七层的ingress不能很好的实现蓝绿发布的需求。这里咱们就来介绍一下如何使用 SLB 来进行四层的金丝雀发布。nginx

前言后端

上文介绍了如何使用Ingress实现蓝绿发布。可是对于不少只提供tcp/udp的服务来讲,七层的ingress不能很好的实现蓝绿发布的需求。这里咱们就来介绍一下如何使用 SLB 来进行四层的金丝雀发布。app

准备负载均衡

首先须要一个已经经过SLB对外提供服务的应用,这里咱们仍是继续使用nginx做为例子,不过此次是经过SLB对外暴露的服务。curl

 

能够直接在控制台上,经过应用->部署 使用模板来部署应用。tcp

建立完毕后,就能够在控制台上看到对应的部署与服务。url

如今咱们能够经过本地curl 来看一下部署的效果code

 

能够看到已经正常访问。blog

新服务上线资源

下面咱们模拟新的服务上线,如今建立新的应用。

值得注意的就是,新服务的pod的label,也是含有app:nginx标签的。这个标签就是为了对应的service找到该pod,这样就能够将对应的流量导入进来。

建立完毕后就能够在控制台上看到新的应用。

下面咱们在执行一下curl 看一下效果。

 

能够看到,十次请求里面,有五次打到了老服务,五次打到了新服务。主要缘由是,service对于流量请求是平均的负载均衡策略,并且新老服务均为一个pod,所以他们的流量百分比为1:1 。

调整流量权重

这里的权重调整就没有ingress的那么直接。须要调整后端的pod容器数量来调整对应的权重。好比咱们这里但愿新的服务权重更大一些,那么想调整新的pod数量到3个。

能够直接在控制台上更新已有的应用。注意: Kubernetes的Deployment资源默认的更新方式就是rollingUpdate,因此在更新过程当中,会保证最小可服务的容器个数,这个个数也能够在模板里面调整。

 

更新完毕后,新老服务个数比为3:1, 下面咱们再来curl一下,看一下效果。

 

能够看到,10个请求里面,有8个请求到新的服务,2个到老的服务。后面就能够经过动态的调整pod的数量来调整新老服务的权重,实现金丝雀发布。

完成

发布完毕后,将对应的旧应用删除便可。删除完毕后,看一下curl的效果

 

这样就实现了四层 SLB 金丝雀发布的流程。

原文连接

相关文章
相关标签/搜索