前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Istio Ambient 模式流量管理实现机制详解(二)

Istio Ambient 模式流量管理实现机制详解(二)

作者头像
赵化冰
发布2022-10-04 21:24:19
4910
发布2022-10-04 21:24:19
举报

ambient 模式中,所有 pod 通过 node 上的 ztunnel 之间创建的安全通道进行通信,如下图所示:

那么 Istio 是如何将 pod 的流量发送到 ztunnel 的呢?ambient 模式采用了 iptables 规则和策略路由(Policy-based Routing)来将 pod 的流量转发到 ztunnel。下面我们以 初探 Istio Ambient 模式 中安装的 demo 为例来详细介绍 ambient 模式是如何对流量进行劫持的。

kind 集群中有三个 node,如下所示:

代码语言:javascript
复制
~ 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。

代码语言:javascript
复制
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 地址。

备注:试验环境采用的是 kind,kind 中的 node 实际上是一个 docker 容器。

代码语言:javascript
复制
~ 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

查看策略路由规则:

代码语言:javascript
复制
~ 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
代码语言:javascript
复制
~ 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
代码语言:javascript
复制
~ 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

可以看到,该节点上

。。。。。 未完待续

参考资料


本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 参考资料
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档