How does Ethereum discover nodes?

How exactly does Ethereum discover other nodes in a decentralized fashion? I am quite familiar with many of the concepts that build Ethereum but I can't quite understand how the particular function happens?
From my networking knowledge, this would be a process similar to DNS though that is centralized. Is it at all similar?
I know this is likely documented somewhere so if anybody has a link I would be eternally grateful!
Note:
by Nodes I currently mean the PoW nodes that validate the chain but I would also love to know about this process and/or if it changes in the PoS system.
submitted by /u/testforredditbythe
[link] [comments]