当前位置:网站首页>容器网络硬核技术内幕 (24) 知微知彰,知柔知刚 (上)
容器网络硬核技术内幕 (24) 知微知彰,知柔知刚 (上)
2022-07-29 20:35:00 【用户8289326】
在前几期专题中,我们已经知道,容器的安全可以通过networkpolicy来描述一个基本的约束。
然而,在kubernetes环境常用的cni插件中,常见的对networkpolicy的实现,实际上大部分是基于iptables的,也就是利用各个node上的CPU来进行软件实现。
iptables这种软件实现的好处是显而易见的。由于它是一个无状态分布式系统,理论上在node无限扩展时,它的处理能力也是无限扩展的。在超大型kubernetes集群时,可以具备近乎完全线性的性能规格扩展性。
凡事有一利必有一弊。对于节点数在50个到1000个之间的中小型的kubernetes集群,iptables的弊病就暴露出来了。
前面说到,iptables运行在每台服务器,或者说,kubernetes的每个node上。每台服务器的内部框图大致如上图:
图中,各网络适配器(网卡)通过PCI-E总线连接到CPU,而RAM也通过FSB(前端总线)与CPU相连。
网卡接收到数据包后,一方面通过DMA(Direct Memory Access)将数据包内容写入到RAM,同时,利用中断机制通知内核。Linux操作系统会在网卡中断下半部(俗称软中断)调用iptables,进行安全处理及转发。
可想而知地,中断对CPU资源的占用是巨大的,因为它会打断正常的指令流水线,并造成cacheline miss,使得服务器的CPU资源被严重浪费在等待DRAM的读写上。
对于这个问题,常见的解决方案有两种:
- 基于DPDK自行开发NFV组件实现高性能软件防火墙。但这需要使用方具备极强的开发能力,一般只适用于超大型公有云场景;
- 使用硬件交换机的ACL及防火墙机制,来实现安全机制;
解决方案2,就是我们接下来要介绍的重点。
仍然以上期描述的前端与数据库交互为例:
我们知道,在有了硬件SDN提供的CNI插件后,可以利用硬件交换机实现硬件Overlay:
那么,有没有办法在交换机上配置ACL实现frontend和db容器组之间的访问控制呢?
我们发现,在容器的世界里,IP地址与容器标签是松耦合关系——
同一类容器标签的pod,不一定在同一个网段(CIDR),而同一个网段中,又有可能有不同的容器标签……
假设db和frontend这两类pod共用网段 10.0.0.0/20,它们的IP如下表:
IP地址/掩码 | 容器标签 |
|---|---|
10.0.10.113/20 | db |
10.0.10.115/20 | db |
10.0.11.60/20 | frontend |
10.0.12.8/20 | frontend |
10.0.13.201/20 | db |
10.0.13.217/20 | frontend |
显然,在交换机上,是无法用绑定到网段的ACL来控制这两类容器的。我们需要一种比网段 + ACL更加精细的机制,来识别数据中心交换机上的端点——
这种机制叫微分段 (Micro Segmentation)。
《易经》曰:“君子知微知彰,知柔知刚,万夫之望。”
网络中的交换机,具备了微分段能力以后,才能做到“知微知彰”,更好地适配容器网络。
下一期中,我们将详解利用微分段让容器网络更加安全的机制。
边栏推荐
- LeetCode--single linked list--146.LRU cache
- 回归——分层回归
- JS实现百叶窗特效
- 剑指 Offer II 097. 子序列的数目
- Huawei laptop keyboard locked (how does the laptop keyboard light up)
- 聚丙烯微孔膜的等离子体改性及DNA|有机自由基改性DNA-阳离子脂质复合体的应用
- Cobaltstrike and BurpSuite desktop shortcut configuration
- The difference between analog, digital and switching
- GET_ENTITYSET Method Implementation Guide for SAP ABAP OData Service Data Provider Class
- The sword refers to Offer II 097. Number of subsequences
猜你喜欢

惠普服务器硬盘指示灯不亮或显示蓝色

conda virtual environment | install and list problems

ALBERT: A Lite BERT for Self-supervised Learning of Language Representations

探索创客教育在线管理实施体系

The younger brother asked: Is the work of a programmer a day’s work of code?

PEG-PEI共聚物/DNA复合物|甘草次酸修饰的长循环阳离子脂质体DNA复合物|解析说明

回归——岭回归

940. Different subsequences II

Liu Genghong, boys and girls, come here!Sports data analysis and mining!(with a full set of code and data sets)
![[ACTF2020 新生赛]Exec 1](/img/1e/a3c19d514207e6965d09c66b86e519.png)
[ACTF2020 新生赛]Exec 1
随机推荐
Dry goods!Cooperative Balance in Federated Learning
json-c实现json和结构体之间的相互转换
Oracle问题: ORA-01882: 未找到时区
刘畊宏男孩女孩看过来!运动数据分析挖掘!(附全套代码和数据集)
初识网络的简单概念
断言+异常处理类,代码更简洁了
:class数组写法
模型推理模板
一 JS中Promise用法、二闭包的概念与用法、三对象创建的四种方式与区区别、四 如何声明一个类
4. SAP ABAP OData 服务 Data Provider Class 的 GET_ENTITYSET 方法实现指南
[ACTF2020 新生赛]Exec 1
Unity determines whether a string can be converted to float type
MySQL Data Query - Simple Query
2022了你还不会『低代码』?数据科学也能玩转Low-Code啦!
Cooler Navigation helps you shop easily in shopping malls without confusion
Huawei laptop keyboard locked (how does the laptop keyboard light up)
The demand for VR live broadcast marketing is increasing, and the data module is paving the way for us
Cobaltstrike和BurpSuite桌面快捷配置
高通WLAN框架学习(31)-- Power save
The younger brother asked: Is the work of a programmer a day’s work of code?