Kubernetes:工作 Pod 端点上的连接被拒绝

Tom*_*ino 7 kubernetes

我正在尝试调试为什么完美工作部署的服务没有响应(连接被拒绝)。

我已经两次和三次检查porttargetPort匹配(容器为 4180,服务为 80)

当我列出我的端点时,我得到以下信息:

$ kubectl get endpoints
NAME           ENDPOINTS           AGE
kubernetes     10.40.63.79:443     82d
oauth2-proxy   10.40.34.212:4180   33s // <--this one
Run Code Online (Sandbox Code Playgroud)

并从在同一命名空间中运行的 pod:

# curl 10.40.34.212:4180
curl: (7) Failed to connect to 10.40.34.212 port 4180: Connection refused
Run Code Online (Sandbox Code Playgroud)

(顺便说一句,如果我尝试卷曲服务,也会发生同样的情况)

然而,如果我直接转发到 pod,我会收到响应:

$ kubectl port-forward oauth2-proxy-559dd9ddf4-8z72c 4180:4180 &
$ curl -v localhost:4180
* Rebuilt URL to: localhost:4180/
*   Trying 127.0.0.1...
* TCP_NODELAY set
* Connected to localhost (127.0.0.1) port 4180 (#0)
> GET / HTTP/1.1
> Host: localhost:4180
> User-Agent: curl/7.58.0
> Accept: */*
> 
Handling connection for 4180
< HTTP/1.1 403 Forbidden
< Date: Tue, 25 Jun 2019 07:53:19 GMT
< Content-Type: text/html; charset=utf-8
< Transfer-Encoding: chunked
< 

<!DOCTYPE html>
// more of the expected response
* Connection #0 to host localhost left intact

Run Code Online (Sandbox Code Playgroud)

我还检查了我在使用服务中的选择器时是否获得了 Pod(我从 中看到的复制粘贴了它kubectl describe svc oauth2-proxy):

$ kubectl describe svc oauth2-proxy | grep Selector
Selector:          app.kubernetes.io/name=oauth2-proxy,app.kubernetes.io/part-of=oauth2-proxy

$ kubectl get pods --selector=app.kubernetes.io/name=oauth2-proxy,app.kubernetes.io/part-of=oauth2-proxy
NAME                            READY   STATUS    RESTARTS   AGE
oauth2-proxy-559dd9ddf4-8z72c   1/1     Running   0          74m

Run Code Online (Sandbox Code Playgroud)

我不明白为什么端点在使用端口转发时拒绝连接得到有效响应。还有什么我应该检查的吗?

Tom*_*ino 12

好吧,事实证明这个特定的服务默认只在 localhost 上监听:

$ netstat -tunap | grep LISTEN
tcp        0      0 127.0.0.1:4180          0.0.0.0:*               LISTEN      1/oauth2_proxy
Run Code Online (Sandbox Code Playgroud)

我不得不添加一个参数 ( -http-address=0.0.0.0:4180) 来告诉它在 0.0.0.0 上监听

  • 我知道在 SO 上评论感谢某人是违反规则的,但是……Thaaaaaaaannnnnkksss。我快要疯了。 (2认同)
  • 感谢您提出这个非常有用的问题和答案!在找到这篇文章之前,我花了很多时间研究类似的问题。 (2认同)