Kubernetes Service External IP not being assigned

6/24/2017

I have the following deployment yaml:

apiVersion: v1
kind: Namespace
metadata:
  name: authentication
  labels:
   name: authentication
---
apiVersion: apps/v1beta1
kind: Deployment
metadata:
  name: authentication-deployment
  namespace: authentication
spec:
  replicas: 2
  template:
    metadata:
      labels:
        app: authentication
    spec:
      containers:
      - name: authentication
        image: blueapp/authentication:0.0.0
        ports:
        - containerPort: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: authentication-service
  namespace: authentication
spec:
  type: NodePort
  ports:
  - port: 8080
    targetPort: 8080
  selector:
    name: authentication-deployment
  type: LoadBalancer
  externalName: authentication

Im pretty new to kubernetes but my understanding of what Im trying to do is create a namespace, in that namespace create a deployment of 2 pods and then create a load balancer to distribute traffic to those pods.

When I run

$ kubectl create -f deployment.yaml

everything creates fine, but then the service never gets assigned an external IP

Is there anything obvious that may be causing this?

-- mwild
docker
kubernetes

2 Answers

6/25/2017

Your service is of type NodePort. To get a load balancer assigned to your service you should be using a LoadBalancer service type:

type: LoadBalancer

See documentation here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services---service-types

-- Chen Fisher
Source: StackOverflow

6/25/2017

External IPs get assigned only in supported cloud environments, providing that your cloud provider is configured correctly.

Observe the error messages in the kube-controller-manager logs when you create your service.

-- Antoine Cotten
Source: StackOverflow