云原生,“云”表示应用程序位于云中,而不是传统的数据中心;“原生”表示应用程序从设计之初即考虑到云的环境,原生为云而设计,在云上以最佳姿势运行,充分利用和发挥云平台的弹性+分布式优势。云原生应用也就是面向“云”而设计的应用,在使用云原生技术后,开发者无需考虑底层的技术实现,可以充分发挥云平台的弹性和分布式优势,实现快速部署、按需伸缩、不停机交付等。
云原生应用程序架构要求底层基础架构和平台具有可编程性、弹性、复原能力、模块化能力。可编程性:基础结构支持通过声明性 API 和策略进行预配和管理。弹性:可以使用业务流程协调程序以自动化和策略驱动的方式动态扩展和缩减基础结构资源。复原能力:基础结构服务是松散耦合的单元,可以独立运行以提供容错能力。模块化:基础架构为服务的独立打包(如容器或无服务器功能)提供抽象。
部署云原生基础架构的方法有很多,包括 Amazon ECS 或 HashiCorp Nomad 等。然而,大规模云原生基础架构通常会基于 Kubernetes。Kubernetes也称为K8S,其中8是代表中间“ubernete”的8个字符,是Google在2014年开源的一个容器编排引擎,用于自动化容器化应用程序的部署、规划、扩展和管理,它将组成应用程序的容器分组为逻辑单元,以便于管理和发现,用于管理云平台中多个主机上的容器化的应用,Kubernetes 的目标是让部署容器化的应用简单并且高效,很多细节都不需要运维人员去进行复杂的手工配置和处理。Kubernetes 完全实现了上述四个核心属性:Kubernetes 是可编程的,Kubernetes 对象模型上的所有操作 都通过集群控制平面中的 API 服务器执行。Kubernetes 通过横向扩展方法支持弹性。可以通过添加和删除 Pod 和/或节点的实例来增加和减少服