无法使用Port-Forwarding访问正在运行的Kubernetes Deployment上的Pod

eqfvzcg8  于 2023-08-03  发布在  Kubernetes
关注(0)|答案(1)|浏览(159)

我已经尝试了许多访问我的Kubernetes Pod的方法。
1.我可以在Docker上运行它,并且可以通过http://localhost:1880访问它
1.我创建了以下部署文件以在K8s上运行:

apiVersion: apps/v1
 kind: Deployment
 metadata:
   name: nodered2
   labels:
     app: nodered2
 spec:
   replicas: 2
   selector:
     matchLabels:
       app: nodered2
   template:
     metadata:
       labels:
         app: nodered2
     spec:
       hostNetwork: true
       containers:
       - name: nodered2
         image: localhost:1881/nodered2
         imagePullPolicy: IfNotPresent
         ports:
         - containerPort: 1881

字符串
1.我可以看到部署
PS C:\01. SolisPLC\01.软件\02. Kubernetes\02. NodeRed K8S>kubectl get deployment

NAME       READY   UP-TO-DATE   AVAILABLE   AGE
nodered2   2/2     2            2           31m


1.我读到我需要转发端口作为通过浏览器访问Pod的方式之一,所以我被这个错误卡住了:
PS C:\01. SolisPLC\01.软件\02. Kubernetes\02. NodeRed K8S> kubectl port-forward deployment/nodeed2 1881:443 Forwarding from 127.0.0.1:1881-> 443 Forwarding from [::1]:1881-> 443 Handling connection for 1881 E0715 22:00:47.383640 10056 portforward.go:406] an error occurred forwarding 1881 -> 443:将端口443转发到Pod af 7 fd 02 bc 1d 1374 fcfed 02 adf 08 f9590 dd 82 cb 7230 e6 db 523 ff 7211 cf 7 dd 9 b2 a时出错,uid:退出状态1:2023/07/16 02:00:47 socat[15579] E connect(11,AF=2 127.0.0.1:443,16):连接被拒绝E0715 22:00:47.385258
10056 portforward.go:234]与pod的连接丢失
1.我尝试过不同的端口,我尝试过添加负载均衡器(不成功),等等。
对此,任何帮助都将不胜感激。似乎大多数教程都停留在“按预期”工作。
注意:所有这些都在我的本地计算机上运行。我可以在可视化Docker应用程序中看到部署,它在我为Docker和K8s准备的VS Code选项卡中运行。

hrirmatl

hrirmatl1#

以下故障排除步骤将帮助您解决问题:
1.使用kubectl describe pod检查pod正在侦听哪个端口。
2.确保转发与Pod内的应用程序正在侦听的端口号匹配。
3.你提到过你可以通过http://localhost:1880访问,但是你指定了容器端口1881,如果这是一个错别字错误,请检查日志中是否有更多错误。
4.尝试在kubectl端口转发中使用pod而不是deployment:

kubectl port-forward <pod-name> <your-local-port>:<container-port>

字符串
要获取容器端口,请运行以下命令:

kubectl get pod <pod_name> --template='{{(index (index .spec.containers 0).ports 0).containerPort}}{{"\n"}}


你可以在这个official doc中找到更多信息。
5.当您正在使用hostnetwork:true时,尝试使用该服务,例如:ingress,您可以在ales创作的blog中找到更多关于它的信息。

相关问题