Istio 流量劫持

举报
叶康铭 发表于 2021/03/26 00:39:50 2021/03/26
【摘要】 运用服务网格的好处,就是不用修改本身应用的任何代码,就可以实现重试、重试、注册、发现、故障注入等等的能力,而且对开发语言、框架都是没有任何限定统一的技术栈的,那么为什么服务网格那么厉害可以做到那么透明呢,不用修改应用的任何代码让应用获得服务的治理能力呢,我们一起了解一下吧! Envoy 边车模式 Istio的数据平面是由多个应用容器(App)加边车容器(E...

运用服务网格的好处,就是不用修改本身应用的任何代码,就可以实现重试、重试、注册、发现、故障注入等等的能力,而且对开发语言、框架都是没有任何限定统一的技术栈的,那么为什么服务网格那么厉害可以做到那么透明呢,不用修改应用的任何代码让应用获得服务的治理能力呢,我们一起了解一下吧!

Envoy 边车模式

Istio的数据平面是由多个应用容器(App)加边车容器(Envoy)的Pods组成的,可以参考我之前的文章 - Istio 项目介绍, Istio Envoy 的工作原理就是通过 Kubernetes Pods的共享NameSpace特性,把边车容器与应用容器"绑定"在一起,并且通过 iptables 修改应用容器的进出流量都需要经过Envoy,在Envoy上进行流量的管控从而实现服务的治理能力。 这也是在代码开发中,经常使用的"边车模式"。

iptables 流量劫持

上诉我们已经知道了通过iptables修改流量的走向,让Envoy去接管流量从而实现服务的治理能力,那么iptables是如何修改进去Pods中的呢,可以参考我之前的文章 - Istio 注入原理,通过对原来的资源定义清单进行修改后实施,从而附加上 Envoy 容器以及 Init 容器,Iptables的策略就是由 init容器进行定义的。

iptables 重定向规则

首先我们安装一下 nsenter 这个工具,用于接下来的实验探索。

yum install -y util-linux
PID=$(docker inspect --format "{{ .State.Pid}}" <container id>)
nsenter -t $PID -n iptables -t nat -nvL

  
 
  • 1
  • 2
  • 3
Inbound

通过 nsenter 可以发现
1.进入的流量会命中#1红框的PREROUTING链。
2.接着在Target中会选择#2红框 ISTIO_INBOUND链。
3.如果是 tcp destination port 22 15090 15021的流量会直接放行处理,
否则其他流量全部交给下一个链 #3红框ISTIO_IN_REDIRECT。
4.ISTIO_IN_REDIRECT 链中就把流量交给了 15006 端口 (Envoy容器流量入端口)
在这里插入图片描述
REQUEST -> (IPTABLES PREROUTING -> ISTIO_INBOUND -> ISTIO_IN_REDIRECT -> REDIRECT PORT 15006) -> ISTIO-PROXY

Outbound

通过 nsenter 可以发现
1.出去的流量会命中#1红框的OUTPUT链。
2.接着在Target中会选择#2红框 ISTIO_OUTPUT链。
如果是 Owner GID 1337 的流量会直接放行处理,GID1337 表示的是Envoy自身流量,以防止流量循环。
其他流量全部交给下一个链 #3红框ISTIO_REDIRECT。
3.ISTIO_REDIRECT 链中就把流量交给了 15001 端口 (Envoy容器流量出端口)

在这里插入图片描述
REQUEST -> (IPTABLES OUTPUT -> ISTIO_OUTPUT -> ISTIO_REDIRECT -> REDIRECT PORT 15001) -> ISTIO-PROXY

Envoy Port

经过iptables处理后的流量,最后都会经过envoy进行处理(return的除外),那么在envoy进行流量的处理,那么就可以对应用透明无感知的情况下进行一些高级的治理能力处理,而envoy处理的规则,是由pilot进行下发的,具体可以定义那些服务治理规则的?欢迎继续关注,我们下期在见!
在这里插入图片描述
refer: https://istio.io/latest/docs/ops/deployment/requirements/

在这里插入图片描述

点点关注不迷路!希望可以得到你的点点点点点赞!

文章来源: blog.csdn.net,作者:叶康铭,版权归原作者所有,如需转载,请联系作者。

原文链接:blog.csdn.net/m0_38030719/article/details/108708651

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。