宇宙文明的技术进步与可控制的总能量密切相关。从低到高,可以确定三种文明发展:第一类,能够充分利用行星资源;第二类,能够收集整个恒星系统的能量;可以利用星系系统的能量。
—— 1964年,天体物理学家尼古拉·卡尔达谢夫
如果从资源利用的角度划分,云计算可以分为两种类型,类型1:基于传统虚拟化构建的云,这是大多数云的当前形式。类型2:基于容器构建的云,这是云的必然未来。容器对资源的利用率增加了一个数量级,更重要的是,粒度更细,自动化程度更高。容器的效率是传统虚拟化的数百倍,而且不可阻挡。
较高的类型也意味着更复杂。作者特别关注容器云在网络和监控方面面临的巨大挑战。
I.容器常用网络解决方案的概述和比较
容器有两种常见的网络标准:Docker提出的CNM(容器网络模型)和CoreOS提出的CNI(容器网络接口)。
1. CNM简介
Libnetwork是CNM规范的规范实现,而Libnetwork提供了Docker守护程序和网络驱动程序之间的接口。网络控制器负责将驱动程序与网络配对。每个驱动程序负责管理其拥有的网络,包括它为网络提供的服务。每个网络有一个驱动程序,多个驱动程序可以与连接到多个网络的容器同时使用。
Kubernetes网络,监控技术全面解读Libnetwork在Docker守护程序和网络驱动程序之间提供了一个接口,该接口来自newstack
2. CNI简介
Kubernetes网络,监控技术全面解读
CNI已成为Cloud Native Application Foundation(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的纯三层数据中心网络解决方案(无需覆盖)。
法兰绒:一种易于使用的法兰绒方法,可配置为由Kubernetes设计的第3层网络结构。基于Linux TUN/TAP,flannel使用UDP封装IP数据包来创建覆盖网络,并使用etcd来维护网络分配。
Canal:Canal支持Flannel和Calico,提供开箱即用的VXLAN网络,同时允许使用Calico策略隔离。
Cilium:Cilium是一个开源软件,透明地提供和保护使用Linux容器管理平台(如Kubernetes,Docker和Mesos)部署的应用程序服务之间的网络和API连接。 Cilium的基础是一种名为BPF的新Linux内核技术,可在Linux本身内动态插入强大的安全性,可见性和网络控制逻辑。
Kopeio网络:Kopeio网络专为Kubernetes设计,充分利用Kubernetes API,使其更简单,更可靠。
Kube-router:Kube-router是Kubernetes的专用网络解决方案,旨在提供操作简便性和性能。 Kube-router使用pod网络解决方案,服务代理和网络策略执行器作为一体化解决方案。Romana:Romana为pod网络使用标准的第3层网络。 Romana支持Kubernetes网络策略API,该API允许跨网络可用区域对群集进行分区。 Romana支持各种网络拓扑,包括第2层和第3层网络。节点之间的路由在本地安装,并在必要时使用BGP或OSPF分发到网络设备。
编织网:Weave Net支持多主机容器网络,该网络跨越不同的云网络配置并简化在Kubernetes上运行的旧工作负载。
2)比较CNI插件项目中的Fork数量
Kubernetes网络,监控技术全面解读
来自chrislovecnm.com的来自Github的Forks数量的比较
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是Uber Technology发布的跟踪系统,用于对复杂分布式系统中的事务进行故障排除和监控。
编织范围:Weave Scope是Weaveworks开发的一种监控工具。 Weave Scope在Kubernetes集群中生成进程,容器和主机,以帮助实时了解Docker容器。您还可以基于图形UI管理容器,并在容器上运行诊断命令。
目前主流的Kubernetes监测方法由Grafeana通过Prometheus提出。
Kubernetes网络,监控技术全面解读
由Grafana提供的Prometheus监测Kubernetes,来源:grafana.c
从上面的介绍中可以看出,Kubernetes在网络,服务状态和监控方面有各种解决方案。可以说每种解决方案都有优点和缺点。作者最近参加了UCloud的TIC会议,并听取了UCloud优秀雕刻实验室负责人Kubernetes的一部分。叶立光分享了很多干货,比如基于RBAC的账户管理隔离,国家和无国籍的服务管理。作者特别关注UCloud在Kubernetes网络和监控解决方案中的独特性,并与您分享。
第三,KUN和UK8S网络和监控几个强大的游戏
叶立光介绍了基于Kubernetes的UCloud内部容器云平台(KUN)和外部用户的容器管理服务UK8S。 KUN的主要实现方法之一是K8S + Docker,它通过Docker提高了操作和维护部署的效率以及操作和维护环境的一致性。它通过K8S实现高可用性,在线升级和自动扩展,以实现交叉可用性灾难恢复和Auto Scaling功能。各种功能,如收缩,负载平衡,日志查看和资源监控。 UK8S允许用户直接部署,管理和扩展容器化应用程序,而无需关心Kubernetes集群本身的操作和维护。 UK8S与基于UCloud专用网络的原生Kubernetes API完全兼容,并集成了ULB,UDisk,EIP和VPC等云产品。
1. UK8S网络功能 - 甚至五大动作
UK8S在网络上有五大举措,完全支持IPV6,实现容器云与现有公共云的无缝集成,以及与云主机的一致性能:
UK8S完全支持IPV6,可以在没有修改,底层,Pod和集群外部通信的情况下完成核心基础设施。自主开发的CNI插件,与VPC网络深度集成
使用SecondaryIP,API进行IP管理
没有叠加,性能与云主机一致
Pod网络可以直接与物理云托管云进行通信
令人印象深刻的是,UCloud自行开发的CNI(容器网络接口)插件使UK8S具有与云主机相同的网络性能(目前高达10 Gb/s,100万pps)。
2.一站式Kubernetes服务(UK8S)建设
在管理服务方面,UK8S支持完整的容器化和微服务,确保所有管理服务在内部KUN平台上运行,服务模块基于KUN API动态管理;一个群集对应于生成一个容易观察的Watcher。延期;基于Watcher + Redis缓存模式,用户可以保证在控制台中足够快地获取集群信息,这相当于使用K8S管理K8S。
在托管方面,“UK8S +托管物理机”模型可以合理利用库存物理资源,不需要操作和维护来管理UK8S集群并部署外部负载平衡。可以随时扩展服务峰值,以帮助用户有效利用库存IT资源。例如,主节点部署在共享云上,节点节点分为两部分:公共云和托管云。这两个领域的网络是相互联系的。
Kubernetes网络,监控技术全面解读
例如:元年科技首席技术官杨宇提到:“借助UK8S,开发人员可以像普通的云服务器一样快速构建K8S环境。在享受K8S的便利性的同时,开发人员可以专注于业务。详情,无需在基础设施建设上浪费了太多精力.UCloud专业,快速的服务和响应机制帮助我们成功地将整个环境从自建的K8S迁移到了UK8S。“
3.KUN监控功能介绍
UCloud KUN的监控系统解决方案基于Prometheus。 Prometheus部署在K8S集群中。 HostPath用于存储数据和度量标准以收集数据。警报管理器用于聚合警报并调用Monitor Manager提供的Web Hook。自行开发的Monitor Manager可以发送警报信息。使用Grafana发送渠道包括邮件和微信,报警组管理,相互监控和检测,报警收敛和Web可视化。
作者得出结论,KUN监控有两点对企业用户特别感兴趣:自主开发的Monitor Manager:实现报警信息的发送。发送通道包括邮件和微信,报警组管理,相互监控和检测功能,以及报警收敛。
监控系统的高可用性:冗余部署在每个AZ下运行一个Prometheus,每个Prometheus独立运行,收集相同的数据;在每个AZ下运行一个警报管理器,每个警报管理器接受两个Prometheus消息,它们是对等的,删除冗余警报。
为了实现监控系统的高可用性,UCloud采用冗余部署解决方案。 Monitor Manager部署在K8S群集外部,并在AZ部署中相互监视。 Monitor Manager通过微信和Listen Cloud进行外部监控; Prometheus配置DeadMansSwitch规则以实现永久触发的警报,MonitorManager检测到它。当长时间未收到告警时,表示监控告警系统不工作,并产生告警。 Grafana使用PVC来存储配置文件。
Kubernetes网络,监控技术全面解读
4.终极游戏
由于UK8S可以与网络上的公共云完全集成,因此还具有强大的游戏性 - 平稳迁移。由于Pod具有与VM相同的网络处理能力,因此可以混合VM和容器部署,并且可以更轻松地将业务迁移到K8S。
Kubernetes网络,监控技术全面解读
总结:使用UK8S是为了抓住未来
Kubernetes已经发布了五年,但Kubernetes仍在快速发展,并没有停止的迹象。相反,它仍在不断袭击这座城市。 Kubernetes是可以清晰掌握的未来。在Kubernetes登陆过程中,网络和监控面临着巨大的挑战,并且有很多解决方案。 UCloud已经积累了近10年的云计算技术。 UK8S托管解决方案,如剑出护套,切断任何容器问题,让用户轻松进入容器时代,使用UK8S,是为了抓住未来。