Lukasz Dynowski
Lukasz Dynowski

Reputation: 13610

Kubernetes service created via exposed deployment is not responding to curl

I deployed my application using deployment construct. State of my pod is Running and making curl against pod's IP returns application content. However when I created service using kubectl expose deployment and I curl service's IP then curl throws Connection refused error. Why is that?

My pod

NAME                            READY   STATUS    RESTARTS   AGE   IP          NODE        NOMINATED NODE   READINESS GATES
cge-frontend-5d4595469b-qvcsd   0/1     Running   0          19s   10.40.0.4   compute04   <none>           <none>

My service

NAME           TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)   AGE
cge-frontend   ClusterIP   10.98.212.184   <none>        80/TCP    16m

Error

$ curl 10.98.212.184
curl: (7) Failed connect to 10.98.212.184:80; Connection refused

Upvotes: 0

Views: 607

Answers (1)

Lukasz Dynowski
Lukasz Dynowski

Reputation: 13610

After investigating my service with kubectl describe svc command. I fogure out that my service has no Endpoints - endpoints section should list pod's IP.

$ kubectl describe svc cge-frontend 
Name:              cge-frontend
Namespace:         default
Labels:            app=cge-frontend
Annotations:       <none>
Selector:          app=cge-frontend
Type:              ClusterIP
IP:                10.98.212.184
Port:              <unset>  80/TCP
TargetPort:        80/TCP
Endpoints:         
Session Affinity:  None

It turned out that, the error was caused by one of my probe that was keeping my pod in Running state but not in Readystate. Fixing probes, fixed my pods, and that fixed the service.

My pod after fixing probes is now in correct state READY 1/1

NAME                            READY   STATUS    RESTARTS   AGE   IP          NODE        NOMINATED NODE   READINESS GATES
cge-frontend-5d4595469b-qvcsd   1/1     Running   0          19s   10.40.0.5   compute04   <none>           <none>

Upvotes: 2

Related Questions