在写此系列文章之前,我做了3年的Java开发,后来因为项目的变动,接触了大约半年的k8s相关东西,零零散散,似懂非懂的,而且在日常开发中,经常会卡壳,问人总会被怼,所以自己索性来系统的学学大名鼎鼎的k8s,为日后自己的职业规划做一些打算。
本篇作为k8s系列文章的开篇,主要介绍了什么是云原生、k8s的引入以及云原生未来如何。
另外:
由于【kubbernetes中文指南】书中对这块的介绍太好了,大部分内容是原封不动的搬运过来的,各位如果有兴趣的可以看看此书,强烈推荐!!!
我在这里贴出电子版的地址,大家可放心食用。
Kubernetes 中文指南——云原生应用架构实战手册
传统应用升级缓慢、架构臃肿、不能快速迭代、故障不能快速定位、问题无法快速解决等问题,云原生这一概念横空出世。
云原生是一种行为方式和设计理念,究其本质,凡是能够提高云上资源利用率和应用交付效率的行为或方式都是云原生的。
从宏观概念上讲,云原生是不同思想的集合,集目前各种热门技术之大成。
从微观概念上讲,可分为如下四个方面:
可能看起来有点晦涩难懂,我在这里说一下自己的理解:
所谓的原生,指的利用Java,php,c,c++,python等等开发语言开发出来的应用,应用需要部署到服务器上;而云指的是云服务器,那么云原生结合起来就是原生应用上云的过程,以及上云的一系列解决方案。

云原生其设计理念如下:
面向分布式设计(Distribution):容器、微服务、API 驱动的开发;
面向配置设计(Configuration):一个镜像,多个环境配置;
面向韧性设计(Resistancy):故障容忍和自愈;
面向弹性设计(Elasticity):弹性扩展和对环境变化(负载)做出响应;
面向交付设计(Delivery):自动拉起,缩短交付时间;
面向性能设计(Performance):响应式,并发和资源高效利用;
面向自动化设计(Automation):自动化的 DevOps;
面向诊断性设计(Diagnosability):集群级别的日志、metric 和追踪;
面向安全性设计(Security):安全端点、API Gateway、端到端加密;
综上所述,云原生应用应该具备以下几个特性:
Kubernetes:云原生操作系统

Kubernetes 是 Google 基于 Borg 开源的容器编排调度引擎,作为 CNCF(Cloud Native Computing Foundation)最重要的组件之一,它的目标不仅仅是一个编排系统,而是提供一个规范,可以让你来描述集群的架构,定义服务的最终状态,Kubernetes 可以帮你将系统自动得达到和维持在这个状态。
更直白的说,Kubernetes 用户可以通过编写一个 YAML 或者 json 格式的配置文件,也可以通过工具 / 代码生成或直接请求 Kubernetes API 创建应用,该配置文件中包含了用户想要应用程序保持的状态,不论整个 Kubernetes 集群中的个别主机发生什么问题,都不会影响应用程序的状态,你还可以通过改变该配置文件或请求 Kubernetes API 来改变应用程序的状态。
下面是CNCF给出的云原生景观图。
如果图片不显示或者违规,请访问:https://landscape.cncf.io/
我也搞不清为啥csdn不让放这个图片=.=

该图中包括云原生的各种层次的提供者和应用,通过该图可以组合出一些列的云原生平台。
也可以有平台提供以上所有功能,还可以有提供可观测性、分析和扩展应用。
看到这个景观图,大家觉得Kubernetes真的还只做了容器编排吗?实际上它是制定了一个标准。就像一个系统一样,所有的应用和插件都是基于它来构建的。
希望您掌握以下知识和准备以下环境:
知识:
环境: