<p>I have a LoadBalancer service which exposes 3300 port outside the cluster. I want to open a new port for internal communication so that other pods can talk to this service, but this port should not be exposed outside the cluster.<br />
Basically, the communication looks like this:</p>
<pre><code>                                   my-svc:3301
    pod/my-app  &lt;--- svc/my-svc  &lt;------------- pod/my-new-app
                      ^
                      | ext-ip:3300
                      |
                   outside_world
</code></pre>
<pre><code>apiVersion: v1
kind: Service
metadata:
  name: my-svc
spec:
  type: LoadBalancer
  ports:
  - name: my-port
    protocol: &quot;TCP&quot;
    port: 3300
    targetPort: 3300
  selector:
    app: my-app
</code></pre>
<p>Is there a way to include the new port inside this service itself? Do I have to create another service of type NodePort?</p>

subtleseeker
<p>If the &quot;internal&quot; and &quot;external&quot; communication paths use different ports, you need a separate (ClusterIP) Service.  There's no way to say you want a Service to create a LoadBalancer (or a NodePort) but only for certain of the service ports.</p>
<p>If both can use the same port, then you can just point other pods at <code>http://my-svc:3300</code>.  Even if it is a LoadBalancer (or NodePort) Service, it can be called using its <code>name:</code> and <code>port:</code> in the same way as a ClusterIP Service.</p>
