【发布时间】:2022-05-04 22:32:38
【问题描述】:
我正在尝试使用以下命令端口转发我的 kubernetes 服务(通过 minikube):
kubectl port-forward svc/hapi-fhir-server 8080:8080 --address=0.0.0.0
但在尝试到达localhost:8080 后,我收到以下错误:"....... an error occurred forwarding 8080 -> 8080: error forwarding port 8080 to pod {PodID, uid ....:E connect(5, AF=2 127.0.0.1:8080, 16): Connection refused"
我通过以下命令检查了 pod 正在侦听的端口
kubectl get pod hapi-fhir-server-666b846cbf-lhmr4 --template="{{(index (index .spec.containers 0).ports 0).containerPort}}" 得到答案 8080
如果这有帮助,我的服务和部署文件(已删除不相关的行)
apiVersion: apps/v1
kind: Deployment
metadata:
....
spec:
replicas: 2
selector:
....
template:
....
spec:
containers:
- image: .........
name: hapi-fhir-server
ports:
- containerPort: 8080
resources: {}
restartPolicy: Always
status: {}
apiVersion: v1
kind: Service
metadata:
....
spec:
type: NodePort
ports:
- protocol: TCP
port: 8080
targetPort: 8080
nodePort: 32069
selector:
app: hapi-fhir-server
status:
loadBalancer: {}
使用的映像是一个 HAPI FHIR 服务器,具有以下配置,在 Apache Tomcat (server.xml) 上运行:
<Connector port="${server.port}" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
maxThreads="${server.tomcat.max-threads}"
minSpareThreads="${server.tomcat.min-spare-threads}" />
server.port 是 8080。
即使在阅读了文档或类似的问题(例如:Kubernetes Port Forwarding - Connection refused)之后,我似乎也无法找到为什么会发生这种情况的准确答案。
有什么我遗漏、没有正确执行或我没有想到的吗?笔记:我对 Kubernetes 比较陌生。
【问题讨论】:
-
8080 可能已经在您的机器上打开了吗?
-
@IvanAracki 在我提出问题之前,我已经通过命令
netstat -a进行了检查。我找不到已在 8080 上使用的端口。但是,我确实检查了如果该端口已在使用中的错误消息:Unable to listen on port 8080: Listeners failed to create with the following errors: [unable to create listener: Error listen tcp4 0.0.0.0:8080: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.] -
您确定您的 Dockerfile 正在使用您的首选端口吗?
-
好吧,这确实是问题所在,我没有在 Dockerfile 中公开端口
标签: kubernetes tomcat kubectl portforwarding hapi