企业在上云过程中新的技术不断引入,中国信息通信研究院的调查报告显示,2019年43.9%的被访企业已经使用容器技术部署业务应用,计划使用容器技术部署业务应用的企业占比为40.8%;28.9%的企业已经使用微服务架构进行应用系统开发,另外有46.8%的企业计划使用微服务架构。继SDN之后容器、微服务、DevOps等为代表的云原生技术,大大提高了企业上云的敏捷性、弹性和云间的可移植性,使其基础设施不断云化的同时不可避免地遇到虚拟网络的黑盒难题。容器网络固有的波动特性成为监控诊断的最大挑战,CNCF的报告指出,容器的网络和安全已成为容器云平台建设最主要的挑战,当企业将重要的核心应用迁移至容器平台,企业必须获取全网的流量数据并在此基础上绘制网络知识图谱以实现对全网状态的可视化。
为了解决隔离性和跨节点的容器通信,Overlay Network成为众多企业建设容器网络方案的首选。新型容器网络分为两大类——隧道方案和路由方案。目前常见的容器网络方案通常基于CNI实现,包括Flannel、Calico、Weave Net、Contiv、NSX-T Container Plugin (NCP)、OpenShift-SDN等,其中Flannel-VXLAN、Calico-IPIP、Weave Net、Contiv-VXLAN、NCP、OpenShift-SDN都是基于Overlay隧道实现,而Flannel-HostGW、Calico-BGP、Contiv-BGP都是基于路由方式实现。此外,还有完全依赖Underlay实现的网络方案,如SR-IOV、MACVLAN、IPVLAN等。隧道方案对底层的网络没有过高的要求,但随着节点规模的增长复杂度会提升,对网络问题的排查将变得更为困难。
企业上云之后,其业务的应用架构逐渐走向微服务化/容器化,业务和网络结合的越来越紧密。容器云平台比以往任何的基础架构平台更加的接近业务,同时也包含了更多的层级和组件,因此也带来了更多的风险;在容器云平台内部,默认的网络模型在东西向访问隔离方面缺少必要的安全保障。在微服务架构中,服务间的网络监控是业务保障中重要部分;在容器网络中,POD间的网络流量迫切需要工具手段进行监控保障。获取完整的网络流量尤其是虚拟网络和容器网络的流量是解决虚拟网络黑盒问题、保障业务上云的连续性和安全性的重要前提。企业需要构建统一的云监控平台,使其具备全网流量采集和全面可视化能力,实现业务上云后的可视、可管、可控以及快速排障。
对于建设全网流量监控与可视化方案的介绍请参照云杉网络混合云网络监控诊断方案的论述。下文将针对容器网络的流量监控与可视化进行展开。在建设容器网络流量监控与可视化实践中需注意以下原则:
a)功能一体化:在覆盖容器资源池的同时要能兼容KVM、VMware、公有云、裸金属等异构资源池的虚拟网络,同时兼具多租户服务能力,避免重复建设和复杂管理。此外,方案须具备容器业务的梳理和画像能力,为流量可视化奠定基础。
b)架构云原生:监控平台自身必须是云原生架构,充分考虑和满足企业上云的弹性需求,在适配不同容器环境的同时确保对主流私有云、公有云等混合云环境的统一监控。当企业对容器业务进行跨资源池弹性部署时,方案应具备自动跟随能力。
c)部署少侵扰:整个方案的部署应尽可能地避免对现有生产环境产生影响,对不同的容器环境须采用与之匹配的技术方案,在进行容器流量采集部署时满足平滑部署且保证业务不间断,确保对计算资源的消耗安全可控。
d)数据标准化:企业IT环境往往是复杂和异构的现状,其监控系统中的工具和数据也多种多样。容器网络的流量数据不可避免地要被多类终端或平台消费,因此监控数据须遵循开放标准,确保企业现有的分析工具可以无缝使用。
虚拟化在资源使用率、灵活性和弹性方面不如容器,容器在微服务、DevOps、分布式等方面天生具备优势,因此成为数据中心新一代云基础架构的选择。Kubernetes凭借着其优良的架构,灵活的扩展能力,丰富的应用编排模型,成为了容器编排领域的事实标准,也是企业进行容器云平台建设的首选。
容器环境中的常见故障一般有三类。应用类故障通常表现为应用的执行状态和预期不符;容器故障通常表现为无法正确的创建、停止或更新容器;集群故障通常表现为不满足一致性或无法连接。企业在容器环境部署及管理方案中,对于系统监控报警功能会更多地关注Prometheus,并结合Grafana、Zabbix等开源工具以解决容器网络监控保障的难题,但所能获取的指标数据和展示维度相对有限,尤其是当容器资源池规模继续扩容后,上述工具的扩展性和部署问题将难以满足深入的分析需求。以容器Host模式为例,通常每个节点运行100~200个Pod,获取每个Pod的网络流量并结合全网流量数据,实现秒粒度的查询分析并不是一件容易的事。
云杉网络多年以来专注云数据中心网络的监、管、控方案及SDN软件产品的研发。主打产品DeepFlow(R)基于高效的混合云流量全网采集和时序数据存储检索技术,为客户提供混合云全网流量采集与分发解决方案和混合云网络性能监控诊断解决方案。在容器网络环境中,应用的水平扩展、网络的可达性、配置管理、服务依赖、集群一致性等方面都存在技术难题,DeepFlow(R)平台通过对容器平台(如Kubernetes)进行对接,主动学习容器环境中的相关信息,包括集群(Cluster)、节点(Node)、Pod、服务(Service)、Ingress等;采集器根据容器环境共有容器OnVM采集器、容器OnHost采集器两种规格,满足不同容器资源池内的流量采集和过滤。在“业务画像”功能中创建业务,并加入相关的资源组、归类IP、功能服务、链路,描述业务应用的网络访问路径。采集器将资源池内的流量按业务画像梳理出来的规则过滤,实现业务应用端到端访问的网络监控与诊断。
针对容器中的重点业务应用,需要将其纳入监控系统视图进行持续关注;在网络图谱中,从区域、节点、Pod、IP等多个维度查询展示容器业务;在整条业务路径中,分段排查网络状态,快速缩小问题范围,定位异常原因;回溯定位网络流、数据包进行分析取证。
DeepFlow(R)平台从以下角度对容器网络监控进行了创新:
首先,针对异构资源池,构建了统一的采集抽象层。DeepFlow(R)支持主流容器厂商产品、Kubernetes、KVM、ESXi、公有云Workload、专属服务器等环境,满足企业一体化监控平台建设目标。
其次,DeepFlow(R)采用开放架构设计,具备良好的可扩展性和兼容性;一套平台可解决云上网络性能监控、基础设施监控、应用性能监控需求。有利于企业监控体系数据标准化的实现。
第三,DeepFlow(R)自主设计的可视化资源知识图谱,能从十几个维度动态关联监控数据的属性,全景展现容器网络的运行状态。例如容器节点、命名空间、服务、Deployment、ReplicaSet、POD、区域、可用区、VPC、子网、IP等维度。