K8S网络NAT问题分析与处理

在K8S环境中(集群环境为自建),node节点上的pod网络互联互通是采用网络插件结合etcd实现的。 默认情况下pod访问集群外部的网络(例如:访问百度)走的是对应node节点的nat规则。

最近收到研发反馈的需求,由于我们mysql这种公共服务并没有放到k8s集群内(对照生产环境使用的也是RDS这种云服务),所以从mysql的information_schema.processlist这张表查询到的客户端连接地址全部都是node节点的ip,而一个node节点上又跑了许多的微服务,这就给研发人员排查客户端连接问题带来了一定的困扰,希望运维将pod连接这些外部公共服务的IP地址改成pod ip

一、需求分析

1、Oprman服务运行在server11这个node节点上,pod ip地址为172.35.69.12

2、在node节点server11上可以看到,默认的nat表POSTROUTING规则链对pod ip这个网段进行了MASQUERADE

3、exec方式进入pod内部,去访问k8s集群外部的mysql服务,发现pod ip被nat了

二、修改node节点防火墙规则

# iptables -t nat -D POSTROUTING 1
# kubectl exec -it oprman-test2-tomcat-8477bfdb59-gshzp   /bin/sh
# mysql -h 192.168.1.20 -u root -p123456
MySQL [(none)]> select * from information_schema.processlist where host like ‘%172.35%‘;

将node节点nat表中的POSTROUTING规则链MASQUERADE规则删除,通过测试发现能符合研发的需求,但带来新的问题,无法访问外部服务。

三、改进node节点防火墙规则

# iptables -t nat -I POSTROUTING -s 172.35.69.0/24  ! -d  192.168.1.20/32  -j MASQUERADE 


添加一条新的路由策略,将目的地址不是192.168.1.20的请求进行MASQUERADE,从而实现既能满足研发需求,又能访问互联网的需求。

四、前提条件

因为网络是双向的,所以需要在公共服务所在的主机上把路由规则添加好

原文地址:http://blog.51cto.com/ylw6006/2318872

时间: 2024-11-08 23:09:55

K8S网络NAT问题分析与处理的相关文章

【Kubernetes】K8S 网络隔离 方案

参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kube-O-Contrail – get your hands dirty with Kubernetes and OpenContrail OpenContrail is an open source network virtualization platform for the cloud. Ope

k8s网络之设计与实现

k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 K8s网络设计与实现是在学习k8s网络过程中总结的内容.在学习k8s网络各种插件之前我觉得有必要先搞清楚其设计思路是怎样的,在知道其规范的情况下肯定能跟深刻理解k8s网络的各种插件.就像拥有指南针的船,才不会跑偏. 一.K8s网络设计 1.每个Pod都拥有一个独立IP地址,Pod内所有容器共享一个网络命名空间 2.集群内所有Pod都在一个直接连通的扁平网络中,可通过IP直接访问

k8s网络之Flannel网络

k8s网络主题系列: 一.k8s网络之设计与实现 二.k8s网络之Flannel网络 三.k8s网络之Calico网络 简介 Flannel是CoreOS团队针对Kubernetes设计的一个网络规划服务,简单来说,它的功能是让集群中的不同节点主机创建的Docker容器都具有全集群唯一的虚拟IP地址. 在默认的Docker配置中,每个节点上的Docker服务会分别负责所在节点容器的IP分配.这样导致的一个问题是,不同节点上容器可能获得相同的内外IP地址.并使这些容器之间能够之间通过IP地址相互找

网络数据包分析 网卡Offload

http://blog.nsfocus.net/network-packets-analysis-nic-offload/ 对于网络安全来说,网络传输数据包的捕获和分析是个基础工作,绿盟科技研究员在日常工作中,经常会捕获到一些大小远大于MTU值的数据包,经过分析这些大包的特性,发现和网卡的offload特性有关,本文对网卡Offload技术做简要描述. 文章目录 网络分片技术 网卡offload机制 发送模式 接收模式 网卡offload模式的设置 Linux windows 网卡Offload

python编写网络抓包分析脚本

python编写网络抓包分析脚本 写网络抓包分析脚本,一个称手的sniffer工具是必不可少的,我习惯用Ethereal,简单,易用,基于winpcap的一个开源的软件 Ethereal自带许多协议的 decoder,但是它的架构并不灵活,如果你要加入一个自己定义的的解码器,得去修改Ethereal的代码,再重新编译,相当的烦琐 对于一般的明文协议,没有什么问题,但是对于加密协议,比如网络游戏,客户端程序一般会在刚连接上的时候,发送一个随机密钥,而后的报文都会用这个密钥进 行加密,诸如此类.要想

基于fiddler插件开发的移动测试网络监控与分析

一.背景和目的: 由于目前App前端业务测试很少关注后端网络接口的异常情况,客户端QA在项目测试时往往局限于关注测试功能,导致测试粒度较粗.即使按照CheckList过功能点,客户端QA对后端接口的覆盖情况也很难做到明确把握. Fiddler是我们在客户端测试时使用比较普遍的工具,常用于HTTP抓包.构造请求等等.原生的fiddler插件,缺乏对包大小,网络请求时长.接口访问频次.接口覆盖度等维度进行网络请求的分析,同时提供网速控制的功能,下文介绍开发定制fiddler插件辅助app业务测试.

Linux内核--网络栈实现分析(七)--数据包的传递过程(下)

本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7545855 更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析.”(下)“表示分析是从上向下分析. 在博文Linux内核--网络栈

Linux内核--网络栈实现分析(十一)--驱动程序层(下)

本文分析基于Linux Kernel 1.2.13 原创作品,转载请标明http://blog.csdn.net/yming0221/article/details/7555870 更多请查看专栏,地址http://blog.csdn.net/column/details/linux-kernel-net.html 作者:闫明 注:标题中的”(上)“,”(下)“表示分析过程基于数据包的传递方向:”(上)“表示分析是从底层向上分析.”(下)“表示分析是从上向下分析. 在博文Linux内核--网络栈

2017年11月11日软考网络工程师案例分析真题及答案解析

[徐朋出品,必属精品]软考徐朋老师全网最先发布2017年11月11日软考网络工程师案例分析真题及答案解析,是全网最清新版本.详细讲解了2017年11月11日最新开考的软考网络工程师案例分析真题及答案.课件中对每一道真题都进行了详细的解析讲解,考后几周是学员记忆答案的最关键时间点,第一时间发布真题及答案帮助广大考生准确评估自己的考试结果及对未来参加考试的学员展示最新的考试趋势等.下载地址:http://down.51cto.com/data/2340424