0
votes

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.

1
Please have a look at Kubernetes Service Documentation. I am almost tempted to direct you to the Nodeport (which is what 31038 would be) docs link, but that alone will not suffice in forming a good picture or any picture at all.Paddy

1 Answers

0
votes

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.