<p>I have 2 pods running on minikube. Pod A has to <code>expose 2 ports</code> 8081 and 9092 to both Pod B <code>inside the k8 cluster</code> and also <code>outside k8 cluster</code> so that pod B can reach them and also outside the cluster my consumer can reach them.So my question is <code>should</code> I have <code>2 services</code> created for each port?
One to expose as cluster ip and one for node port? Or is there a way to have a single service created to expose this as both cluster IP and NodePort?</p>

<p>Also if I have to expose my node port as a particular port, would specifying <code>nodePort</code> mess up with the cluster ip? </p>

<p>When you choose the <code>NodePort</code> service type, besides having a Cluster IP, kubernetes will expose the service on a port on each node of the cluster (the same port on each node). So choosing NodePort gets you both: the ClusterIP and the port on each node.
As said <a href="https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport" rel="noreferrer">in the docs</a></p>

<blockquote>
  <p>Note that this Service will be visible as both :spec.ports[<em>].nodePort and spec.clusterIP:spec.ports[</em>].port.</p>
</blockquote>
