当前位置:网站首页>容器网络硬核技术内幕 (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)。
《易经》曰:“君子知微知彰,知柔知刚,万夫之望。”
网络中的交换机,具备了微分段能力以后,才能做到“知微知彰”,更好地适配容器网络。
下一期中,我们将详解利用微分段让容器网络更加安全的机制。
边栏推荐
- Cooler Navigation helps you shop easily in shopping malls without confusion
- :class数组写法
- Related phrases include usage and collocation (include)
- JUC Concurrent Programming Basics AQS
- Liu Genghong, boys and girls, come here!Sports data analysis and mining!(with a full set of code and data sets)
- 磁性层状双金属氢氧化物和酶-DNA复合物|聚乙烯亚胺-DNA复合物(PEI/DNA)|作用机理
- GET_ENTITYSET Method Implementation Guide for SAP ABAP OData Service Data Provider Class
- Durable rules (persistent rules engine) learning notes
- 怎么实现您的个人知识库?
- Qualcomm WLAN framework learning (31) -- Power save
猜你喜欢

GalNAc-siRNA甘露糖/半乳糖修饰脱氧核糖核酸|siRNA-S-S-DSPE(RNA修饰技术介绍)

JUC Concurrent Programming Basics AQS

WeChat Mini Program 31 Subcontracting Mechanism

全景教程丨VR全景拍摄如何拍摄日出和日落的场景?

高通WLAN框架学习(31)-- Power save

MySQL Data Query - Simple Query

OneNote 教程,如何在 OneNote 中做笔记?

单壁碳纳米管-DNA复合物(SWCNT-DNA)|作用机理

怎么实现您的个人知识库?

MySQL数据查询 - 简单查询
随机推荐
ALBERT: A Lite BERT for Self-supervised Learning of Language Representations
The Ministry of Human Resources and Social Security announced that "database operation administrator" has become a new occupation, and OceanBase participated in the formulation of occupational standar
第二好PyTorch新手课程;论文写作指南;使用µGo语言开发迷你编译器;超高效使用Transformer的扩展库;前沿论文 | ShowMeAI资讯日报
高通WLAN框架学习(31)-- Power save
打破原则!MongoDB 引入 SQL?
336. 回文对
用对象字面量或Map替代Switch/if语句
QT安装、创建项目与调试,在VS中的使用:手把手教程
如何进入董事会:给CIO的十条建议
带你刷(牛客网)C语言百题(第四天)
4. Implementation Guide for GET_ENTITYSET Method of SAP ABAP OData Service Data Provider Class
A dish hold up valuations billions of mt. Pickled fish, can move beyond the edge food safety?
如何让 x == 1 && x == 2 && x == 3 等式成立
惠普服务器硬盘指示灯不亮或显示蓝色
Use the PostgreSQL GRANT command to modify permissions on various database objects
南信大提出TIPCB,一个简单但有效的用于基于文本的人员搜索的基于部分的卷积baseline
:style中颜色使用函数动态获取赋值
一 JS中Promise用法、二闭包的概念与用法、三对象创建的四种方式与区区别、四 如何声明一个类
[Database] mysql date format conversion
PyQt5学习一(环境搭建)