Moving a bone moves only the first level of child, not all levels of children
You used automatic weights?  Click the cylinder and go to weight paint mode.
On the right side under Vertex Groups click on the bone in question. You will probably see that the cylinder is red and (depending on how many bones it has) green. But the piston is probably blue. There are two ways to fix this. You can extrude your current bone(s) so that you have a bone for the piston and then re-parent it with automatic weights. Or you could select the piston, in edit mode select all of the faces of the piston. Then find Vertex Groups on the right side of the screen. Click on the bone that you want the piston to move with. Make sure you are using a weight of 1.000 and then click assign.
Hope that this helps!