code: func (g *Cloud) NodeAddresses(_ context.Context, _ types.NodeName) ([]v1.NodeAddress, error) {
  	internalIP, err := metadata.Get("instance/network-interfaces/0/ip")
  	if err != nil {
  		return nil, fmt.Errorf("couldn't get internal IP: %v", err)
  	}
  	externalIP, err := metadata.Get("instance/network-interfaces/0/access-configs/0/external-ip")
  	if err != nil {
  		return nil, fmt.Errorf("couldn't get external IP: %v", err)
  	}
  	addresses := []v1.NodeAddress{
  		{Type: v1.NodeInternalIP, Address: internalIP},
  		{Type: v1.NodeExternalIP, Address: externalIP},
  	}
  
  	if internalDNSFull, err := metadata.Get("instance/hostname"); err != nil {
  		klog.Warningf("couldn't get full internal DNS name: %v", err)
  	} else {
  		addresses = append(addresses,
  			v1.NodeAddress{Type: v1.NodeInternalDNS, Address: internalDNSFull},
  			v1.NodeAddress{Type: v1.NodeHostName, Address: internalDNSFull},
  		)
  	}
  	return addresses, nil
  }
docs: // NodeAddresses is an implementation of Instances.NodeAddresses.