mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-28 22:17:14 +00:00
Merge pull request #35894 from gmarek/race
Automatic merge from submit-queue Initialize CIDR allocator before registering handle functions Currently we start shared informers after everything is already created, but this change make it future-proof. cc @davidopp @kevin-wangzefeng @foxish
This commit is contained in:
commit
dad0445bcb
@ -248,6 +248,28 @@ func NewNodeController(
|
|||||||
|
|
||||||
nodeEventHandlerFuncs := cache.ResourceEventHandlerFuncs{}
|
nodeEventHandlerFuncs := cache.ResourceEventHandlerFuncs{}
|
||||||
if nc.allocateNodeCIDRs {
|
if nc.allocateNodeCIDRs {
|
||||||
|
var nodeList *api.NodeList
|
||||||
|
var err error
|
||||||
|
// We must poll because apiserver might not be up. This error causes
|
||||||
|
// controller manager to restart.
|
||||||
|
if pollErr := wait.Poll(10*time.Second, apiserverStartupGracePeriod, func() (bool, error) {
|
||||||
|
nodeList, err = kubeClient.Core().Nodes().List(api.ListOptions{
|
||||||
|
FieldSelector: fields.Everything(),
|
||||||
|
LabelSelector: labels.Everything(),
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
glog.Errorf("Failed to list all nodes: %v", err)
|
||||||
|
return false, nil
|
||||||
|
}
|
||||||
|
return true, nil
|
||||||
|
}); pollErr != nil {
|
||||||
|
return nil, fmt.Errorf("Failed to list all nodes in %v, cannot proceed without updating CIDR map", apiserverStartupGracePeriod)
|
||||||
|
}
|
||||||
|
nc.cidrAllocator, err = NewCIDRRangeAllocator(kubeClient, clusterCIDR, serviceCIDR, nodeCIDRMaskSize, nodeList)
|
||||||
|
if err != nil {
|
||||||
|
return nil, err
|
||||||
|
}
|
||||||
|
|
||||||
nodeEventHandlerFuncs = cache.ResourceEventHandlerFuncs{
|
nodeEventHandlerFuncs = cache.ResourceEventHandlerFuncs{
|
||||||
AddFunc: func(originalObj interface{}) {
|
AddFunc: func(originalObj interface{}) {
|
||||||
obj, err := api.Scheme.DeepCopy(originalObj)
|
obj, err := api.Scheme.DeepCopy(originalObj)
|
||||||
@ -327,30 +349,6 @@ func NewNodeController(
|
|||||||
|
|
||||||
nc.daemonSetStore = *daemonSetInformer.Lister()
|
nc.daemonSetStore = *daemonSetInformer.Lister()
|
||||||
|
|
||||||
if allocateNodeCIDRs {
|
|
||||||
var nodeList *api.NodeList
|
|
||||||
var err error
|
|
||||||
// We must poll because apiserver might not be up. This error causes
|
|
||||||
// controller manager to restart.
|
|
||||||
if pollErr := wait.Poll(10*time.Second, apiserverStartupGracePeriod, func() (bool, error) {
|
|
||||||
nodeList, err = kubeClient.Core().Nodes().List(api.ListOptions{
|
|
||||||
FieldSelector: fields.Everything(),
|
|
||||||
LabelSelector: labels.Everything(),
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
glog.Errorf("Failed to list all nodes: %v", err)
|
|
||||||
return false, nil
|
|
||||||
}
|
|
||||||
return true, nil
|
|
||||||
}); pollErr != nil {
|
|
||||||
return nil, fmt.Errorf("Failed to list all nodes in %v, cannot proceed without updating CIDR map", apiserverStartupGracePeriod)
|
|
||||||
}
|
|
||||||
nc.cidrAllocator, err = NewCIDRRangeAllocator(kubeClient, clusterCIDR, serviceCIDR, nodeCIDRMaskSize, nodeList)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
return nc, nil
|
return nc, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user