Ensure upcoming nodes are different

This commit is contained in:
Pengfei Ni 2019-06-30 23:46:21 +08:00
parent bf0a9902e6
commit d45fee06da
1 changed files with 10 additions and 1 deletions

View File

@ -22,6 +22,7 @@ import (
apiv1 "k8s.io/api/core/v1"
"k8s.io/apimachinery/pkg/labels"
"k8s.io/apimachinery/pkg/util/uuid"
"k8s.io/autoscaler/cluster-autoscaler/cloudprovider"
"k8s.io/autoscaler/cluster-autoscaler/clusterstate"
"k8s.io/autoscaler/cluster-autoscaler/clusterstate/utils"
@ -591,6 +592,13 @@ func allPodsAreNew(pods []*apiv1.Pod, currentTime time.Time) bool {
return found && oldest.Add(unschedulablePodWithGpuTimeBuffer).After(currentTime)
}
func buildNodeForNodeTemplate(nodeTemplate *schedulernodeinfo.NodeInfo, index int) *apiv1.Node {
node := nodeTemplate.Node().DeepCopy()
node.Name = fmt.Sprintf("%s-%d", node.Name, index)
node.UID = uuid.NewUUID()
return node
}
func getUpcomingNodeInfos(registry *clusterstate.ClusterStateRegistry, nodeInfos map[string]*schedulernodeinfo.NodeInfo) []*apiv1.Node {
upcomingNodes := make([]*apiv1.Node, 0)
for nodeGroup, numberOfNodes := range registry.GetUpcomingNodes() {
@ -600,7 +608,8 @@ func getUpcomingNodeInfos(registry *clusterstate.ClusterStateRegistry, nodeInfos
continue
}
for i := 0; i < numberOfNodes; i++ {
upcomingNodes = append(upcomingNodes, nodeTemplate.Node())
// Ensure new nodes having different names because nodeName would used as a map key.
upcomingNodes = append(upcomingNodes, buildNodeForNodeTemplate(nodeTemplate, i))
}
}
return upcomingNodes