大规模k8s集群的优化思路

Posted orchidzjl

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了大规模k8s集群的优化思路相关的知识,希望对你有一定的参考价值。

整理出来的大规模集群优化点

调度器相关:

1. 在预选和优选时,多个节点之间并发的执行预选策略和优选策略(单个节点还是按顺序执行预选和优选策略的)

2. 算法执行过程中需要用到的如node、pod等信息使用Informer缓存起来

3. 当通过预选和优选得到最优的节点时,不在调度路径中请求api-server进行bind操作,而是乐观的在cache中进行bind,之后再发起goroute异步的更新api-server

4. 预选阶段中某个节点无法满足某个预选策略,那么对于这个节点剩下的预选策略就没有必要继续计算(alwaysCheckAllPredicates)

5. (来自阿里)预选过程中当选取了N个节点时,就停止预选到达优选过程,在k8s 1.12版本之后允许用户通过percentageOfNodesToScore配置百分比,比如对于1000个节点的集群,percentageOfNodesToScore为15时表示预选过程将选择150个节点来进行优选。在k8s 1.14之后,如果没有配置percentageOfNodesToScore,那么将会通过如下逻辑自动计算出一个值:

percentageOfNodesToScore=max(5, 50 - node总数/125)

为了使群集中的所有节点都有运行Pods的机会,调度程序以循环方式遍历节点。可以想象节点在数组中,调度程序从数组的开头,检查节点的可行性,直到找到由指定的足够的节点percentageOfNodesToScore。对于下一个Pod,调度程序从检查先前Pod的Nodes可行性时停止在Node数组中的位置继续工作。

 

其他

1. 使用Lease Object来向master发送心跳,原NodeStatus仍然保留,Lease Object更轻量

 

以上是关于大规模k8s集群的优化思路的主要内容,如果未能解决你的问题,请参考以下文章

k8s多集群分发方案karmada解析

蚂蚁集团万级规模 k8s 集群 etcd 高可用建设之路

蚂蚁集团万级规模 k8s 集群 etcd 高可用建设之路

Gitlab+Jenkins+Docker+Harbor+K8s集群搭建CICD平台

精品Ubuntu轻松搭建k8s集群报错解决

vivo大规模Kubernetes集群自动化运维实践