我已经尝试了许多访问我的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选项卡中运行。
1条答案
按热度按时间hrirmatl1#
以下故障排除步骤将帮助您解决问题:
1.使用
kubectl describe pod
检查pod正在侦听哪个端口。2.确保转发与Pod内的应用程序正在侦听的端口号匹配。
3.你提到过你可以通过http://localhost:1880访问,但是你指定了容器端口1881,如果这是一个错别字错误,请检查日志中是否有更多错误。
4.尝试在kubectl端口转发中使用pod而不是deployment:
字符串
要获取容器端口,请运行以下命令:
型
你可以在这个official doc中找到更多信息。
5.当您正在使用
hostnetwork:true
时,尝试使用该服务,例如:ingress,您可以在ales创作的blog中找到更多关于它的信息。