<p>From the documentation I see</p>
<blockquote>
<p>NodePort: Exposes the service on each Node’s IP at a static port (the NodePort). A ClusterIP service, to which the NodePort service will route, is automatically created. You’ll be able to contact the NodePort service, from outside the cluster, by requesting :.</p>
</blockquote>
<blockquote>
<p>LoadBalancer: Exposes the service externally using a cloud provider’s load balancer. NodePort and ClusterIP services, to which the external load balancer will route, are automatically created</p>
</blockquote>
<p>But it doesn't mention when to choose one over the other. One of the disadvantages with Nodeport I can think of is the security (opening port in firewall rules), was wondering if there are any additional considerations for choosing one over the other.</p>

<p>They're the same underlying risk (with respect to what you wrote as &quot;disadvantages&quot;) because a <code>type: LoadBalancer</code> <strong>is</strong> a <code>type: NodePort</code> which just additionally works with the cluster's configured cloud-provider to provision a cloud load balancer which points to the allocated NodePort and keeps the Node membership in sync with the cloud load balancer's target hosts</p>
<p>So, to answer your question: use <code>type: LoadBalancer</code> when you want the cloud-provider to provisioning a cloud resource for you, and manage its lifecycle; use a <code>type: NodePort</code> when you have other means of getting external traffic to the allocated port(s) on the Nodes.</p>
