概述
做k8s集群作业节点的规划时,首要需求考虑的问题是: 应该运用哪种类型的服务器(Linux)实例节点,节点数量又需求多少个?
集群容量
一般k8s集群可以看作将多个服务器(Linux)节点笼统为一个大的”超级服务器节点”,该超级节点的总核算才干(如CPU和内存)是一切组成节点的才干之和.假设要在群集上运转的一组应用程序需求,需求一个总容量为8个CPU内核和32 GB 内存的集群,或许的两种实例类型及数量装备如下图:
计划一: 运用2台4核16GB服务器实例作为k8s作业节点
计划二: 运用4台2核8GB服务器实例作为k8s作业节点
哪种计划更好呢? 我信任大多数人此刻有点懵逼了吧,为处理我们的这个疑问下面我分别对这两种计划的利害。
计划一
运用2台4核16GB服务器实例作为k8s作业节点的状况
优势
1.削减办理开支
与有必要办理很多核算机比较,办理少数核算机较省力
2. 下降每个节点的本钱
尽Kubernetes作业节点的数量规划?管功用更强壮的机器比低端机器更贵重,但价格上涨并不一定是线性的;如一台具有10个CPU内核和10 GB RAM的核算机或许比10台具有1个CPU内核和1 GB RAM的核算机廉价
3.答应运转需求很多资源的应用程序
假如您有一个需求8 G秋天的诗句B内存的机器学习应用程序,则不能在只要1 GB内存的节点的群集上运转它;可是您可以在具有10 GB内存节点的群集上运转它
下风
1.每个节点有很多Pod
每个Pod都会在该节点上运转的Kubernetes代理上引进一些开支,例如容器运转时(例如Docker),kubelet和cAdvisor。
kubelet对节点上的每个容器履行惯例的活动性和安排妥当性勘探-更多的容器意味着kubelet在每次迭代中需求进行更多的作业。
cAdvisor会搜集节点上一切容器的资源运用状况计算信息,而kubelet会定时查询此信息,并将其揭露在其API上-相同,这意味着cAdvisor和kubelet在每次迭代中都需求做更多的作业。
假如Pod的数量变大,这些作业或许会开端减慢体系速度,乃至使体系不可靠。
2.有限仿制
少数节点或许会约束应用程序的有用仿制程度,假如您有一个由5个副本组成的高可用性应用程序,可是只要2个节点,则该应用程序的有用仿制程度将下降为2。
3.爆破半径更大
假如您只要几个节点,那么发作毛病的节点的影响会比具有Kubernetes作业节点的数量规划?多个节点的影响大。
4.大缩放份额
Kubernetes 为云根底架构供给了一个集群主动伸缩器,可根据当时需求主动Kubernetes作业节点的数量规划?增加或删去节点。
计划二
运用4台2核8GB服务器实例作为k8s作业节点的状况;这种办法包括由许多小节点而不是几个大节点组成集群。
这种办法的优缺陷是什么?
运用许多小节点的长处首要对应于运用少数大节点的缺陷。
优势
1.爆破半径减小
假如您有100个Pod和10个节点,则每个节点均匀仅包括10个Pod。因而,假如其间一个节点发作毛病,则影响的pod数量较少。
很有或许只要您的某些应用程序遭到影响,而且或许只要少数的副本遭到影响,因而整个应用程序都不会遭到影响。
2.答应高仿制,完成高可靠性
Kubernetes调度程序可以将每个副本分配给更多不同的节点,这意味着,假如一个节点发作毛病,最多将影响一个副本,而且您的应用程序依然可用。
下风
1.很多节点
运用较小的节点,则天然需求更多的节点才干到达给定的群集容量,关于Kubernetes操控平面而言,很多节点或许是一个应战。
如每个节点都需求可以与其他每个节点进行通讯,这使得或许的通讯途径的数量与节点数量的平方成正比增加,一切这些都有必要由操控平面进行办理。
2.更多的体系开支
Kubernetes在每个作业程序节点上运转一组体系看护进程,如容器运转时Docker、kube-prKubernetes作业节点的数量规划?oxy、kubelet等,这些看护程序一同耗费固定数量的资源,假如运用许多小节点,则这些体系组件运用的资源部分会更大。
3.下降资源利用率
假如运用较小的节点,那么终究或许会Kubernetes作业节点的数量规划?遇到很多资源片段,这些资源片段太小而无法分配给任何作业负载,因而导致资源糟蹋。
4.小节点上的Pod约束
在某些云根底架构上,小节点上答应的最大Pod数量比您预期的遭到更多约束,如Amazon Elastic Kubernetes服务(EKS)便是这种状况,其间每个节点的Pod的最大数量取决于实例类型。
定论
因而您应该在集群中运用几个大型节点仍是多个小型节点?与平常相同,一般没有确认的答案!
假如您的应用程序需求10 GB的内存,则您或许不应该运用小型节点-群会集的节点应至少具有10 GB的内存;
假如您的应用程序Kubernetes作业节点的数量规划?需求10倍的仿制才干完成高可用性,那么您或许不应该仅运用2个节点-您的集群至少应包括10个节点