code: func (ss *scaleSet) getVmssVM(nodeName string) (ssName, instanceID string, vm compute.VirtualMachineScaleSetVM, err error) {
  	instanceID, err = getScaleSetVMInstanceID(nodeName)
  	if err != nil {
  		return ssName, instanceID, vm, err
  	}
  
  	ssName, err = ss.getScaleSetNameByNodeName(nodeName)
  	if err != nil {
  		return ssName, instanceID, vm, err
  	}
  
  	if ssName == "" {
  		return "", "", vm, cloudprovider.InstanceNotFound
  	}
  
  	resourceGroup, err := ss.GetNodeResourceGroup(nodeName)
  	if err != nil {
  		return "", "", vm, err
  	}
  
  	klog.V(4).Infof("getVmssVM gets scaleSetName (%q) and instanceID (%q) for node %q", ssName, instanceID, nodeName)
  	key := buildVmssCacheKey(resourceGroup, ss.makeVmssVMName(ssName, instanceID))
  	cachedVM, err := ss.vmssVMCache.Get(key)
  	if err != nil {
  		return ssName, instanceID, vm, err
  	}
  
  	if cachedVM == nil {
  		klog.Errorf("Can't find node (%q) in any scale sets", nodeName)
  		return ssName, instanceID, vm, cloudprovider.InstanceNotFound
  	}
  
  	return ssName, instanceID, *(cachedVM.(*compute.VirtualMachineScaleSetVM)), nil
  }
docs: // getVmssVM gets virtualMachineScaleSetVM by nodeName from cache.
  // It returns cloudprovider.InstanceNotFound if node does not belong to any scale sets.