在线客服 客服软件
在线客服系统

满足这7个要求,你就能在Kubernetes中优化流量和强化安全!

满足这7个要求,你就能在Kubernetes中优化流量和强化安全!

Portworx于2018年进行的一项调查表明,五分之四的企业目前正在运行容器,其中83%的企业在生产环境中运行容器。鉴于2017年只有67%的企业这样做,很显然容器并非昙花一现。

Kubernetes因其能提供极为出色的基础架构,而被无数的公司广泛采用,它也成为了目前最流行的容器编排和集群管理工具之一。在Kubernetes诞生5周年之际,最近福布斯在其发布的一篇文章中,将Kubernetes称为“我们这个时代最受欢迎的开源项目”,并透露Capital One、ING Group、飞利浦、VMware和华为等公司都在使用Kubernetes。

虽然应用广泛,但仍然有些企业难以在Kubernetes中获得高效的流量,并有效地实施安全策略。因此,企业必须了解Kubernetes在流量和安全方面的独特要求。

在本文中,我们将详细介绍:

  • Kubernetes是什么?

  • Kubernetes环境中的挑战

  • Kubernetes中,最重要的流量和安全要求有哪些?

  • 关于简化开发运维的其他考虑因素。

Kubernetes是什么?

Kubernetes是一个开源的容器编排系统。根据Kubernetes自己的定义,它是一个可移植且可扩展的程序,用于管理容器化的工作负载和服务,并提供以容器为中心的管理环境。

让我们通过一个示意图来理解Kubernetes的基本工作方式。在下图中,你可以看到一个主(master)节点和两个工作(worker)节点。主节点负责为工作节点安排任务,而工作节点则负责执行对其下达的指令。添加更多的Kubernetes工作节点,即可扩展基础设施。

如果仔细观察,你会发现,每个部分都会出现“Docker”这个词。Docker是一个容器平台,非常适合在单一硬件或虚拟机(VM)上运行容器。

但是,如果要处理多个不同应用间的数百个容器,你肯定不希望将它们全都放在一台计算机上。Kubernetes正是为了解决此类挑战应运而生。

有了覆盖网络(如上图中的红色横条所示),主节点中的容器不必知道它要与之通信的容器位于两个工作节点中的哪个。只要能正常地与之通信,即可。

Kubernetes的另一个主要功能是将信息打包成所谓的“pod”,多个pod可在同一个节点内运行。这样,如果一个应用中包括多个容器,可将这些容器组合成一个pod,作为一个整体同时启动和停止。

Kubernetes 环境中的挑战

与其他所有容器编排系统一样,Kubernetes本身也要面对一系列问题。

其中包括:

隔离的内部和外部网络

Kubernetes的网络不是传统网络,尽管它使用了覆盖网络,但内部网络和外部网彼此相互隔离。

Pod和容器的IP地址可以被更改

Kubernetes会故意隔离异常或故障的节点或pod,以防止它们导致整个应用崩溃。这可能导致节点IP 地址频繁更改。那么,需要知道pod或容器的 IP地址的服务就必须弄清楚新的IP地址是什么。

微服务之间没有访问控制

考虑微服务之间的访问控制时,企业必须意识到Kubernetes节点之间的流量也能够流向外部物理计算机或VM。这可能会耗尽系统资源并削弱安全性。

不提供应用层的可见性

无法在应用层检查信息也是一个大问题。没有这种可见性,企业可能会错失收集详细分析和可行洞察的重要机会。

Kubernetes和云的安全要求

我们已经讨论了Kubernetes的基本功能以及它所带来的挑战。现在,我们将继续讨论Kubernetes和云的安全性要求,这源自A10 Networks 15年的安全经验。

我们将讨论7项要求:

1

高级应用交付控制器 (ADC)

2

保持负载均衡器(LB)配置与基础设施同步

3

南北流量的安全性

4

用于大型部署的中央控制器

5

微服务之间的访问控制

6

东西流量的加密

7

应用流量分析

下面我们更深入地研究每一项要求。

1

 高级应用交付控制器

虽然企业可能已经在基础设施的其他方面使用了高级应用交付控制器,但还是必须为Kubernetes部署一个高级应用交付控制器。这样与Kubernetes默认提供的功能相比,管理员可以更好地执行负载均衡。

Kubernetes已经配备了一个名为kube-proxy的网络代理。它的设计宗旨是简单易用,作用是调整第三层中的IP表规则。但这是非常基本的功能,并且与大多数企业所习惯的功能完全不同。

很多人将ADC或负载均衡器放在自己云的上方。这样就能创建一个静态的虚拟 IP,供所有人使用,并可动态配置所有内容。

当pod和容器启动时,可以动态配置ADC,以提供对新应用的访问权限,同时实施网络安全策略,并在某些情况下执行业务数据规则。这通常使用“入口控制器”来实现,这种控制器看到新的pod和容器启动就会采取行动:要么配置ADC,以提供对新应用的访问权限;要么将此变更,通知另一个“Kubernetes控制器”节点。

2

 保持负载均衡器配置与基础设施同步

由于Kubernetes云中的一切都可能在不断变化,因此位于其上方的计算机根本没有实用的方法来跟踪所有变更。除非你有上图中紫色方框所示的装置。

这个紫色方框通常称为入口控制器。当容器启动或停止时,它会在Kubernetes中创建一个事件。然后,入口控制器会识别该事件,并相应地进行响应。

在上图的示例中,入口控制器正在识别容器已启动,因此必须转到负载均衡池。这样,无论在云上还是在云中的应用控制器都能掌握最新的信息。这极大地减轻了管理员的负担,并且比手动管理要高效得多。

3

 南北流量的安全性

南北和东西都是描述流量方向的通用术语。南北流量是指流入和流出 Kubernetes云的流量。

如前所述,企业需要在Kubernetes云之上部署某种设备来观察流量。例如,防火墙、DDoS防御系统或任何其他可以捕获恶意流量的系统。

这些设备在流量管理方面也很有用。因此,如果有流量需要前往特定的地点,这些设备正是理想之选。入口控制器在这方面也很有帮助。

如果企业可以使用统一的解决方案,自动执行此类功能,他们可以实现:

  • 简化运营

  • 更好的应用性能

  • 控制点,让后端变更不再干扰前端操作

  • 自动安全策略

4

 用于大型部署的中央控制器

横向扩展是企业需要考虑的另一个因素,尤其是在安全性方面。

如上图所示,入口控制器(用紫色方框表示)已经存在,但这次它负责处理多个Kubernetes节点并观察整个Kubernetes集群。

入口控制器上方有一个蓝色圆圈,在此处代表A10 Networks Harmony控制器。这种控制器可实现高效的负载分配,并且可以快速地将信息发送到适当的位置。

借助此类中央控制器,可在现有解决方案的基础上几乎无需增加额外配置,就能处理各种收缩和扩展。

5

 微服务之间的访问控制

与流入和流出Kubernetes云的南北流量不同,东西流量在Kubernetes节点之间流动。在上图中,可以看到许多企业的东西流量的运作方式。

当流量在Kubernetes节点之间流动时,可能会经过物理网络、虚拟或覆盖网络,或者两种网络的组合。如果没有办法监控这些东西流量,要记录流量如何从一个pod或容器流向另一个pod或容器将会变得非常复杂。

此外,它还会带来严重的安全风险:获得一个容器访问权限的攻击者可以访问整个内部网络。

幸运的是,企业可以实施一种称为“服务网格”的工具,比如A10安全服务网格。它将充当容器之间的代理,可以实施安全规则来保护东西流量,并且还能帮助企业实现扩展、负载均衡、服务监控等。

此外,服务网格可以在Kubernetes云内部运行,无需将流量发送至物理计算机或虚拟机。以下是使用高效服务网格时,东西流量的情况:

利用此类解决方案,诸如金融机构等企业可以轻松地将信息保存在适当的位置,不会破坏安全性。

6

 东西流量的加密

如果没有适当的加密,未加密信息可以从Kubernetes的一个物理节点流向另一个物理节点。这会带来一个严重的问题,对于金融机构和处理特别敏感信息的其他企业更是如此。

所以,在评估云安全产品时,企业选择的产品应在流量离开节点时对其进行加密,并在流量进入节点时对其进行解密,这一点非常重要。

供应商提供此类保护的方式有两种:

第一种选择是部署sidecar代理,这可以说是最流行的做法。

部署完成后,管理员可以告知Kubernetes:无论某个pod何时启动,该pod中的一个或多个其他容器都应该启动。

通常情况下,其他容器是某种类型的代理,可以管理流出pod的流量。

部署sidecar代理的缺点是(如上图所示),它需要多个实例(即sidecar),因此会占用一定数量的资源。

另一方面,企业可以选择部署中心辐射式代理。在此类部署中,由一个代理处理流出每个Kubernetes节点的流量。因此所需的资源比较少。

7

 应用流量分析

最后但绝不能忽视的一点是,企业要了解应用层流量的详细信息,这一点至关重要。

有了控制器来监控南北流量和东西流量,就确定了两处收集流量信息的理想位置。

这样做有助于应用优化和安全性,并可实现多种不同的功能。这些功能从最简单到最高级列出如下:

  • 性能监控,通过描述性分析实现。大多数供应商都会提供此功能。

  • 快速故障排除,通过诊断分析实现。提供此功能的供应商会少一些。

  • 洞察,通过机器学习系统生成的预测性分析来获得洞察。提供此功能的供应商更少。

  • 自适应控制,通过真正直观的AI生成的规范性分析来实现。只有最佳和最领先的供应商才能提供此功能。

因此,企业与供应商交流时,必须确定其产品可以提供哪些优势。

借助A10 Networks的产品,您可以查看全局分析内容以及所关心的单个数据包、日志条目或事务。企业应该寻求具有此类精细功能的产品。

关于简化开发运维的其他考虑因素

总结一下,让我们看看企业在Kubernetes的流量和安全性方面应该考虑的因素。所有这些考虑因素也有利于大幅简化开发和运维团队的工作:

使用统一解决方案,实现简单的架构。

集中管理和控制,便于分析和故障排除。

YAML和JSON等常见的配置格式,Kubernetes也使用这些格式。

无需更改应用代码或配置即可实施安全性并收集分析信息。

自动应用安全策略。

如果企业优先考虑了这些要求,将能在 Kubernetes 中尽享简化、自动化和安全的流量。这对您的硬件、公司利益和运营团队都有好处。