@@ -77,8 +77,8 @@ func (k *Kubelet) Init(_ context.Context) (err error) {
7777 return nil
7878}
7979
80- func lookupNodeName (ctx context.Context , nodeName apitypes. NodeName ) (ipv4 net. IP , ipv6 net.IP , _ error ) {
81- ipaddrs , err := net .DefaultResolver .LookupIPAddr (ctx , string (nodeName ))
80+ func ( k * Kubelet ) lookupNodeName (ctx context.Context ) (ipv4 , ipv6 net.IP , _ error ) {
81+ ipaddrs , err := net .DefaultResolver .LookupIPAddr (ctx , string (k . NodeName ))
8282 if err != nil {
8383 return nil , nil , err
8484 }
@@ -117,15 +117,18 @@ func (k *Kubelet) Start(ctx context.Context) error {
117117 // but will only pick one for a single family. Do something similar as
118118 // kubelet, but for both IPv4 and IPv6.
119119 // https://github.com/kubernetes/kubernetes/blob/v1.34.2/pkg/kubelet/nodestatus/setters.go#L150-L178
120- ipv4 , ipv6 , err := lookupNodeName (ctx , k .NodeName )
120+ ipv4 , ipv6 , err := k .lookupNodeName (ctx )
121+ if err == nil && (ipv4 == nil || ipv6 == nil ) {
122+ err = fmt .Errorf ("node name IP address lookup didn't return addresses for both families: IPv4: %s, IPv6: %s" , ipv4 , ipv6 )
123+ }
121124 if err != nil {
122- logrus .WithError (err ).Errorf ("failed to lookup %q" , k .NodeName )
123- } else if ipv4 != nil && ipv6 != nil {
124- // The kubelet will perform some extra validations on the discovered IP
125- // addresses in the private function k8s.io/kubernetes/pkg/kubelet.validateNodeIP
126- // which won't be replicated here.
127- args ["--node-ip" ] = ipv4 .String () + "," + ipv6 .String ()
125+ return fmt .Errorf ("failed to detect node IPs for %q: %w" , k .NodeName , err )
128126 }
127+
128+ // The kubelet will perform some extra validations on the discovered IP
129+ // addresses in the private function k8s.io/kubernetes/pkg/kubelet.validateNodeIP
130+ // which won't be replicated here.
131+ args ["--node-ip" ] = ipv4 .String () + "," + ipv6 .String ()
129132 }
130133
131134 switch runtime .GOOS {
0 commit comments