<p>this my first deployment yaml file, i'm testing k8s with minikube like an external cluster, i would expose port 80 of minikube cluster to port 8080 of container (webservice). This my yaml:</p>

<pre><code>apiVersion: v1
kind: List
metadata:
  resourceVersion: ""
  selfLink: ""
items:

############ Services ###############
- apiVersion: v1
  kind: Service
  metadata:
    name: kuard-80
    labels:
      component: webserver
      app: k8s-test
  spec:
    ports:
    - port: 80
      targetPort: 8080
      protocol: TCP
    loadBalancerIP: 192.168.99.100 # Minikube IP from "minikube ip"
    selector:
      component: webserver
    sessionAffinity: None
    type: LoadBalancer

############ Deployments ############
- apiVersion: extensions/v1beta1
  kind: Deployment
  metadata:
    name: kuard
    labels:
      component: webserver
      app: k8s-test
  spec:
    replicas: 1 # tells deployment to run 1 pod matching the template
    selector:
      matchLabels:
        component: webserver
    strategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
      type: RollingUpdate
    template:
      metadata:
        labels:
          component: webserver
      spec:
        volumes:
          - name: "kuard-data"
            hostPath:
              path: "/var/lib/kuard"
        containers:
          - image: gcr.io/kuar-demo/kuard-amd64:1
            name: kuard
            volumeMounts:
              - mountPath: "/data"
                name: "kuard-data"
            livenessProbe:
              httpGet:
                path: /healthy
                port: 8080
              initialDelaySeconds: 5
              timeoutSeconds: 1
              periodSeconds: 10
              failureThreshold: 3
            ports:
              - containerPort: 8080
                protocol: TCP

    restartPolicy: Always
</code></pre>

<p>I expect the port 80 to answer me on <a href="http://192.168.99.100" rel="nofollow noreferrer">http://192.168.99.100</a> , where the error? here are the results of some commands, services and endpoints</p>

<p>$ kubectl get service</p>

<pre><code>NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kuard-80     LoadBalancer   10.107.163.175   &lt;pending&gt;     80:30058/TCP   3m
kubernetes   ClusterIP      10.96.0.1        &lt;none&gt;        443/TCP        34d
</code></pre>

<p>$ kubectl get endpoints</p>

<pre><code>NAME         ENDPOINTS             AGE
kuard-80     172.17.0.7:8080       10m
kubernetes   192.168.99.100:8443   34d
</code></pre>

<p>Thanks for any help you can give me and excuse me if the question is stupid...</p>

<p>Your service is of type <code>LoadBalancer</code> which is supported only for cloud, hence your external ip is in pending state.</p>

<pre><code>NAME         TYPE           CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
kuard-80     LoadBalancer   10.107.163.175   &lt;pending&gt;     80:30058/TCP   3m
</code></pre>

<p>You can expose your service using <code>NodePort</code> in minikube. Following will be the yaml file for that:</p>

<pre><code> apiVersion: v1
   kind: Service
   metadata:
     name: kuard-80
     labels:
       component: webserver
       app: k8s-test
   spec:
     ports:
     - port: 80
       targetPort: 8080
       protocol: TCP
     selector:
       component: webserver
     type: NodePort
</code></pre>

<p>Now, when you do <code>kubectl describe service kuard-80</code> you will be able to see a port of type <code>NodePort</code> whose value will be in between 30000-32767. You will be able to access your application using:</p>

<pre><code>http://&lt;vm_ip&gt;:&lt;node_port&gt;
</code></pre>

<p>Hope this helps</p>
