开源Cillium项目为容器带来了强大的网络功能网络一直是使用容器时最头疼的问题之一。即使是谷歌开源的容器集群管理系统Kubernetes,尽管它正在迅速成为容器编排的领先技术,但在实现网络功能方面也存在局限性。这使得网络安全等棘手问题变得更加困难。现在,一个名为Cilium的开源项目正试图为容器提供一种基于Linux内核中使用的技术的新网络方法——该项目部分由谷歌赞助,旨在为容器提供更好的网络安全性和安全性。更简单的网络模型。BPF方式的网络Linux中的网络安全机制(例如iptables)通常只适用于网络、数据包和地址级别,即OSI模型的第3层。这些机制无法与HTTP等协议对话。Cilium使用Linux的伯克利数据过滤(BPF)技术在网络级别和HTTP级别为Docker容器或Kubernetespod实施网络安全策略。BPF是在Linux2.5中引入的,此后成为内核中的一个稳定特性。得益于BPF,可以在内核中编译和运行提供网络过滤机制和性能分析和跟踪分析的小程序。根据Cilium的GitHub代码库文档,Cilium的工作原理是生成可以直接与容器一起运行的内核级BPF程序。Cilium可以为每个容器分配一个IPv6地址(或另外一个IPv4地址),并使用容器标签而不是网络路由规则来强制隔离容器,而不是为容器创建覆盖网络。它还包括用于处理Cilium策略的创建和执行的编排系统的集成。Cilium使用BPF的两个主要原因是速度和便利性。BPF程序被编译为本地机器代码,因此它们的运行速度与任何其他内核代码一样快。Cilium使用的BPF程序的更改不需要重新启动,甚至不需要重新启动容器。Cilium的开发人员还声称BPF程序针对每个容器进行了优化,因此“容器不需要的功能根本不需要编译”。这是实验性的,但最终是必不可少的。Cilium的一个潜在问题是它需要一个最新版本的Linux内核:4.8.0或更高版本,推荐4.9.17,并且需要LLVM3.7.1或更高版本。话虽如此,Cilium的功能集并不依赖于任何特定的Linux发行版——比如,“添加Linux内核不提供的额外统计信息”或“额外的转发逻辑”。Cilium是一种用于容器处理网络功能的实验性解决方案,但仍有足够的空间采用多种方法——即使在Docker发展的现阶段也是如此。Docker最初的网络方法笨重且难以管理,因此该公司购买了SocketPlane并将其类似于OpenDaylight的网络结构添加到Docker1.9中。该解决方案默认与Docker一起提供,但理论上可以换成与DockerAPI兼容的其他网络产品。Cilium的美妙之处在于它是按照与容器相同的方式构建的,使用现有的Linux内核技术;Docker风格的容器实际上重新封装了Linux内核中长期存在的功能。同样,Cilium与已经存在一段时间的现有技术兼容,具有一套清晰的使用场景,并且与容器本身一样接近内核中的容器层。原标题:Linuxkernelholdskeyforadvancedcontainernetworking,作者:SerdarYegulalp
