I just did some experimenting in blender and pulled it off. It’s not that difficult but requires some tweaking to get it too look the way you want. I made a bone for the base cylinder, then a child bone for the middle cylinder, but made it unconnected. The base cylinder bone is the child of a bone called BaseIK, also unnconnected. For the top(smallest Cylinder, I added a bone CylinderTop, and that is the child of TopIK, everything unnconected. I also did the setup with each of the cylinders fully extended, but I’m sure it for work with them closed.
Now in pose mode, time to setup some constraints to make this work. Have the CylinderBase either IK or Track to TopIK, I did IK, because well, guess I just like IKing things, doesn’t really matter if you IK or Track it though. Then you do the reverse to CylinderTop, having it track to BaseIK. Now if you move BaseIK or Top IK the top and bottom parts will work like a standard piston setup, for an arm you have Top IK parented to your forearm bone, and BaseIK parented to your upperarm bone. The trick to getting the middle cylinder to work is a combination of copy location and limit location constraints. For copy location, you simply have it copy the location of CylinderTop, and set Head/Tail to 1 so that it copies to the tail. That’s all you need for copy location. For limit location I used local space and limited the y axis, the up and down movement of the bone. Because I set it up with the piston fully extended, I set the max to zero so that the middle piston can’t move out any more, but can move in. Thus, the cylinders extend in a hierarchal fashion. You can tweak the settings to get it to move differently.