Merge pull request #8239 from johngmyers/simplify-rolling

Simplify code for rolling updates of nodes
This commit is contained in:
Kubernetes Prow Robot 2020-01-04 13:13:40 -08:00 committed by GitHub
commit a22af4fa80
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 11 additions and 34 deletions

View File

@ -447,12 +447,3 @@ func (r *RollingUpdateInstanceGroup) deleteNode(node *corev1.Node, rollingUpdate
return nil
}
// Delete a CloudInstanceGroups
func (r *RollingUpdateInstanceGroup) Delete() error {
if r.CloudGroup == nil {
return fmt.Errorf("group has to be set")
}
// TODO: Leaving func in place in order to cordon and drain nodes
return r.Cloud.DeleteGroup(r.CloudGroup)
}

View File

@ -148,42 +148,28 @@ func (c *RollingUpdateCluster) RollingUpdate(groups map[string]*cloudinstances.C
}
}
// Upgrade nodes, with greater parallelism
// Upgrade nodes
{
var wg sync.WaitGroup
// We run nodes in series, even if they are in separate instance groups
// typically they will not being separate instance groups. If you roll the nodes in parallel
// you can get into a scenario where you can evict multiple statefulset pods from the same
// statefulset at the same time. Further improvements needs to be made to protect from this as
// well.
wg.Add(1)
for k := range nodeGroups {
results[k] = fmt.Errorf("function panic nodes")
}
go func() {
for k := range nodeGroups {
resultsMutex.Lock()
results[k] = fmt.Errorf("function panic nodes")
resultsMutex.Unlock()
for k, group := range nodeGroups {
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group)
if err == nil {
err = g.RollingUpdate(c, cluster, false, c.NodeInterval, c.ValidationTimeout)
}
defer wg.Done()
results[k] = err
for k, group := range nodeGroups {
g, err := NewRollingUpdateInstanceGroup(c.Cloud, group)
if err == nil {
err = g.RollingUpdate(c, cluster, false, c.NodeInterval, c.ValidationTimeout)
}
resultsMutex.Lock()
results[k] = err
resultsMutex.Unlock()
// TODO: Bail on error?
}
}()
wg.Wait()
// TODO: Bail on error?
}
}
for _, err := range results {