通过公开部署创建的 Kubernetes 服务没有响应 curl



我使用部署构造部署了我的应用程序。我的 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>

最新更新