Reputation: 13610
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?
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>
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cge-frontend ClusterIP 10.98.212.184 <none> 80/TCP 16m
$ curl 10.98.212.184
curl: (7) Failed connect to 10.98.212.184:80; Connection refused
Upvotes: 0
Views: 607
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 Ready
state. 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