mirror of https://github.com/k3s-io/k3s
daemon/controller.go: fix bugs in updateDaemonSetStatus
1. return when there is any error 2. fix StatusUpdateRetries loop 3. a few minor cleanuppull/6/head
parent
5e7c309b29
commit
8e4966da82
|
@ -567,21 +567,22 @@ func (dsc *DaemonSetsController) manage(ds *extensions.DaemonSet) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func storeDaemonSetStatus(dsClient unversionedextensions.DaemonSetInterface, ds *extensions.DaemonSet, desiredNumberScheduled, currentNumberScheduled, numberMisscheduled int) error {
|
func storeDaemonSetStatus(dsClient unversionedextensions.DaemonSetInterface, ds *extensions.DaemonSet, desiredNumberScheduled, currentNumberScheduled, numberMisscheduled int) error {
|
||||||
if int(ds.Status.DesiredNumberScheduled) == desiredNumberScheduled && int(ds.Status.CurrentNumberScheduled) == currentNumberScheduled && int(ds.Status.NumberMisscheduled) == numberMisscheduled {
|
if int(ds.Status.DesiredNumberScheduled) == desiredNumberScheduled &&
|
||||||
|
int(ds.Status.CurrentNumberScheduled) == currentNumberScheduled &&
|
||||||
|
int(ds.Status.NumberMisscheduled) == numberMisscheduled {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
var updateErr, getErr error
|
var updateErr, getErr error
|
||||||
for i := 0; i <= StatusUpdateRetries; i++ {
|
for i := 0; i < StatusUpdateRetries; i++ {
|
||||||
ds.Status.DesiredNumberScheduled = int32(desiredNumberScheduled)
|
ds.Status.DesiredNumberScheduled = int32(desiredNumberScheduled)
|
||||||
ds.Status.CurrentNumberScheduled = int32(currentNumberScheduled)
|
ds.Status.CurrentNumberScheduled = int32(currentNumberScheduled)
|
||||||
ds.Status.NumberMisscheduled = int32(numberMisscheduled)
|
ds.Status.NumberMisscheduled = int32(numberMisscheduled)
|
||||||
|
|
||||||
_, updateErr = dsClient.UpdateStatus(ds)
|
if _, updateErr = dsClient.UpdateStatus(ds); updateErr == nil {
|
||||||
if updateErr == nil {
|
|
||||||
// successful update
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// Update the set with the latest resource version for the next poll
|
// Update the set with the latest resource version for the next poll
|
||||||
if ds, getErr = dsClient.Get(ds.Name); getErr != nil {
|
if ds, getErr = dsClient.Get(ds.Name); getErr != nil {
|
||||||
// If the GET fails we can't trust status.Replicas anymore. This error
|
// If the GET fails we can't trust status.Replicas anymore. This error
|
||||||
|
@ -597,29 +598,30 @@ func (dsc *DaemonSetsController) updateDaemonSetStatus(ds *extensions.DaemonSet)
|
||||||
nodeToDaemonPods, err := dsc.getNodesToDaemonPods(ds)
|
nodeToDaemonPods, err := dsc.getNodesToDaemonPods(ds)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Error getting node to daemon pod mapping for daemon set %+v: %v", ds, err)
|
glog.Errorf("Error getting node to daemon pod mapping for daemon set %+v: %v", ds, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
nodeList, err := dsc.nodeStore.List()
|
nodeList, err := dsc.nodeStore.List()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
glog.Errorf("Couldn't get list of nodes when updating daemon set %+v: %v", ds, err)
|
glog.Errorf("Couldn't get list of nodes when updating daemon set %+v: %v", ds, err)
|
||||||
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
var desiredNumberScheduled, currentNumberScheduled, numberMisscheduled int
|
var desiredNumberScheduled, currentNumberScheduled, numberMisscheduled int
|
||||||
for _, node := range nodeList.Items {
|
for _, node := range nodeList.Items {
|
||||||
shouldRun := dsc.nodeShouldRunDaemonPod(&node, ds)
|
shouldRun := dsc.nodeShouldRunDaemonPod(&node, ds)
|
||||||
|
|
||||||
numDaemonPods := len(nodeToDaemonPods[node.Name])
|
scheduled := len(nodeToDaemonPods[node.Name]) > 0
|
||||||
|
|
||||||
if shouldRun && numDaemonPods > 0 {
|
|
||||||
currentNumberScheduled++
|
|
||||||
}
|
|
||||||
|
|
||||||
if shouldRun {
|
if shouldRun {
|
||||||
desiredNumberScheduled++
|
desiredNumberScheduled++
|
||||||
}
|
if scheduled {
|
||||||
|
currentNumberScheduled++
|
||||||
if !shouldRun && numDaemonPods > 0 {
|
}
|
||||||
numberMisscheduled++
|
} else {
|
||||||
|
if scheduled {
|
||||||
|
numberMisscheduled++
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue