<p>I'm running a pod (website) and a simple service </p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: ui
spec:
  type: NodePort
  selector:
    app: ui
  ports:
  - protocol: TCP
    port: 80
    targetPort: 3000

$&gt; kubectl get services
NAME         TYPE        CLUSTER-IP    EXTERNAL-IP   PORT(S)        AGE   SELECTOR   LABELS
kubernetes   ClusterIP   10.0.0.1      &lt;none&gt;        443/TCP        83m   &lt;none&gt;     component=apiserver,provider=kubernetes
ui           NodePort    10.0.25.205   &lt;none&gt;        80:30180/TCP   53m   app=ui     &lt;none&gt;
</code></pre>

<p>Because this service is of type <code>NodePort</code> it opens a port on each cluster node. In my case I'm running kubernetes in Azure, single node setup. But how do I access my service/website? </p>

<pre><code>$&gt; kubectl describe service ui
Name:                     ui
Namespace:                default
Labels:                   &lt;none&gt;
Annotations:              kubectl.kubernetes.io/last-applied-configuration:
                            {"apiVersion":"v1","kind":"Service","metadata": {"annotations":{},"name":"ui","namespace":"default"},"spec":{"ports":[{"port":80,"protocol"...
Selector:                 app=ui
Type:                     NodePort
IP:                       10.0.25.205
Port:                     &lt;unset&gt;  80/TCP
TargetPort:               3000/TCP
NodePort:                 &lt;unset&gt;  30180/TCP
Endpoints:                10.244.0.14:3000,10.244.0.15:3000
Session Affinity:         None
External Traffic Policy:  Cluster
Events:
  Type    Reason                Age   From                Message
  ----    ------                ----  ----                -------
  Normal  Type                  29m   service-controller  NodePort -&gt; LoadBalancer
  Normal  EnsuringLoadBalancer  29m   service-controller  Ensuring load balancer
  Normal  EnsuredLoadBalancer   27m   service-controller  Ensured load balancer
  Normal  Type                  10m   service-controller  LoadBalancer -&gt; NodePort
  Normal  DeletingLoadBalancer  10m   service-controller  Deleting load balancer
  Normal  DeletedLoadBalancer   9m5s  service-controller  Deleted load balancer
</code></pre>

<p>I don't see an external IP. </p>

<p>For example, if I change <code>NodePort</code> to <code>LoadBalancer</code> I get an external IP and I can access my website, but how can I do this with NodePort?</p>

<p>As far as I know, the AKS is a managed service and it just exposes the master which is also managed by Azure to control all the actions. The slave nodes do not expose and do not have the external IP in default.</p>

<p>In the AKS cluster, you only can access the applications through the service with a load balancer or the ingress(which also uses the load balancer for its service).</p>

<p>If you really want to use the node type for your service, there is also a way to solve it. You can create public IPs manually and associate them to the nodes that you want to create the services with node type. Then the nodes have the external IPs. But all operations for AKS Iaas are not recommended. So the load balancer type is the most appropriate way for the service if you want to access them from the Internet.</p>
