Fetch Kubernetes node list every time round reclaim loop

If we retain the Kubernetes list for a long time we might see a peer
appear in the Weave list and conclude it has been deleted. We must
always fetch the Kubernetes list after fetching the Weave list, during
deletion.
This commit is contained in:
Bryan Boreham committed 2018-09-12 14:10:59 +00:00
1 parent 70257a6c19
commit bacb3952a3
1 file changed
+4 -3
+4 -3
View File
@@ -64,7 +64,7 @@ type weaveClient interface {
// For each of those peers that is no longer listed as a node by
// Kubernetes, remove it from Weave IPAM
func reclaimRemovedPeers(weave weaveClient, cml *configMapAnnotations, nodes []nodeInfo, myPeerName, myNodeName string) error {
func reclaimRemovedPeers(kube kubernetes.Interface, weave weaveClient, cml *configMapAnnotations, myPeerName, myNodeName string) error {
for loopsWhenNothingChanged := 0; loopsWhenNothingChanged < 3; loopsWhenNothingChanged++ {
if err := cml.Init(); err != nil {
return err
@@ -74,6 +74,7 @@ func reclaimRemovedPeers(weave weaveClient, cml *configMapAnnotations, nodes []n
if err != nil {
return err
}
nodes, err := getKubePeers(kube, true)
nodeSet := make(map[string]struct{}, len(nodes))
for _, node := range nodes {
nodeSet[node.name] = struct{}{}
@@ -205,7 +206,6 @@ func main() {
}
return
}
peers, err := getKubePeers(c, justReclaim)
if err != nil {
common.Log.Fatalf("[kube-peers] Could not get peers: %v", err)
}
@@ -219,12 +219,13 @@ func main() {
common.Log.Infoln("[kube-peers] Added myself to peer list", list)
weave := weaveapi.NewClient(os.Getenv("WEAVE_HTTP_ADDR"), common.Log)
err = reclaimRemovedPeers(weave, cml, peers, peerName, nodeName)
err = reclaimRemovedPeers(c, weave, cml, peerName, nodeName)
if err != nil {
common.Log.Fatalf("[kube-peers] Error while reclaiming space: %v", err)
}
return
}
peers, err := getKubePeers(c, false)
for _, node := range peers {
fmt.Println(node.addr)
}