这里我不想再引用Pivotal的Matt Stine的定义,只是想从个人角度思考一下什么是云原生。云原生是啥?在我看来是一套思想,一套完整的方法论和体系。是不是太虚了,的确,云原生就是一套指导意见。它主要有几个核心的工具:

容器和基于容器的面向服务设计

这个是云原生的的基石,容器镜像将程序和依赖环境打包到一个镜像里面,然后这个镜像就可以随处分发启动,再通过k8s等管理平台编排的调度,对外提供服务能力。面向服务的架构设计和管理,摆脱繁杂的IaaS资源配置。
不仅如此Devops的发布流程也离不开容器镜像的支持,可以说容器和容器镜像是云原生的基石。

微服务和分布式

这个是对应用提的要求,新的软件架构从单体迁移到微服务和分布式。不仅提高了服务的扩展性和可维护性。而且在高可用和性能等方面都有所加强。微服务是一致面向故障的设计理念,每个服务都可能会出现问题,所以你需要多副本,跨地域或者AZ部署。微服务通常按照业务领域拆分成独立部署、运行的模块。

Devops和自动化运维

Devops是希望尽快的发布上线,如何快速发布,我们需要流水线和自动触发、如何保证服务稳定发布就需要借助灰度、金丝雀等。发布上线后并非完事大吉,后续生成环境还需要自动化的运维,包括服务的各种监控(log、metric、tracing)。在面对故障时能够自动恢复,面对突发流量的自动弹性。

总结,云原生不只是构建一套混合云,而是涵盖了整个软件生命周期,从软件架构(微服务)、开发模式(devops)、软件发布(k8s+容器)以及基础设施(cloud)等一整套方法论和标准和相关开源软件。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐