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

栏目: 编程工具 · 发布时间: 5年前

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

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

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

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

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

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

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

1. CNM介绍

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

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

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

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提供强大的查询语言和内置仪表板,用于查询和可视化数据。

  • Sysdig: Sysdig将来自系统调用,Kubernetes事件,Prometheus指标,statsD,JMX等的数据整合到一个页面中,从而提供环境的全面信息。Sysdig还提供了API来查询,以提供强大且可定制的解决方案。Sysdig和Sysdig Inspect能够自由地执行故障排除,性能分析和取证。

  • Jaeger: Jaeger是优步科技发布的追踪系统,用于在复杂的分布式系统中进行故障排除和监控事务。

  • Weave Scope: Weave Scope是Weaveworks开发的监控工具。Weave Scope在Kubernetes集群中生成进程,容器和主机的映射,以帮助实时了解Docker容器。还可基于 图形UI 管理容器并在容器上运行诊断命令。

目前主流的 Kubernetes监控方式 通过Prometheus,通过Grafana展现。

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

通过Prometheus监控Kubernetes,通过Grafana展现,图来源:grafana.com

从上面的介绍可以看出,Kubernetes在网络、服务状态、监控方面有各种解决方案,每种解决方案可以说都有优缺点。笔者最近参加了UCloud的TIC大会,现场听了UCloud优刻得实验室负责人叶理灯关于Kubernetes的一个分享, 叶理灯的分享干货很多,比如基于RBAC实现账号管理隔离,有状态和无状态服务的管理。笔者特别关注了 UCloud在Kubernetes网络和监控解决方案的独到之处,和大家分享下。

三、KUN和UK8S网络和监控几个厉害的玩法

叶理灯介绍了UCloud基于Kubernetes打造的内部容器云平台(简称KUN)和针对外部用户的容器管理服务UK8S。KUN的主要实现方法之一是K8S+Docker,通过Docker提高运维部署效率和运维环境的一致性,通过K8S实现跨可用区容灾和Auto Scaling能力,从而实现高可用、在线升级、自动扩缩、负载均衡、日志查看、资源监控等多种功能。而UK8S可以让用户直接在上面部署、管理、扩展容器化应⽤,⽽⽆需关⼼Kubernetes集群⾃身的搭建及维护等运维类⼯作。 UK8S完全兼容原⽣的Kubernetes API,以UCloud私有⽹络为基础,并整合了ULB、UDisk、EIP、VPC等云产品。

1. UK8S网络特点-连放五个大招

UK8S在网络上有五个大招,全面支持IPV6,实现了容器云和现有公有云的无缝融合,并且在性能和云主机一致:

  • UK8S全面支持IPV6,并且能够做到核⼼基础⽹络⽆需修改,underlay,Pod与集群外部互通。

  • ⾃研CNI插件,与VPC⽹络深度集成

  • 利⽤SecondaryIP,API实现IP管理

  • ⽆overlay,性能与云主机⼀致

  • Pod⽹络可与物理云托管云直接互通

令人印象深刻的是,UCloud自研的CNI(Container Network Interface)插件,使 UK8S拥有与云主机等同的网络性能(目前最高可达10 Gb/s,100万pps)。

2. 一站式Kubernetes服务(UK8S)打造

在管理服务方面, UK8S支持完全的容器化和微服务化,可以确保所有管理服务全部运行在内部KUN平台上,基于KUN的API对服务模块进行动态管理; 一个集群对应生成一个Watcher,容易进行横向扩展;基于Watcher+Redis缓存的方式,保证用户在控制台获取集群信息的速度足够快,相当于用K8S管理K8S。

托管方面,采用“UK8S+托管物理机”的模式可以合理利用存量物理资源,且无需运维管理UK8S集群以及部署外部负载均衡,业务高峰可随时扩容集群,帮助用户有效利用存量IT资源。例如,Master节点部署在共有云上,Node节点分为公有云和托管云两部分,两个区的网络实现了互联互通等。

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

例如:元年科技CTO 杨熠提到:“ 使用UK8S,开发者可以像使用普通云服务器一样迅速搭建K8S环境。在享受K8S带来的便利的同时,能够让开发人员集中注意力在业务实现的细节,而不必在基础架构搭建上浪费太多的精力。 UCloud为此提供的专业、快速的服务和响应机制帮助我们成功的将整个环境从自建K8S平滑迁移到UK8S。”

3.KUN监控特点介绍

UCloud KUN的监控系统方案基于Prometheus构建,Prometheus部署于K8S集群中,使用HostPath存储数据、Metrics采集,使用 Alert Manager 聚合报警,调用 Monitor Manager 提供的 Web Hook;自研 Monitor Manager 可以实现告警信息的发送,发送渠道包括邮件和微信,告警组管理、互相监控探测功能、报警收敛;使用 Grafana 实现 Web 可视化。

笔者总结KUN监控有两个企业用户特别关心的点:

  • ⾃研 Monitor Manager:实现告警信息的发送,发送渠道包括邮件和微信,告警组管理,互相监控探测功能,报警收敛。

  • 监控系统⾼可⽤:冗余部署每个 AZ 下运⾏⼀个 Prometheus,各个 Prometheus 独⽴运⾏,采集同样的数据;每个 AZ 下运⾏⼀个 Alert Manager,每个 Alert Manager 接受两个 Prometheus 的消息,他们之间互为 peer,去除冗余报警。

为了 实现监控系统的高可用,UCloud采取了冗余部署方案, Monitor Manager 部署在 K8S集群之外,跨AZ部署互相监控;通过微信和听云从外部对 Monitor Manager 进行监控;Prometheus 配置DeadMansSwitch 规则,实现一个永远触发的告警,MonitorManager 对其进行检测,当较长时间没有收到报警时,说明监控告警系统不工作了,发出告警;Grafana 使用 PVC 进行配置文件的存储。

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

4. 一个终极厉害的玩法

因为UK8S在网络上能够做到和公有云全面融合,还可以有一个厉害的玩法--平滑迁移。 因为Pod具有与VM等同的⽹络待遇,让VM与容器混合部署成为可能,也让业务迁移到K8S更简单。

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

总结:使用UK8S,就是抓住未来

Kubernetes已经发布整整5年了,但是Kubernetes还在飞速发展,丝毫没有停下来的迹象,相反还在不断攻城略地,Kubernetes就是现在明显能抓住的未来。在Kubernetes落地过程中,网络和监控面临很大挑战,也有很多解决方案。 UCloud在云计算方面有将近十年的技术积累,推出的UK8S托管方案,如利剑出鞘,斩断任何容器难题,让用户轻松步入容器时代,使用UK8S,就是抓住未来。

↓↓ 点击"阅读原文" 【加入云技术社区】

相关阅读:

2019 Kubernetes 六大趋势预测

Twitter 抛弃 Mesos,全面转向 Kubernetes

2018年Kubernetes 四大趋势预测

Kubernetes 在宜信落地实践

Kubernetes 添加永久存储的挑战

RightScale 2019年云状况调查报告:35% 的云支出被浪费「附50页PDF下载」

2018年云计算九大趋势热词:Serverless、混合云、多云、中台、边缘计算等「附下载」

更多文章 请关注

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

文章好看点这里[在看]:point_down:


以上所述就是小编给大家介绍的《Kubernetes 网络、监控技术全面解读!》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript DOM编程艺术 (第2版)

JavaScript DOM编程艺术 (第2版)

[英] Jeremy Keith、[加] Jeffrey Sambells / 杨涛、王建桥、杨晓云 等 / 人民邮电出版社 / 2011-4 / 49.00元

JavaScript是Web开发中最重要的一门语言,它强大而优美。无论是桌面开发,还是移动应用。JavaScript都是必须掌握的技术。W3C的DOM标准是开发Web应用的基石。已经得到所有现代浏览器的支持,这使得跨平台Web开发成了一件轻松惬意的事。 本书是超级畅销书的升级版,由倡导Web标准的领军人物执笔,揭示了前端开发的真谛,是学习JavaScript和DOM开发的必读之作。 本......一起来看看 《JavaScript DOM编程艺术 (第2版)》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

图片转BASE64编码
图片转BASE64编码

在线图片转Base64编码工具

MD5 加密
MD5 加密

MD5 加密工具