Using BSS138 in Level Switcher
Here's what that app note says that may be relevant: -


  The lowest possible supply voltage VDD1 depends on the threshold
  voltage VGS(th) of the MOS-FET’s. With a threshold voltage of about 1
  Volt below the lowest VDD1, the level shifter circuit will operate
  properly. If for example the lowest VDD1 is 3 Volt, a threshold
  voltage VGS(th) of maximum 2 Volt is allowed.


I'm pointing this out because you are using 1.8V as lowest Vdd and the BSS138 is: -


  VGS(th) Gate Threshold Voltage is 0.8(min) 1.3(typ) 1.5(max) V


So immediately you should not be expecting this to work if you go on the typical figure of 1.3V - this would imply your lowest Vdd can be no-less than 2.3V.

Going back to what you said in your question you say 


  When I measure Vgs, it read 0v


If you've used the circuit in the link you provided the gate is tied to Vdd(low) and the source is your low voltage IO pin so for you to measure 0V this must mean your your IO pin is at Vdd(low) and this would be the case unless the drain pin is being activated low.

I think you need to measure the voltages on the FET with respect to 0V on all three pins. Maybe it's correct but there's not enough to go on in your question BUT like I said originally I don't think this circuit is going to perform how you expect with the BSS138 FET.