Can you please describe what would be your use case ? Is this production environment ? The "best" way depends on what you're trying to accomplish.
If this is for a production deployment where you need to scale out Kibana based on high Kibana traffic, then it would make sense to run Kibana on two separate hosts behind a load balancer, instead of collocated the same host where the two processes would be competing for the same resources.
As far as the client node is concerned, instead of a client node, you can use a load balancer between Kibana and Elasticsearch. With respect to pros and cons of a client node - there is nothing wrong with using a client node together with Kibana, but if you want to avoid it being a single point of failure, a load balancer might be an alternative. You can also set up two Kibana instances and load-balance in front of these. It all depends on your use case.