Kubernetes error when forwarding a port - Connection refused

I'm trying to port-forward my kubernetes service (through minikube) using the following command:

kubectl port-forward svc/hapi-fhir-server 8080:8080 --address=0.0.0.0

But after trying to reach localhost:8080 I get the following error: "....... 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"

I checked which port the pod is listening to through the following command kubectl get pod hapi-fhir-server-666b846cbf-lhmr4 --template="{{(index (index .spec.containers 0).ports 0).containerPort}}" resulting in answer 8080

For if this helps, my service & deployment files (having removed unrelated lines)

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: {}

The image being used is a HAPI FHIR server with the following configuration that runs on 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 being 8080.

I can't seem to find an accurate answer to why this is happening, even after going through documentation or similar questions like: Kubernetes Port Forwarding - Connection refused.

Is there something I am missing, not doing correctly or that I am not thinking of? Note: I am relatively new to Kubernetes.

1 answer

  • answered 2022-05-04 13:29 Delano van der Waal

    Apparently there was no issue with the Kubernetes or server configuration but rather the Dockerfile that didn't expose port 8080, now it does through the following:

    # Dockerfile
    ......
    EXPOSE 8080
    ......
    

    Thanks to IvanAracki that pointed this out to me through the comments.

How many English words
do you know?
Test your English vocabulary size, and measure
how many words do you know
Online Test
Powered by Examplum