前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Kubernetes插件之ip-masq-agent

Kubernetes插件之ip-masq-agent

原创
作者头像
聂伟星
修改2024-08-08 12:52:47
3.5K0
修改2024-08-08 12:52:47
举报
文章被收录于专栏:腾讯云容器运维

1. ip-masq-agent简介

ip-masq-agent 配置 iptables 规则以隐藏位于集群节点 IP 地址后面的 pod 的 IP 地址。 这通常在将流量发送到集群的 podCIDR范围之外的目的地时使用。

什么是snat

源地址转换是内网地址向外访问时,发起访问的内网ip地址转换为指定的ip地址(可指定具体的服务以及相应的端口或端口范围),这可以使内网中使用保留ip地址的主机访问外部网络,即内网的多部主机可以通过一个有效的公网ip地址访问外部网络。

A公司拥有多个公网IP(60.191.82.105-107),A公司希望内部用户(IP为192.168.1.50)使用某个特定的IP(60.191.82.107)访问互联网,则需在出口路由设备上需要配置源地址转换。

2. 部署ip-masq-agent

通过运行以下 kubectl 指令创建 ip-masq-agent:

代码语言:javascript
复制
kubectl apply -f https://raw.githubusercontent.com/kubernetes-incubator/ip-masq-agent/master/ip-masq-agent.yaml

您必须同时将适当的节点标签应用于集群中希望代理运行的任何节点。

代码语言:javascript
复制
kubectl label nodes my-node beta.kubernetes.io/masq-agent-ds-ready=true

3. ip-masq-agent配置项

代理配置文件必须使用 YAML 或 JSON 语法编写,并且可能包含三个可选值:

  • nonMasqueradeCIDRs: CIDR 表示法中的字符串列表,用于指定不需伪装的地址范围。
  • masqLinkLocal: 布尔值 (true / false),表示是否将流量伪装到本地链路169.254.0.0/16 前缀,默认为 false。
  • resyncInterval: 代理尝试从磁盘重新加载配置的时间间隔。 例如 '30s',其中 's' 是秒,'ms' 是毫秒等...

4. TKE中的ip-masq-agent配置和使用

VPC 网络:10.168.0.0/16

集群网络:172.18.0.0/16

代码语言:javascript
复制
apiVersion: v1
data:
  config: '{"NonMasqueradeCIDRs":["172.16.0.0/16","10.168.0.0/16"],"MasqLinkLocal":true,"ResyncInterval":"1m0s"}'
kind: ConfigMap
metadata:
  creationTimestamp: "2020-06-02T03:16:59Z"
  name: ip-masq-agent-config
  namespace: kube-system

上述配置的意思是:访问目的网络10.168.0.0/16和 172.18.0.0/16 不做 SNAT,其他网段都做 SNAT,不对网段 169.254.0.0/16 做特殊处理,同步周期为1分钟。

节点的iptables规则

代码语言:javascript
复制
[root@VM_1_4_centos ~]# iptables -t nat -L IP-MASQ-AGENT
Chain IP-MASQ-AGENT (1 references)
target     prot opt source               destination         
RETURN     all  --  anywhere             172.16.0.0/16        /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL
RETURN     all  --  anywhere             10.168.0.0/16        /* ip-masq-agent: cluster-local traffic should not be subject to MASQUERADE */ ADDRTYPE match dst-type !LOCAL
MASQUERADE  all  --  anywhere             anywhere             /* ip-masq-agent: outbound traffic should be subject to MASQUERADE (this match must come after cluster-local CIDR matches) */ ADDRTYPE match dst-type !LOCAL

容器访问外网的数据链路图

5. 使用问题

问题1: 客户在vpc内开启了nat网关,节点上可以访问外网,但是到容器内却无法访问外网,节点上的所有pod都无法访问。

原因:这边客户之前为了不让pod访问外网修改了ip-masq-agent-config中的NonMasqueradeCIDRs为0.0.0.0/0从而导致集群内所有pod都无法上网。

解决方案:修改NonMasqueradeCIDRs,配置成pod网段和节点所在的网段。

问题2: 本地idc和云上vpc私网打通后,容器内访问idc服务,idc服务看到的来源ip是node节点ip,并不是pod的ip

原因:tke集群创建后,ip-masq-agent-config的NonMasqueradeCIDRs默认只配置集群所在的vpc网段和集群容器网段,如果是vpc-cni模式,只配置vpc网段,idc网段不在NonMasqueradeCIDRs配置里面,因此访问idc会snat为node节点ip。

解决方案:修改NonMasqueradeCIDRs,将idc的网段加进去即可。

参考链接

https://cloud.tencent.com/developer/article/1598539

https://kubernetes.io/zh/docs/tasks/administer-cluster/ip-masq-agent/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. ip-masq-agent简介
  • 2. 部署ip-masq-agent
  • 3. ip-masq-agent配置项
  • 4. TKE中的ip-masq-agent配置和使用
  • 5. 使用问题
  • 参考链接
相关产品与服务
NAT 网关
NAT 网关(NAT Gateway)提供 IP 地址转换服务,为腾讯云内资源提供高性能的 Internet 访问服务。通过 NAT 网关,在腾讯云上的资源可以更安全的访问 Internet,保护私有网络信息不直接暴露公网;您也可以通过 NAT 网关实现海量的公网访问,最大支持1000万以上的并发连接数;NAT 网关还支持 IP 级流量管控,可实时查看流量数据,帮助您快速定位异常流量,排查网络故障。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档