当前位置:   article > 正文

云原生:详解|K8s技术栈解析 —--- 一文读懂K8s工作原理

云原生:详解|K8s技术栈解析 —--- 一文读懂K8s工作原理

文章比较长,但通俗易懂的工作原理解析:

K8s学习办法、K8s标准对象、K8s核心组件、K8s分层架构、K8s架构原则

上一节我们详解了容器的核心技术:详解|容器核心技术解析

回顾容器主要技术

有 name space做隔离,有Cgroup的资源控制,可以很安全地把一个应用丢到某个隔离环境中去运行,并且不对整个主机产生影响。这个应用要跑起来,需要所支撑的文件系统是overlayFS。上一节主要解析了这些技术。

容器技术,从原理上了解,它是用什么样的方式让容器运行起来的。

K8s学习办法

了解了容器技术基础上,看一下K8s做了哪些事情,为什么变成了业界的标准,K8s的主要架构是什么,它的控制面组件是什么样的。

与本节相关的理论概念,参见:K8s架构概念

当我们去学习任何技术的时候,都要去研究一下这个技术的来龙去脉是什么,它的前身是什么,前身在解决什么问题,然后很自然地就知道这个新系统是为了解决哪些问题的。往回看,在没有这个技术的时候,这个世界怎么样,它在追求解决什么问题,上一代的平台是怎么样的,这有助于我们去理解这项技术的更深层次。

学习K8s也一样。

K8s在谷歌的前身,是一套集群管理的系统叫Borg。Google Borg有篇paper,建议大家去读一下,有助于了解云原生。

1、找到价值

对于任何平台,一个问题是,其核心价值是什么?
应用的高可用、灵活、高性能。

容器是一个个的独立个体,要跑一个容器应用,一定要有一个东西来做housekeeper,来管控它。如果应用出现故障,应该有一种方法来做资源管控,做整个应用的生命周期管理,如果失败了,要重启等等这些机能,这就是Borg需要去解决的问题。


Borg本身是一个集群管理加一个作业调度的平台,它要支持很多灵活调度的策略。有了Borg系统,能实现应用的高可用和高可靠。它把很多基础架构层面的东西隐藏起来了,这也是云的价值。

  • 云的理解,把它简单理解为把计算资源抽象出来,对应用开发人员或者应用这个云平台的使用者,只要去描述要跑哪个作业即可。

  • 云上运行业务,可以通过Docker把业务build成一个个容器镜像,容器镜像里面,第一,可以定义运行时要跑哪些应用,第二,定义资源需求。然后把这个请求发给某一个云平台,剩下的事情交给云平台,云平台帮你去做调度。

  • 云的优势,就是它把所有硬件的底层相关的资源都抽象出来了,对用户来讲,只需要告诉它你要跑什么作业,需要多少资源,它帮你去处理所有的东西。这也是Borg追求的目标和它的优势。

2、理解原理和机能

Borg 管理谷歌的整个数据中心。

谷歌有两类大的应用,一类叫做Product workload; 一类叫做non product workload。 

  • Product workload就是我们日常所熟知的在线的服务,比如web search。它的特性是这些应用永远在线。提供任何在线业务所追求的终极目标就是它的可用性,即任何用户来访问,它都在提供服务。这是一个最基本的需求。

  • Non- Product workload是批处理应用。比如电信银行要做对账,账单的处理是批处理行为,比如要对一些用户的日志做行为分析等等,都是批处理业务。它的特性是实时性要求不高,但是很耗资源,所以这种作业就是有资源就跑一跑。如果Product workload需要资源了,就可以把我的资源先临时让给你,等你空闲了以后我再继续跑。

i、资源利用率

通过在线应用和离线应用混布的手段,保证整个集群资源利用率很高。

在Borg里面有一个Cell的概念, Cell就是一个集群,一个数据中心可能有10万台机器,需要把这些机器化成一个个的逻辑单元,可能是5000台或者1万台。

为什么这么划分?

第一,因为集群规模支撑的上限是有限的,集群规模越大,越意味着集群控制面所做的计算越大。要提升性能,要做一定的切分

第二,因为故障率的控制。要把集群分成一个小的逻辑单元,带来的好处就是控制面Down的话,只有一部分机器死了。

ii、自动化运维

K8s和Borg被应用的原因一样,相对于虚拟机的一些问题,而启用的云机能,比如虚拟机缺少全自动化,如果一个instance虚机坏了,需要把这个虚拟机下架,要起一个新的虚拟机,要把应用部署到这台虚机上,让应用起好,然后一点点去测新应用没有问题,再把它跟之前的那台整个替换才完成。这样就会涉及到大量人工操作,使得整个应用的维护成本非常高。

自己维护平台,所有这些维护工作加业务逻辑都得写,成本是很大的。

Borg这样的系统,它跟OpenStack的区别是什么?

最核心就是调度的不是虚机,是目标实体,就是你的作业,是某一个应用。

通过模型抽象,就使得从开发到基础架构能知道这台机器上跑了哪些应用,就可以做很多自动化的功能。

自动化运维就是云的最大特征。

iii、应用高可用

怎么确保应用高可用?最常见的手段就是冗余部署。

这时要考虑故障率。无论在Borg,在K8s里面都有多种范围,比如主机、机架、可用区、数据中心等等。

要控制故障率,就要考虑清楚哪一个是控制面,哪一个是数据面。

控制面要控制的是什么?要保证平台上面跑的应用的高可用。比如跑了一个web server,Borg是可以死的,但是 web server不能死,所以是确保应用的高可用,就是数据面所运行的应用是非常非常重要。作为一个平台,平台出现故障

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/304891
推荐阅读
相关标签
  

闽ICP备14008679号