cloud node controller: improve error handling for node registration

This commit is contained in:
andrewsykim 2018-05-31 13:53:57 -04:00
parent a176a8b1b7
commit 4510fe48c3

View File

@ -18,6 +18,7 @@ package cloud
import ( import (
"context" "context"
"errors"
"fmt" "fmt"
"time" "time"
@ -168,6 +169,12 @@ func (cnc *CloudNodeController) updateNodeAddress(node *v1.Node, instances cloud
glog.Errorf("%v", err) glog.Errorf("%v", err)
return return
} }
if len(nodeAddresses) == 0 {
glog.V(5).Infof("Skipping node address update for node %q since cloud provider did not return any", node.Name)
return
}
// Check if a hostname address exists in the cloud provided addresses // Check if a hostname address exists in the cloud provided addresses
hostnameExists := false hostnameExists := false
for i := range nodeAddresses { for i := range nodeAddresses {
@ -349,21 +356,18 @@ func (cnc *CloudNodeController) AddCloudNode(obj interface{}) {
nodeAddresses, err := getNodeAddressesByProviderIDOrName(instances, curNode) nodeAddresses, err := getNodeAddressesByProviderIDOrName(instances, curNode)
if err != nil { if err != nil {
glog.Errorf("%v", err) return err
return nil
} }
// If user provided an IP address, ensure that IP address is found // If user provided an IP address, ensure that IP address is found
// in the cloud provider before removing the taint on the node // in the cloud provider before removing the taint on the node
if nodeIP, ok := ensureNodeProvidedIPExists(curNode, nodeAddresses); ok { if nodeIP, ok := ensureNodeProvidedIPExists(curNode, nodeAddresses); ok {
if nodeIP == nil { if nodeIP == nil {
glog.Errorf("failed to get specified nodeIP in cloudprovider") return errors.New("failed to find kubelet node IP from cloud provider")
return nil
} }
} }
if instanceType, err := getInstanceTypeByProviderIDOrName(instances, curNode); err != nil { if instanceType, err := getInstanceTypeByProviderIDOrName(instances, curNode); err != nil {
glog.Errorf("%v", err)
return err return err
} else if instanceType != "" { } else if instanceType != "" {
glog.V(2).Infof("Adding node label from cloud provider: %s=%s", kubeletapis.LabelInstanceType, instanceType) glog.V(2).Infof("Adding node label from cloud provider: %s=%s", kubeletapis.LabelInstanceType, instanceType)