Another approach too is to use a combinations of constraints and a locator, and drive all the movement from the crankshaft rotation.
I'm attaching a maya file of what I think you're after, just scrub the timeline to see it move.
if that is indeed the motion you want, here's how to set it up. Also, this walkthrough assumes that you have maya set to where the Y axis points up (this is the default, unless you changed it)
First off, make sure you are in the rigging toolset , so you can get the constraints menu later:

1. Adjust the pivot of the rod geo to the very bottom of the rod if you already haven't:
2. create a locator (create>locator), and place it at the base of the rod:

2. make the locator a child of the crankshaft. note, the crankshaft, not the rod! This will move the locator around when the crankshaft turns.

4. now we are going to point constrain the rod to the locator, so that the rod follows the locator: select the locator, shift select the rod, and choose Constrain>point, and click the option box. in the window that pops up, select the following, and hit apply:

now if you rotate the crankshaft you will see the rod follow! now let's aim the rod at the piston.
5. select the piston, shift select the rod, and go constrain>aim and select the options box. In the window that pops up, make the following selections, and hit apply:

this makes the rod point it's y axis towards the center of the piston no matter where either of them move.
6. Lastly, select the rod, shift select the piston, and go constrain>point (options box). In the window that pops up, select the following. IMPORTANT! notice we are ONLY constraining the Y axis:

after that's done, the piston will move up and down in the Y, relative to how much the rod moves up and down in the Y.
I know that's a lot, hopefully it makes sense. Let me know if you run into any trouble, or need clarification. Best of luck!