Why is my kubectl loadbalancer targeting to a random port?

7/23/2019

I have a service and deployment kube config files like below.

Now, when i apply these two files, its creating a loadbalancer but its targeting to a random port but not port 80.

I'm a newbie to EKS and tried different kube config files but it still tries to target a random port.

service file:

apiVersion: v1
 kind: Service
 metadata:
  name: runners-test
  labels:
    app: runners-test
 spec:
  ports:
  - port: 80
    targetPort: 80
  selector:
    app: runners-test
  type: LoadBalancer

 deployment file:

 apiVersion: apps/v1
 kind: Deployment
 metadata:
  name: runners-test
  labels:
    app: runners-test
 spec:
  replicas: 1
  selector:
    matchLabels:
      app: runners-test
  template:
    metadata:
      labels:
        app: runners-test
    spec:
      containers:
      - name: runners-test
        image: mylocaldockerimage
        ports:
        - containerPort: 80

C02X67GOKL:terraform$ kubectl get svc NAME TYPE CLUSTER-IP EXTERNAL-IP > PORT(S) AGE kubernetes ClusterIP 10.100.0.1 443/TCP 8d runners-test LoadBalancer 10.100.246.180 af3884a05ad7811e99b0e06a70e73221-192467907.us-west-2.elb.amazonaws.com 80:31038/TCP 43m

It's targeting to port a random port 31038, when i connect to my pod and run ps -ef, i can see that a service is running on port 80.

-- Prashanth
amazon-eks
kubectl
kubernetes
kubernetes-pod

1 Answer

7/24/2019

As mentioned in the Kubernetes Service documentation , setting this type will enforce the underlying cloud provider to assign a public IP address to your service and route the traffic on your exposed port ( which is 80 in your case ) to Node Port ( 31038 ) on the kubernetes cluster level.

On cloud providers which support external load balancers, setting the type field to LoadBalancer provisions a load balancer for your Service.

-- fatcook
Source: StackOverflow