云原生架构估计是未来十年最主流的应用架构,最早是由Pivotal提出来的。Pivotal的Matt Stine写了一本叫做《迁移到云原生应用架构》的书籍,里面探讨了云原生应用架构的主要特征,包括以下:
符合十二因素应用
面向微服务架构
自服务敏捷架构
基于API的协作
抗脆弱性
十二因素包含的内容也挺多,在这里我们就不一一展开了,想了解的同学搜索一下即可找到相关内容。
后来,Google主导成立了云原生计算基金会CNCF(Cloud Native Computing Foundation),CNCF对云原生的定义包含以下三个方面:
应用容器化
面向微服务架构
应用支持容器的编排调度
那么云原生的设计哲学是怎样的呢?这里我引用宋净超的书籍《云原生应用架构实践手册》里面的内容,其中有关于云原生设计哲学的阐述,如下:
面向分布式设计:容器、微服务、API 驱动的开发;
面向配置设计:一个镜像,多个环境配置;
面向韧性设计:故障容忍和自愈;
面向弹性设计:弹性扩展和对环境变化(负载)做出响应;
面向交付设计:自动拉起,缩短交付时间;
面向性能设计:响应式,并发和资源高效利用;
面向自动化设计:自动化的 DevOps;
面向诊断性设计:集群级别的日志、metric 和追踪;
面向安全性设计:安全端点、API Gateway、端到端加密;
Kubernetes作为CNCF第一个孵化成熟的项目,它的设计思想自然也符合云原生的这些设计理念,并且,它已经成为Docker容器编排系统事实上的标准,同时其目标是改变应用在云上的构建和部署方式。使用Kubernetes的系统一般能达到以下效果:
快速持续部署:主要是因为声明式配置和自治愈系统的特性
可扩展:包括软件系统和开发团队,主要是因为低耦合的设计
抽象基础设施:面向应用的架构设计,使得应用跨基础设施变得容易
高效率:多租户共享集群,开发和测试环境的高效构建
Kubernetes是比较庞大的,在学习的时候,除了看官方文档,可能需要其它一些书籍的辅助,才能更好地理解。在这里我推荐两本电子书,都是英文版的,分别是《Kubernetes: Up and Running》和《Kubernetes in action》,质量都不错,其中第一本的三个作者都是Kubernetes项目的发起者,他们对Kubernetes的理解可能超过其它任何人。如果你找不到这两本书,可以私信我要下载地址。
另外我推荐一下国内在Kubernetes和容器方面有深入研究的张磊老师,他之前写了一本书,叫《Docker-容器与容器云》,后来又开了专栏,专门讲解Kubernetes。他配合专栏出品的Kubernetes架构技能图谱已经在网上公开,因此如果读者中有人需要系统学习Kubernetes的,我觉得可以按照张磊老师的技能图谱去学就挺不错。怎么拿到这张技能图谱呢?可以网上搜索,也可以关注下【技术人成长】公众号,进入到公众号首页,发送文字“技能图谱”即可获取。
微信扫码,进入【技术人成长】社群逛逛。