前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Linkerd2 中进行流量拆分

在 Linkerd2 中进行流量拆分

作者头像
CNCF
发布2019-12-03 13:13:04
3910
发布2019-12-03 13:13:04
举报
文章被收录于专栏:CNCFCNCF

最新发布的 Linkerd 2.4,加入了对流量拆分的支持。

安装最新版本之后,可以看到这个流量拆分功能所使用的 API 资源并非来自 Linkerd,而是 SMI 规范的一部分。

代码语言:javascript
复制
$ curl -sL https://run.linkerd.io/install | sh
...
$ kubectl api-resources | grep -i split
trafficsplits ts split.smi-spec.io true TrafficSplit

和 Istio 的 Service + Selector 的拆分方式不同,Linkerd 其实没有什么特别的上游定义方式,简单的定义独立的 Service 即可。例如我们要从 flaskapp 服务分流到 v1 和 v2 两个版本,在 Istio 中,需要定义一个 flaskapp 服务,然后使用标签,在 Service 的标签子集中,选择两组 Subset 作为目的地。而在 Linkerd/SMI 中,就需要分别定义三个服务了,例如 flaskapp、flaskapp-v1、flaskapp-v2。下面简单操练一下。

代码语言:javascript
复制
$ wget https://raw.githubusercontent.com/fleeto/istio-for-beginner/master/code/flaskapp/flaskapp.istio.yaml
$ linkerd inject flaskapp.istio.yaml | kubectl apply -f -
...
$ wget https://raw.githubusercontent.com/fleeto/istio-for-beginner/master/code/sleep/sleep.yaml
$ linkerd inject sleep.yaml | kubectl apply -f -
...

分别安装了两个版本的 flaskapp,和一个版本的 sleep 服务之后。再创建两个 flaskapp 的分版本服务。

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  name: flaskapp-v1
  labels:
    app: flaskapp
spec:
  selector:
    app: flaskapp
    version: v1
  ports:
    - name: http
      port: 80
      targetPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: flaskapp-v2
  labels:
    app: flaskapp
spec:
  selector:
    app: flaskapp
    version: v2
  ports:
    - name: http
      port: 80
      targetPort: 80

创建两个服务之后,就可以尝试拆分了,同样是一个 YAML:

代码语言:javascript
复制
apiVersion: split.smi-spec.io/v1alpha1
kind: TrafficSplit
metadata:
  name: flask-split
spec:
  service: flaskapp
  backends:
  - service: flaskapp-v1
    weight: 1
  - service: flaskapp-v2
    weight: 500m

注意这里的定义和 Istio 也稍有不同,使用权重而非百分比进行分流。

可以在 Sleep 中进行测试:

代码语言:javascript
复制
$ for i in {1..1000}; do curl -sSL http://flaskapp/env/version | grep v1; done | wc -l
660

可以看到,按照我们的权重分配,成功进行了分流。但是目前在 SMI 中并没有看到条件选择的相关内容,因此目前的功能可能还比较初级。可以通过 Flagger 的加持,实现更加复杂的功能。


本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-07-15 10:27:18,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 CNCF 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
服务网格
服务网格(Tencent Cloud Mesh, TCM),一致、可靠、透明的云原生应用通信网络管控基础平台。全面兼容 Istio,集成腾讯云基础设施,提供全托管服务化的支撑能力保障网格生命周期管理。IaaS 组网与监控组件开箱即用,跨集群、异构应用一致发现管理加速云原生迁移。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档