code: func (g *Cloud) NodeAddressesByProviderID(ctx context.Context, providerID string) ([]v1.NodeAddress, error) {
  	ctx, cancel := cloud.ContextWithCallTimeout()
  	defer cancel()
  
  	_, zone, name, err := splitProviderID(providerID)
  	if err != nil {
  		return []v1.NodeAddress{}, err
  	}
  
  	instance, err := g.c.Instances().Get(ctx, meta.ZonalKey(canonicalizeInstanceName(name), zone))
  	if err != nil {
  		return []v1.NodeAddress{}, fmt.Errorf("error while querying for providerID %q: %v", providerID, err)
  	}
  
  	if len(instance.NetworkInterfaces) < 1 {
  		return []v1.NodeAddress{}, fmt.Errorf("could not find network interfaces for providerID %q", providerID)
  	}
  	networkInterface := instance.NetworkInterfaces[0]
  
  	nodeAddresses := []v1.NodeAddress{{Type: v1.NodeInternalIP, Address: networkInterface.NetworkIP}}
  	for _, config := range networkInterface.AccessConfigs {
  		nodeAddresses = append(nodeAddresses, v1.NodeAddress{Type: v1.NodeExternalIP, Address: config.NatIP})
  	}
  
  	return nodeAddresses, nil
  }
docs: // NodeAddressesByProviderID will not be called from the node that is requesting this ID.
  // i.e. metadata service and other local methods cannot be used here