<blockquote>
  <p>Name:ingress-nginx
  Type:LoadBalancer
  InternalIP:10.108.240.88 ExternalIP:<strong>pending</strong></p>
  
  <p>PORT(s):80:30191/TCP,443:30616/TCP 21h</p>
</blockquote>

<p>Yaml file:</p>

<pre><code>apiVersion: v1
kind: Service
metadata:
  name: ingress-nginx
  namespace: ingress-nginx
spec:
  externalTrafficPolicy: Local
  type: LoadBalancer
  loadBalancerIP: 172.18.3.11
  ports:
  - port: 80
    targetPort: 80
    protocol: TCP
    name: http
  - port: 443
    targetPort: 443
    protocol: TCP
    name: https

  selector:
    app.kubernetes.io/name: ingress-nginx
    app.kubernetes.io/part-of: ingress-nginx
</code></pre>

<p>I use docker 18.06,kubernete 1.13 to propose test on private organization with exp ip range 172.18.3.9-20</p>

<p>Flannel Log:
kubectl logs --namespace kube-system kube-flannel-ds-amd64-ms94w -c kube-flannel</p>

<p>Result:</p>

<blockquote>
  <p>Failed to list *v1.Node: Get <a href="https://10.96.0.1:443/api/v1/nodes?resourceVersion=0" rel="nofollow noreferrer">https://10.96.0.1:443/api/v1/nodes?resourceVersion=0</a>: dial tcp 10.96.0.1:443: getsockopt: connection refused
  E1211 11:48:43.238318 1 reflector.go:201] github.com/coreos/flannel/subnet/kube/kube.go:295: Failed to list *v1.Node: Get <a href="https://10.96.0.1:443/api/v1/nodes?resourceVersion=0" rel="nofollow noreferrer">https://10.96.0.1:443/api/v1/nodes?resourceVersion=0</a>: net/http: TLS handshake timeout</p>
</blockquote>

<p>Used kubeadm init:</p>

<blockquote>
  <p>kubeadm init --pod-network-cidr 10.255.0.0/16 --service-cidr 10.244.0.0/16 --service-dns-domain "k8s" --apiserver-advertise-address 172.18.3.9</p>
</blockquote>

<p>Dashboard kubernete shows every thing(pods,ingress,replicateSets,private docker registery container) Ok except this service!</p>

Arman Riazi
<p>You must clarify pods status to ensure all pods are running and there aren't any errors such as <code>ImagePullBackOff</code> :</p>

<pre><code>kubectl get pods -o wide
kubectl get pods -o json
kubectl get pods -o wide | grep nginx | awk '{print $6}' | xargs kubectl get node -o json | grep ExternalIP -A 2
</code></pre>

<p>If you are using <code>kubeadm</code> then probably you have a master node and some workers. So when you deploy apps using <code>kubectl apply</code> or <code>kubectl create</code> or any other ways, you must use a VPN in you worker nodes. It's because of blocking the website which trying to pull from it.</p>
