One of the ways we solved this was creating a headless Service for all the Deployments or Daemonset that should join the cluster.
That way when the application launches using the <app@ip> it can do a lookup agains the service name and get the addresses for the rest of the cluster to join.
I am not sure, but my guess is (and correct me if I am wrong) using the Kubernetes API might break requirements for some people who don't want to expose those things on the pod/containers.