Cluster AutoScaler源码梳理
功能总结:
- 删除nodegroup中15分钟没有注册到kube的node
- 获取未调度的Pod列表,计算需要资源(limit之内)
- 获取comingnode(在nodegroup内,但是未注册kube集群,启动中)+node模版,计算(base,binpacking)的需要的node数
- 根据expander(random,most-pods,price,least-waste)进行scaleup
- 更新nodegroup的currentsize
cluster ca 入口函数:
1 | func main() { |
run 方法:
1 | func run(healthCheck *metrics.HealthCheck) { |
New Autoscaler:
1 | func (a *StaticAutoscaler) RunOnce(currentTime time.Time) errors.AutoscalerError { |
Autoscaler ScaleUp:
1 | func ScaleUp(context *context.AutoscalingContext, processors *ca_processors.AutoscalingProcessors, clusterStateRegistry *clusterstate.ClusterStateRegistry, unschedulablePods []*apiv1.Pod, |