Kubernetes 通过具有端口转发的本地主机访问应用程序



我想通过本地主机使用kubectl port-forward命令访问我的应用程序。但是当我运行kubectl port-forward road-dashboard-dev-5cdc465475-jwwgz 8082:8080时,我收到了以下错误。

> Forwarding from 127.0.0.1:8082 -> 8080 Forwarding from [::1]:8082 ->
> 8080 Handling connection for 8082 Handling connection for 8082 E0124
> 14:15:27.173395    4376 portforward.go:400] an error occurred
> forwarding 8082 -> 8080: error forwarding port 8080 to pod
> 09a76f6936b313e438bbf5a84bd886b3b3db8f499b5081b66cddc390021556d5, uid
> : exit status 1: 2020/01/24 11:15:27 socat[9064] E connect(6, AF=2
> 127.0.0.1:8080, 16): Connection refused

我还尝试通过exec -it连接集群中的pod,但它也没有工作。我忽略的缺失点可能是什么?

node@road-dashboard-dev-5cdc465475-jwwgz:/usr/src/app$ curl -v localhost:8080
* Rebuilt URL to: localhost:8080/
*   Trying ::1...
* TCP_NODELAY set
* connect to ::1 port 8080 failed: Connection refused
*   Trying 127.0.0.1...
* TCP_NODELAY set
* connect to 127.0.0.1 port 8080 failed: Connection refused
* Failed to connect to localhost port 8080: Connection refused
* Closing connection 0
curl: (7) Failed to connect to localhost port 8080: Connection refused

Kubectl 全力以赴在下面。我确定容器端口值设置为 8080。

NAME                                      READY   STATUS    RESTARTS   AGE
pod/road-dashboard-dev-5cdc465475-jwwgz   1/1     Running   0          34m
pod/road-dashboard-dev-5cdc465475-rdk7g   1/1     Running   0          34m
NAME                         TYPE       CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE
service/road-dashboard-dev   NodePort   10.254.61.225   <none>        80:41599/TCP   18h
NAME                                 READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/road-dashboard-dev   2/2     2            2           18h
NAME                                            DESIRED   CURRENT   READY   AGE
replicaset.apps/road-dashboard-dev-5cdc465475   2         2         2       34m

Name:               road-dashboard-dev-5cdc465475-jwwgz
Namespace:          dev
Priority:           0
PriorityClassName:  <none>
Node:               c123
Containers:
road-dashboard:
Port:           8080/TCP
Host Port:      0/TCP
State:          Running
Started:      Fri, 24 Jan 2020 13:42:39 +0300
Ready:          True
Restart Count:  0
Environment:    <none>

要调试您的问题,您应该让端口转发命令在前台调整并从第二个终端卷曲,并查看您在端口转发提示符上获得的输出。

$ kubectl get all -o wide
NAME           READY   STATUS    RESTARTS   AGE    IP            NODE         NOMINATED NODE   READINESS GATES
pod/nginx      1/1     Running   2          112m   10.244.3.43   k8s-node-3   <none>           <none>
NAME                 TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)        AGE   SELECTOR
service/kubernetes   ClusterIP   10.96.0.1       <none>        443/TCP        11d   <none>
service/nginx        NodePort    10.96.130.207   <none>        80:31316/TCP   20m   run=nginx

例:

$ kubectl port-forward nginx 31000:80
Forwarding from 127.0.0.1:31000 -> 80
Forwarding from [::1]:31000 -> 80

从第二个终端窗口卷曲,将您拥有的端口向前卷曲。

$ curl localhost:31000
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>
body {
width: 35em;
margin: 0 auto;
font-family: Tahoma, Verdana, Arial, sans-serif;
}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p>
<p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p>
<p><em>Thank you for using nginx.</em></p>
</body>
</html>

您应该看到,在第一个终端上,端口转发 promt 列表显示它正在处理如下所示的连接,请注意新行Handling connection for 31000

$ kubectl port-forward nginx 31000:80
Forwarding from 127.0.0.1:31000 -> 80
Forwarding from [::1]:31000 -> 80
Handling connection for 31000

因此,如果像我有错误的端口转发,如下所示(请注意,我已将nginx容器的端口8080模式为暴露端口80(

$ kubectl port-forward nginx 31000:8080
Forwarding from 127.0.0.1:31000 -> 8080
Forwarding from [::1]:31000 -> 8080

curl 将在端口转发提示符上导致明显错误,指示在到达端口 8080 时拒绝来自容器的连接,因为它不正确。 我们得到一个空的回复。

$ curl -v localhost:31000
* Rebuilt URL to: localhost:31000/
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 31000 (#0)
> GET / HTTP/1.1
> Host: localhost:31000
> User-Agent: curl/7.47.0
> Accept: */*
>
* Empty reply from server
* Connection #0 to host localhost left intact
curl: (52) Empty reply from server
$ kubectl port-forward nginx 31000:8080
Forwarding from 127.0.0.1:31000 -> 8080
Forwarding from [::1]:31000 -> 8080
Handling connection for 31000
E0124 11:35:53.390711   10791 portforward.go:400] an error occurred forwarding 31000 -> 8080: error forwarding port 8080 to pod 88e4de4aba522b0beff95c3b632eca654a5c34b0216320a29247bb8574ef0f6b, uid : exit status 1: 2020/01/24 11:35:57 socat[15334] E connect(5, AF=2 127.0.0.1:8080, 16): Connection refused

相关内容

  • 没有找到相关文章

最新更新