Echo recent posts each with its own respective featured image

Do not use $post_id. From this answer by @s_ha_dum (which you should go and read).

$post_id is a variable name used commonly to refer the post ID, but it isn’t a Core variable the way that $post is.

In the context as in your question, you would want to use $recent["ID"] (which will hold the current post id in the foreach loop) instead of $post_id which will hold the page ID of the page the query is being run on