`

Kubernetes之Pod访问内外网

 
阅读更多

Kubernetes集群装好后,如果Pod的ip无法访问或者Pod无法访问外部host ip。可通过如下步骤添加Iptables规则,已验证。

 

step 1:

通过route 查询flannel名称信息,如 flannel.1

step 2:

ifconfig 查询flannel 的 ip信息,如 ifconfig flannel.1

flannel.1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1450
        inet 192.244.3.0  netmask 255.255.255.255  broadcast 0.0.0.0

 step 3:

添加路由规则

iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -F
iptables -L -n
iptables -t nat -I POSTROUTING -s 192.244.3.0/24 -j MASQUERADE

参数说明:

-L 显示所选链的所有规则。

-n 数字输出。

-F 清空所选链。这等于把所有规则一个个的删除。

-t 这个选项指定命令要操作的匹配包的表。如果内核被配置为自动加载模块,这时若模块没有加载,(系统)将尝试(为该表)加载适合的模块。这些表如下: filter,这是默认的表,包含了内建的链INPUT(处理进入的包)、FORWORD(处理通过的包)和OUTPUT(处理本地生成的包)。nat, 这个表被查询时表示遇到了产生新的连接的包,由三个内建的链构成:PREROUTING (修改到来的包)、OUTPUT(修改路由之前本地的包)、POSTROUTING(修改准备出去的包)。mangle 这个表用来对指定的包进行修改。它有两个内建规则:PREROUTING(修改路由之前进入的包)和OUTPUT(修改路由之前本地的包)。

MASQUERADE 
只用于nat表的POSTROUTING链。只能用于动态获取IP(拨号)连接:如果你拥有静态IP地址,你要用 SNAT。伪装相当于给包发出时所经过接口的IP地址设置一个映像,当接口关闭连接会终止。这是因为当下一次拨号时未必是相同的接口地址(以后所有建立的 连接都将关闭)。

iptables更详细信息转载:

https://www.cnblogs.com/yinzhengjie/p/6256727.html

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics