快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系

发布时间 2024-01-11 11:06:56作者: 阳光sun

快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系

首先看下CNCF对云原生的定义:

Cloud native technologies empower organizations to build and run scalable applications in modern, dynamic environments such as public, private, and hybrid clouds. Containers, service meshes, microservices, immutable infrastructure, and declarative APIs exemplify this approach.

云原生技术可以让你的组织构建和运行可扩展的应用,并且不限于公有云、私有云、混合云环境。容器、Service Mesh(服务网格)[1]、微服务、不变的基础设施和声明式API(k8s)共同组成了云原生。

Service Mesh(服务网格) 、声明式API(k8s)、微服务是云原生的组成部分:

声明式API(k8s)

“声明式 API”的核心原理,就是当用户向 Kubernetes 提交了一个 API 对象的描述之后,Kubernetes 会负责为你保证整个集群里各项资源的状态,都与你的 API 对象描述的需求相一致。更重要的是,这个保证是一项“无条件的”、“没有期限”的承诺:对于每个保存在 etcd 里的 API 对象,Kubernetes 都通过启动一种叫做“控制器模式”(Controller Pattern)的无限循环,不断检查,然后调谐,最后确保整个集群的状态与这个 API 对象的描述一致。

简单理解就是对象的声明与对象的创建相解耦,在普通程序中创建对象需要向操作系统申请资源,相似的,在容器云平台上创建对象,需要向k8s申请资源。但k8s更进一步的是,你只需要提交一个申请单,然后由k8s系统完成对象的创建。

再来看看云原生的提出者Pivotal对云原生的定义:

Cloud native is an approach to building and running applications that exploits the advantages of the cloud computing delivery model. Cloud native is about how applications are created and deployed, not where. While today public cloud impacts the thinking about infrastructure investment for virtually every industry, a cloud-like delivery model isn’t exclusive to public environments. It‘s appropriate for both public and private clouds. Most important is the ability to offer nearly limitless computing power, on-demand, along with modern data and application services for developers.

云原生是一种利用云计算交付模型的优势来构建和运行应用程序的方法。云原生是关于如何创建和部署应用程序,而不是在何处部署。虽然如今,公共云影响了几乎所有行业的基础设施建设思维,但类似云的交付模式并不是公共环境独有的。它适用于公共云和私有云。最重要的是能够按需提供几乎无限的计算能力,以及为开发人员提供现代数据和应用程序服务。

Pivotal认为云原生四个关键要素为:DEVOPS、CICD、微服务、容器化

提到微服务就会想到微服务之间的治理也就是服务网格(Service Mesh),而容器化则会想到解决容器编排与调度的K8S。

云原生四个关键要素DEVOPS、CICD、微服务、容器化

那么服务网格(Service Mesh )与K8S及微服务之间的关系是怎样的呢?大家可以先看下图。

 

K8S与Service Mesh的关系

其实服务网格是以K8S为基础,为应用层(微服务)提供服务的,他们分别解决以下问题。

Kubernetes

• 解决容器编排与调度问题

• 本质上是通过调度器管理应用的生命周期

给予 Service Mesh 支持和帮助

 

Service Mesh

• 解决服务间网络通信问题

• 本质上是通过代理(side car)管理服务通信

• 是对 Kubernetes 网络功能方面的扩展和延伸

 


通过上面的讲述,大家是否清楚了云原生、K8S、服务网格(Service Mesh)及微服务之间的关系?有问题请留言,共同研究学习。

参考

  1. 快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系

    快速掌握服务网格系列二:云原生、K8S、服务网格(Service Mesh)及微服务之间的关系