怎样在Linkerd2中进行流量拆分

发布时间:2021-12-23 18:45:04 作者:柒染
来源:亿速云 阅读:134

怎样在Linkerd2中进行流量拆分,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

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

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

$ 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。下面简单操练一下。

$ 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 的分版本服务。

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:

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 中进行测试:

$ for i in {1..1000}; do curl -sSL http://flaskapp/env/version | grep v1; done | wc -l
660

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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

推荐阅读:
  1. 使用python进行拆分大文件的方法
  2. 在react-router4中进行代码拆分的方法(基于webpack)

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

linkerd2

上一篇:如何进行Linux系统SSH服务中的sshkey密钥认证实战

下一篇:linux中如何删除用户组

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》