云原生漫游指南(3)| 从容器网络建设说起
上一期《云原生漫游指南(2)丨从CI&CD到计算存储分离》的最后,我们介绍了计算存储分离如何提升容器的灵活性。解决了容器的构建、运行和编排,接下来我们需要进行容器网络的建设,容器之间可以按照用户的预期进行网络打通或隔离是如何实现的呢?
本期《云原生漫游指南》就将从解决这个疑问开始,继续介绍云原生路径中的三个关键站点。
在大量的云原生转型案例中我们发现,容器网络的实现往往是搭建容器平台中客户面临的最大挑战之一,因此在建设云原生架构之前,尽早对容器网络进行规划至关重要。
容器网络需要解决的核心问题在于:容器本身的网络通信依赖于其所在的宿主机上的网络设备,然而容器在调度过程中又可能随时在不同宿主机之间“迁移”。因此需要一套方案来解决容器间的通信与路由问题,并且充分考虑容器的灵活性、扩展性以及IaaS层不同网络实现等因素。
CNI(Container Network Interface)是由Google和CoreOS主导制定的一个容器网络标准,其核心目的就是只要提供一个标准的接口,就能为同样满足该协议的所有容器平台提供网络功能。这样云供应商就可以基于CNI开发自己的专属接口,让Kubernetes等平台的使用者无需感知到底层网络实现的差异,并实现为容器提供一个对应的网络空间、自动为容器分配IP地址等能力。
目前主流的CNI实现方案可以分为隧道方案和路由方案两类,核心差异就是在转发容器间的通信时是否需要对数据包进行再次包装。
百度智能云CCE为用户提供了两种不同的网络方案:VPC网络模式和CNI插件模式。
其中VPC网络模式直接利用云上私有网络中的路由表进行路由规则记录,不会带来任何额外的资源开销,同时提供高性能的转发能力,但是受限于VPC路由网关的并发瓶颈,所以对集群规模会有限制。而CNI插件模式则利用了最新的弹性网卡特性,通过多网卡来为容器直接提供IP地址,从而满足容器网络和节点网络完全在同一网络层面,提供更高的网络性能。
第七站
在容器间网络打通之后,我们需要考虑部署在容器内的服务如何互相通信。
在传统的单体应用开发中,由于系统间不同的服务都部署在一个空间中,因此服务之间通信通过本地函数调用即可,不需要考虑服务间的信息如何传递。而在云原生的架构中,不同服务可能部署在不同的容器并分布到不同服务器中,因此我们就需要构建起服务间的统一通信机制。
Restful架构是一种常见的服务件远程调用方式,当服务A需要被远程访问时,可以暴露一个Restful接口,其它服务即可通过访问这个Restful接口来调用服务A中的特定方法。
API其实也就是一个一个的URL,因此不同服务之间只需要利用HTTP协议,从发送端发送到接收端传输json对象,而互相不需要关心具体的开发语言和实现方式。
Restful是一种轻量级、高度标准化和跨语言的服务间通信方式,非常适用于系统间或者对外的服务暴露。它的缺点在于所有的通信都基于http协议,因此每次远程访问都需要在代码中建立http连接,客户端必须知道服务端的地址,对开发者不够友好。同时http请求支持的动词是非常有限的,在面对复杂业务时会导致接口的语义不够明确,因此Restful并不适用于系统内部的服务间调用。
相比之下RPC(Romote Procedure Call)是更适合于复杂系统内部的服务间通信方式,
由于Restful和RPC各自有不同的适用场景,因此一个企业级的系统中往往是两种远程调用方式并存的。百度云原生微服务应用平台CNAP也充分考虑到了这种场景,同时支持对Restful和RPC接口的数据采集,从而在追踪请求链路和查看服务拓扑时能够整合两种类型的请求,为用户呈现出一个完整的服务间通信网络。
第八站
当应用以容器化的方式运行在Kubernetes集群上,并且可以正常进行网络通信后。下一步需要考虑的问题,就是如何保障应用按照预期的状态可靠运行。
这时候我们就需要引入“可观察性”的概念,和可用性、可扩展性一样,可观察性是一个非常重要的非业务需求,它要求开发运维人员能够主动规划系统运行过程中的关键指标、随时对这些指标进行监控、并且汇总这些指标以用于分析和预测。
可观察性又可以拆分成很多层面:
对资源使用的观察,可以帮助优化平台的资源配置;
可观察性的建设主要基于三类基本要素:日志(logging)、指标(metrics)、追踪(tracing),这些要素分别从不同角度记录系统的运行,同时也需要不同的工具来进行采集。
在面对不同的场景和不同角色的需求时,往往需要对这些要素进行灵活使用和组合,比如一个开发人员可能需要从logging中分析细节,而运维人员则更关注tracing与metrics之间的联系。所以一个优秀的云原生架构中,不仅要提供对丰富的各类元素进行观察的能力,也需要支持高度自定义的汇聚、分析和报警的策略。
在云原生开源社区中,opentracing和jaeger是tracing领域的典型工具代表、fluentd、kibana等专注于logging,而prometheus则是metric方向最热门的技术栈。
百度智能云为了降低用户对这些不同工具的整合成本,在云容器引擎(CCE)和云原生微服务应用平台(CNAP)中提供了基于这些开源工具的一站式方案,在最小化性能损耗的情况下提供丰富的观察要素采集,同时在统一的界面完成自定义的数据汇总、分析和报警配置。 |
全部评论
最新文章
热点排行
-
1文件存储 NAS 和 对象存储 OSS 的区别
-
2天翼云云电脑 | 让电视一秒变身电脑
-
3阿里工程师太凶残了,竟把服务器泡在“水里”!
-
4腾讯云 | 想在微信群里发起9人以上的语音聊天怎么办?
-
5数据仓库终结者:Dremio
-
62020年云服务器哪家强:阿里云、腾讯云、华为云、UCloud测评报告
-
72020 年 Q1 中国云市场份额:阿里云第一、华为云跃居第二、腾讯云下降为第三
-
8阿里云 web 应用防火墙(WAF)价格:179元/年
-
92020 Q1 中国公有云市场份额 TOP3:阿里云、腾讯云、华为云
-
10郑大一附院系统瘫痪 2 小时,运维人员被判 5 年半:破坏计算机信息系统罪
有话要说