ambient 模式中,所有 pod 通过 node 上的 ztunnel 之间创建的安全通道进行通信,如下图所示:
那么 Istio 是如何将 pod 的流量发送到 ztunnel 的呢?ambient 模式采用了 iptables 规则和策略路由(Policy-based Routing)来将 pod 的流量转发到 ztunnel。下面我们以 初探 Istio Ambient 模式 中安装的 demo 为例来详细介绍 ambient 模式是如何对流量进行劫持的。
kind 集群中有三个 node,如下所示:
~ k get node
NAME STATUS ROLES AGE VERSION
ambient-control-plane Ready control-plane 4d9h v1.25.0
ambient-worker Ready <none> 4d9h v1.25.0
ambient-worker2 Ready <none> 4d9h v1.25.0
在 ambient-worker2 这个 node 中运行了下面这些应用 pod。
k get pod -ocustom-columns=NAME:.metadata.name,IP:.status.podIP,NODE:.spec.nodeName|grep ambient-worker2
productpage-v1-7c548b785b-mhjm6 10.244.2.3 ambient-worker2
ratings-v1-85c74b6cb4-t4pq6 10.244.2.2 ambient-worker2
reviews-v1-6494d87c7b-jnjcl 10.244.2.7 ambient-worker2
reviews-v2-79857b95b-m4lst 10.244.2.5 ambient-worker2
reviews-v3-75f494fccb-5jgzw 10.244.2.8 ambient-worker2
在 node 中通过 ipset 命令可以看到 node 中创建了一个 ztunnel-pods-ips ipset,该 ipset 是一个 ip 地址的集合,其中包含了该 node 上所有被 ambient 模式管理的 pod IP 地址。
~ docker exec ambient-worker2 ipset list
Name: ztunnel-pods-ips
Type: hash:ip
Revision: 0
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 568
References: 1
Number of entries: 5
Members:
10.244.2.5
10.244.2.2
10.244.2.3
10.244.2.8
10.244.2.7
查看策略路由规则:
~ docker exec ambient-worker2 ip rule
0: from all lookup local
100: from all fwmark 0x200/0x200 goto 32766
101: from all fwmark 0x100/0x100 lookup 101
102: from all fwmark 0x40/0x40 lookup 102
103: from all lookup 100
32766: from all lookup main
32767: from all lookup default
~ docker exec ambient-worker2 ip route show table 100
10.244.2.2 via 192.168.126.2 dev istioin src 10.244.2.1
10.244.2.3 via 192.168.126.2 dev istioin src 10.244.2.1
10.244.2.5 via 192.168.126.2 dev istioin src 10.244.2.1
10.244.2.7 via 192.168.126.2 dev istioin src 10.244.2.1
10.244.2.8 via 192.168.126.2 dev istioin src 10.244.2.1
10.244.2.10 dev veth6cc9a213 scope link
~ docker exec ambient-worker2 ip route show table 101
default via 192.168.127.2 dev istioout
10.244.2.10 dev veth6cc9a213 scope link
~ docker exec ambient-worker2 ip route show table 102
default via 10.244.2.10 dev veth6cc9a213 onlink
10.244.2.10 dev veth6cc9a213 scope link
~ k get pod -n istio-system -ocustom-columns=NAME:.metadata.name,IP:.status.podIP,NODE:.spec.nodeName|grep 10.244.2.10
ztunnel-gzlxs 10.244.2.10 ambient-worker2
可以看到,该节点上
。。。。。 未完待续
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有