so you have a kubernetes cluster and now you want to reach it from the outside, you have several options
spend money on a hosted LoadBalancer, use DNS as a ghetto load balancer, or run your own (edge router outside the cluster on stable ip + some way of service discovery)
this provisions a cloud hosting provider managed load balancer, it costs $$$, like $18 per month per route on GCP (for the first 5), you could run a cluster for less especially if you run them on preemptible instances, where you need this even more_
this binds to a specified port on the host node, not too useful if you use preemptible instances and your ips change often
best used if you have a small stable node to run the ingress and everything else runs on preemptible instances, still has problems updating: k8s wants a new version up before if kills the old but that's impossible because the port is in use
like cloudflare argo? basically a load balancer but set up differently
only useful if you don't mind a high port number
this just tells kube-proxy to allow packets destined to the ips to be routed, doesn't actually listen on the ports
kubernetes-incubator / external-dns only points an external DNS name to an external IP created by a LoadBalancer or something else
so no pointing it directly at the node