小白网-奉贤部落-奉贤免费信息发布平台

查看: 58|回复: 0

istio110进修笔记08Istio流量治理之TCP流量转移

[复制链接]

2万

主题

0

回帖

8万

积分

论坛元老

Rank: 8Rank: 8

积分
88256
发表于 2025-7-26 13:03 | 显示全部楼层 |阅读模式
在上一节中,我们进修了利用Istio Gateway向集群内部公然集群中的http办事他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。Istio网关在拜候集群外的流量时类似于K8S的进口他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。istio-Ingres gateway组件相当于k8s中的进口控制器他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。Istio网关和K8S的区分在于,在Istio网关资本中只界说了表露的端口、协议和域名,路由信息需要利用Istio的VirtualService虚拟办事的路由法则停止设置,这样Istio供给的各类功用才能利用到接入集群的流量中他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
本节将首先进修若何利用Istio Gateway将集群中的tcp办事表露到集群内部,同时体验Istio流量治理的TCP流量转移功用,以及若何利用Istio将TCP流量从一个版本的微办事慢慢迁移到另一个版本他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
预备测试情况,摆设两个版本的tcp-echo办事,建立一个名为Istio-io-TCP-traffic-shift的命名空屋间,标志为自动注入到Istio Sidecar他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
kubectl建立命名空间istio-io-TCP-traffic-shiftkube CTL标签命名空间istio-io-TCP-traffic-shift istio-injection = enabled
摆设tcp-echo微办事的v1和v2版本:
kubectl apply-f samples/TCP-echo/TCP-echo-services . YAML-n istio-io-TCP-traffic-shift
上述号令将以下内容摆设到k8s:
kubectl get svc,deploy,pod-n istio-io-TCP-traffic-shiftNAME TYPE CLUSTER-IP EXTERNAL-IP PORT AGEservice/TCP-echo CLUSTER IP 10 . 109 . 148 . 168 9000/TCP,9001/TCP 7m40sNAME READY最新可用年龄deployment . apps/TCP-echo-v1 1 1 1 1 7m 40S[/h
tcp-echo-services.yaml的内容以下:
API version:v1kind:Servicemetadata:name:TCP-echolabels:app:TCP-echoService:TCP-echospec:-name:TCPPort:9000-name:TCP-otherPort:9001# Port 9000挑选器:app: tcp-echo-API version:apps/v1品种:摆设元数据:称号:TCP-echo-v1标签:app:TCP-echo版本:v1规格:副本:1挑选器:matchLabels:app
利用Istio Gateway向集群内部公然tcp办事tcp-echo他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。检查istio-Ingres gateway组件的办事:
ku bectl get SVC istio-Ingres gateway-n istio-system-o YAML
API version:v1kind:Servicemetadata:labels:app:istio-Ingres gatewayname:istio-Ingres gatewaynamespace:istio-systemspec:Cluster IP:10 . 106 . 130 . 216Cluster IPS:-10 . 106 . 130 . 216extern
请留意istio-Ingres gateway办事的端口中的端口31400 name tcp,该端口用于将tcp流量接入集群他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。表露的tcp办事分歧于http办事,利用80和443连系特定主机名域名的路由可以同一多个http办事;公然每个tcp办事需要一个零丁的端口他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。在istio-Ingres gateway办事的默许摆设中已经为我们设备了一个31400,可以间接利用他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。可是,假如您想要向集群内部公然另一个tcp办事,则需要点窜istio-Ingres gateway办事并增加一个新的tcp端口他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
留意,istio-Ingres gateway办事有一个externalIP,这里是192.168.96.50他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。我们可以经过192.168.96.50:31400间接拜候表露的办事他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。假如没有externalIP,我们就得用31400对应的NodePort 32343来问他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
弄清楚istio-Ingres Gateway的感化后,再来看看若何建立istio Gateway他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。samples/TCP-echo/TCP-echo-all-v1 . YAML的内容以下:
API version:networking . istio . io/v1 alpha 3kind:Gatewaymetadata:name:TCP-echo-Gatewayspec:selector:istio:ingressgatewayserver:-port:number:31400name:TCPprotocol:TCPhosts:--
将上述tcp-echo-all-v1.yaml利用于k8s:
kubectl apply-f samples/TCP-echo/TCP-echo-all-v1 . YAML-n istio-io-TCP-traffic-shift
履行上述号令后,建立了方针法则tcp-echo-destination他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。此方针法则利用于方针办事k8s serivcetcp-echo,并设置了一个办事子集他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。v1和v2办事子集别离对应labelversion=v1和labelversion=v2的办究竟例他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。履行上述号令后,还会建立网关tcp-echo-gateway他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。这个网关婚配任何主机名的端口31400,可是单靠网关是做不到的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。您还需要利用虚拟办事设置路由法则他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。这里的路由法则是将tcp-echo-gateway网关的端口31400的流量路由到方针k8s办事的tcp-echo办事子集的端口9000他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
在集群外利用nc号令停止测试:
对于{ 1 }中的I..10};do sh -c "(日期;就寝1)| NC 192 . 168 . 96 . 50 31400 ";完成一个太阳2021年7月25日15时00分41秒一个太阳2021年7月25日15时00分42秒一个太阳2021年7月25日15时00分43秒一个太阳2021年7月25日15时00分44秒一个太阳
10个请求的输出成果都是1,这意味着请求流量100%被路由到v1办事他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
接下来,经过以下号令将20%的流量从tcp-echo:v1迁移到tcp-echo:v2:
kubectl apply-f samples/TCP-echo/TCP-echo-20-v2 . YAML-n istio-io-TCP-traffic-shift
tcp-echo-20-v2.yaml文件的内容以下:
API version:networking . istio . io/v1 alpha 3kind:virtual servicemetadata:name:TCP-echospec:-" * "gateways:-TCP-echo-gateway-match:-port:31400route:
经过虚拟办事tcp-echo路由法则中的权重分派,80%的流量保存给tcp-echo: v1,20%的流量保存给tcp-echo:v2他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。此时,利用nc号令在集群外再次停止测试:
对于{ 1 }中的I..10};do sh -c "(日期;就寝1)| NC 192 . 168 . 96 . 50 31400 ";完成两个太阳2021年7月25日15时04分41秒一个太阳2021年7月25日15时04分42秒一个太阳2021年7月25日15时04分43秒一个太阳2021年7月25日15时04分44秒一个太阳
10个请求中几近有20%被路由到版本v2的办事供给商他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
操纵上述istio的路由权重特征,tcp-echo办事的一部分TCP流量从旧版本迁移到新版本他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
请拜见https://istio . io/latest/zh/docs/tasks/traffic-management/TCP-traffic-shift/
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

GMT+8, 2025-11-11 17:26 , Processed in 0.171276 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表