@@ -144,35 +144,58 @@ func GetNodeInfosForGroups(nodes []*apiv1.Node, cloudProvider cloudprovider.Clou
144144 }
145145 id := nodeGroup .Id ()
146146 if _ , found := result [id ]; ! found {
147- sanitizedNode , err := sanitizeTemplateNodeLables (node )
147+ // Build nodeInfo.
148+ nodeInfo , err := simulator .BuildNodeInfoForNode (node , kubeClient )
148149 if err != nil {
149150 return map [string ]* schedulercache.NodeInfo {}, err
150151 }
151152
152- nodeInfo , err := simulator .BuildNodeInfoForNode (sanitizedNode , kubeClient )
153+ // Sanitize node name.
154+ sanitizedNode , err := sanitizeTemplateNode (node , id )
153155 if err != nil {
154156 return map [string ]* schedulercache.NodeInfo {}, err
155157 }
156- result [id ] = nodeInfo
158+
159+ // Update nodename in pods.
160+ sanitizedPods := make ([]* apiv1.Pod , 0 )
161+ for _ , pod := range nodeInfo .Pods () {
162+ obj , err := api .Scheme .DeepCopy (pod )
163+ if err != nil {
164+ return nil , err
165+ }
166+ sanitizedPod := obj .(* apiv1.Pod )
167+ sanitizedPod .Spec .NodeName = sanitizedNode .Name
168+ sanitizedPods = append (sanitizedPods , sanitizedPod )
169+ }
170+
171+ // Build a new node info.
172+ sanitizedNodeInfo := schedulercache .NewNodeInfo (sanitizedPods ... )
173+ if err := sanitizedNodeInfo .SetNode (sanitizedNode ); err != nil {
174+ return nil , err
175+ }
176+
177+ result [id ] = sanitizedNodeInfo
157178 }
158179 }
159180 return result , nil
160181}
161182
162- func sanitizeTemplateNodeLables (node * apiv1.Node ) (* apiv1.Node , error ) {
183+ func sanitizeTemplateNode (node * apiv1.Node , nodeGroup string ) (* apiv1.Node , error ) {
163184 obj , err := api .Scheme .DeepCopy (node )
164185 if err != nil {
165186 return nil , err
166187 }
188+ nodeName := fmt .Sprintf ("template-node-for-%s-%d" , nodeGroup , rand .Int63 ())
167189 newNode := obj .(* apiv1.Node )
168190 newNode .Labels = make (map [string ]string , len (node .Labels ))
169191 for k , v := range node .Labels {
170192 if k != metav1 .LabelHostname {
171193 newNode .Labels [k ] = v
172194 } else {
173- newNode .Labels [k ] = fmt . Sprintf ( "template-node-for-cluster-autoscaler-%d" , rand . Int63 ())
195+ newNode .Labels [k ] = nodeName
174196 }
175197 }
198+ newNode .Name = nodeName
176199 return newNode , nil
177200}
178201
0 commit comments