Merge pull request #124113 from krzysdabro/nodeipam-pooling

nodeipam: poll nodes immediately
This commit is contained in:
Kubernetes Prow Robot 2024-04-18 03:23:33 -07:00 committed by GitHub
commit 3188cbd1b3
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
2 changed files with 8 additions and 7 deletions

View File

@ -78,7 +78,6 @@ const (
)
// nodePollInterval is used in listing node
// This is a variable instead of a const to enable testing.
var nodePollInterval = 10 * time.Second
// CIDRAllocator is an interface implemented by things that know how
@ -116,8 +115,7 @@ type nodeReservedCIDRs struct {
// New creates a new CIDR range allocator.
func New(ctx context.Context, kubeClient clientset.Interface, cloud cloudprovider.Interface, nodeInformer informers.NodeInformer, allocatorType CIDRAllocatorType, allocatorParams CIDRAllocatorParams) (CIDRAllocator, error) {
logger := klog.FromContext(ctx)
nodeList, err := listNodes(logger, kubeClient)
nodeList, err := listNodes(ctx, kubeClient)
if err != nil {
return nil, err
}
@ -132,13 +130,15 @@ func New(ctx context.Context, kubeClient clientset.Interface, cloud cloudprovide
}
}
func listNodes(logger klog.Logger, kubeClient clientset.Interface) (*v1.NodeList, error) {
func listNodes(ctx context.Context, kubeClient clientset.Interface) (*v1.NodeList, error) {
var nodeList *v1.NodeList
logger := klog.FromContext(ctx)
// We must poll because apiserver might not be up. This error causes
// controller manager to restart.
if pollErr := wait.Poll(nodePollInterval, apiserverStartupGracePeriod, func() (bool, error) {
if pollErr := wait.PollUntilContextTimeout(ctx, nodePollInterval, apiserverStartupGracePeriod, true, func(ctx context.Context) (bool, error) {
var err error
nodeList, err = kubeClient.CoreV1().Nodes().List(context.TODO(), metav1.ListOptions{
nodeList, err = kubeClient.CoreV1().Nodes().List(ctx, metav1.ListOptions{
FieldSelector: fields.Everything().String(),
LabelSelector: labels.Everything().String(),
})

View File

@ -118,7 +118,8 @@ func NewController(
func (c *Controller) Start(logger klog.Logger, nodeInformer informers.NodeInformer) error {
logger.Info("Starting IPAM controller", "config", c.config)
nodes, err := listNodes(logger, c.adapter.k8s)
ctx := klog.NewContext(context.TODO(), logger)
nodes, err := listNodes(ctx, c.adapter.k8s)
if err != nil {
return err
}