K8s系列---【一、为什么要学习K8s?】

一、为什么要学习K8s?

K8s系列---【一、为什么要学习K8s?】

  以kubernetes核心的云原生技术(以kubernetes为核心的云架构体系)正在吃掉整个世界(软件的世界),越来越多的企业把软件系统服务迁移到kubernetes环境中;无论传统企业,还是互联网公司都在进行企业数字化转型(提高企业生产效率),云原生是企业数字化(自动化,智能化)转型的唯一路径,实现企业开发效率倍增。

  技术发展趋势(未来技术发展方向):

  1、2021年: 阿里达摩院宣布十大颠覆性科技发展—云原生技术对IT开发行业具有颠覆性的发展;

  2、云原生技术来了,Java真的快挂了吗??

  JVM(jdk):

    1) 优点: 跨平台, 庞大的生态体系

    2) 缺点: 占内存,性能并没有一些脚本语言高(go,ruby)

  云原生:跨平台(任何语言都可以借助云原生实现跨平台)

  3、Jdk16 全面拥抱云原生技术          未来的java语言也会脚本化(占用内存少,体积小)

  4、Spring SpringCloud 向云原生方向演进;

问题: 学习kubernetes到底对我们开发有什么帮助??

1.1、轻装上阵

  一旦使用kubernetes技术,不需要关心那些和项目业务没有关系的底层代码(通信组件,协议转换,服务治理),只需要关心项目业务代码即可,因此开发团队只需要一个小而精悍的团队即可。

K8s系列---【一、为什么要学习K8s?】

1.2、全面拥抱微服务架构

  架构选型: 微服务架构面临:服务架构拆分,服务治理难题

  微服务架构:拆分很细小,按照function进行拆分,拆分很多的服务,服务调用链路很长,一旦使用了微服务架构后,增加技术上难度(服务出现问题,很难查找)

  难题是什么:

    1、服务链路追踪

    2、服务降级

    3、服务限流

    4、服务性能监控

  一旦使用了kubernetes云原生技术后,就不需要关心服务治理问题,一切交给kubernetes实现,因此可以全面拥抱微服务架构。

1.3、无缝迁移

  项目开发(开发环境)->发布版本->测试环境->发布版本(Q)->stable->上线(生产环境)

  存在问题: 测试环境 开发环境不一致,造成项目测试没有问题,上线就发生了问题,影响项目上线时间。

K8s系列---【一、为什么要学习K8s?】

1.4、弹性扩容

  服务上线: 促销活动 ---- 流量增大(事先预知: 活动预演,压测预案)---- 动态扩容

    突发事件 ---- 明星结婚 ---- 突发性流量 ---- 弹性扩容

  扩展指标: 根据cpu使用率,内存使用率进行扩容即可

K8s系列---【一、为什么要学习K8s?】

1.5、充分利用服务器资源

  思考: 物理机,虚拟机时代部署服务时候,这些服务器cpu,内存释放可以被充分利用???

  答案: 不能被充分利用的;

K8s系列---【一、为什么要学习K8s?】

   存在资源浪费原因在于:没有合理的调度服务部署(根据资源利用率,cpu空闲,内存空闲进行合理服务调度部署); 其实: 我们需要一个操作系统,此操作系统可以对服务进行调度,选择合理的资源进行分配。

 K8s系列---【一、为什么要学习K8s?】

  Kubernetes根据调度器实现服务的动态调度,服务发布部署的,把服务调度服务到一个合适的节点中;以kubernetes为核心构建的云平台(云计算平台),充分利用服务器资源,实现服务合理部署,使得服务以更好的组态进行运行,或者计算。

K8s系列---【一、为什么要学习K8s?】

   Kubernetes把各个节点(服务器)调度整合在一起,形成一个整体(看起来就像是一台计算机),整个云环境cpu,内存是所有机器相加。

1.6、自动化运维平台

  以kubernetes为核心构建一套devops平台,从开发,到运维整个流水线实现自动化开发流程;

  1、服务部署,调度,发布

  2、负载均衡

  3、扩缩容

  4、弹性容错

  ……………………

  运维: 300运维可以减少至10个运维。

 

上一篇:测试用例框架优化(三)


下一篇:04-树6 Complete Binary Search Tree (30 分)