我使用部署构造部署了我的应用程序。我的 Pod 的状态是Running
,对 Pod 的 IP 进行卷曲会返回应用程序内容。但是,当我使用kubectl expose deployment
创建服务并且我卷曲服务的 IP 时,卷曲抛出Connection refused
错误。为什么?
我的豆荚
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
在使用kubectl describe svc
命令调查我的服务后。我发现我的服务没有Endpoints
- 端点部分应该列出 pod 的 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
事实证明,该错误是由我的一个probe
引起的,该使我的 pod 保持Running
状态但不处于Ready
状态。修复探针,修复我的 pod,并修复了服务。
修复探针后的 Pod 现在处于正确状态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>