Kubernetes 网络、监控技术全面解读云计算

来源:互联网 / 作者:SKY / 2019-06-21 18:10 / 点击:
如果从资源利用的角度划分,云计算可以划分为两个类型,类型一:基于传统虚拟化构建的云,这是目前大部分云的形态。类型二:基于容器构建的云,这是云必然的未来

宇宙文明的技术进步与其可控制的能源总量息息相关,从低到高可以确定文明发展的三种类型:类型一、能够充分利用行星资源;类型二、能够收集整个恒星系统的能源;类型三、可以利用星系系统的能源。

—— 1964年,天体物理学家尼古拉-卡尔达舍夫

如果从资源利用的角度划分,云计算可以划分为两个类型,类型一:基于传统虚拟化构建的云,这是目前大部分云的形态。类型二:基于容器构建的云,这是云必然的未来。容器对资源的利用率要提高一个数量级,更重要的是颗粒度更细,自动化程度更高。容器是传统虚拟化效率的数百倍,滚滚洪流,不可阻挡。

更高的类型,也意味着更复杂,笔者尤其关注容器云在网络、监控两方面面临巨大的挑战。

一、容器常见的网络解决方案概述和对比

容器常见的网络标准有两种,分别是Docker公司提出的CNM(Container Network Model),和CoreOS公司提出的CNI(Container Network Interface)。

1. CNM介绍

Libnetwork是CNM规范的规范实现,Libnetwork提供Docker守护程序和网络驱动程序之间的接口。网络控制器负责将驱动程序与网络配对。每个驱动程序负责管理其拥有的网络,包括提供给该网络的服务。 每个网络有一个驱动程序,多个驱动程序可以与连接到多个网络的容器同时使用。

Kubernetes 网络、监控技术全面解读


Libnetwork提供Docker守护程序和网络驱动程序之间的接口,图来源:thenewstack

2. CNI介绍

Kubernetes 网络、监控技术全面解读

CNI已经成为云原生应用基金会(CNCF)的正式项目,用于编写插件以配置Linux容器中的网络接口。CNI仅关注容器的网络连接并在删除容器时删除分配的资源。CNI提供了广泛的支持,并且规范易于实现,支持第三方插件。

Kubernetes 网络、监控技术全面解读


CNI是向网络添加和删除容器的最小规范,图来源:thenewstack.io

目前主流的容器云都是基于Kubernetes构建,CNI也是Kubernetes所采用的网络标准。常见的CNI网络插件有:

Kubernetes 网络、监控技术全面解读


图来自于网络,出处不可考

1)常见的CNI插件介绍

Calico:Calico使用纯L3方法提供简单,可扩展的网络。Calico还提供无状态IP-in-IP模式,除了可扩展的网络,Calico还提供策略隔离。Calico是一个基于BGP的纯三层的数据中心网络方案(不需要Overlay)。

Flannel:flannel一种简单易用的方法,可以配置为Kubernetes设计的layer3网络结构。flannel基于Linux TUN/TAP,使用UDP封装IP包来创建overlay网络,并借助etcd维护网络的分配情况。

Canal:Canal支持Flannel和Calico,提供开箱即用的VXLAN网络,同时还允许利用Calico策略隔离。

Cilium:Cilium是一个开源软件,用于透明地提供和保护使用Kubernetes、Docker和Mesos等Linux容器管理平台部署的应用程序服务之间的网络和API连接。Cilium的基础是名为BPF的新Linux内核技术,它可以在Linux本身内动态插入强大的安全性、可见性和网络控制逻辑。

kopeio-networking:kopeio-networking是专为Kubernetes而设计的,充分利用了Kubernetes API,因此更简单,更可靠。

kube-router:Kube-router是专为Kubernetes打造的专用网络解决方案,旨在提供操作简单性和性能。Kube-router将pod网络解决方案,服务代理和网络策略实施器作为一体化解决方案。

Romana:Romana为pod网络使用标准的第3层网络。Romana支持Kubernetes网络策略API,使群集跨网络可用区域分割,Romana支持各种网络拓扑,包括第2层和第3层网络。节点之间的路由在本地安装,必要时使用BGP或OSPF分发到网络设备。

Weave Net:Weave Net支持多主机容器网络,可以跨越不同的云网络配置,简化Kubernetes上运行的旧工作负载。

2)CNI插件项目Forks数量比较

Kubernetes 网络、监控技术全面解读


Github上被Forks的数量对比,图来源chrislovecnm.com

3)CNI插件项目10Gbit网络下的CPU消耗比较

Kubernetes 网络、监控技术全面解读


10Gbit网络下的CPU消耗比较,图来源itnext.io

由于篇幅所限,本文仅对CNI插件做简单介绍,如果对CNI插件有进一步兴趣,可以查阅相关项目官方文档。

二、Kubernetes的监控解决方案介绍

Kubernetes因为状态一直动态变化,因此监控也是一个难点,常见的监控工具有:

Kubelet: Kubelet通过Kubernetes API服务器监视PodSpecs,并收集资源利用率统计信息以及pod和事件状态。

cAdvisor:cAdvisor是一个开源容器资源使用和性能分析代理,专为容器而构建。在Kubernetes中,cAdvisor被集成到Kubelet二进制文件中。cAdvisor自动发现机器中的所有容器,并收集CPU,内存,文件系统和网络使用情况统计信息。

Prometheus:Prometheus可以原生地监测Kubernetes,Prometheus Operator简化了Kubernetes上的Prometheus设置,并允许使用Prometheus适配器提供自定义指标API。 Prometheus提供强大的查询语言和内置仪表板,用于查询和可视化数据。

阅读延展

1
3