Kubernetes deployment connection refused

7/2/2018

I'm trying to deploy a simple python app to Google Container Engine:

I have created a cluster then run kubectl create -f deployment.yaml It has been created a deployment pod on my cluster. After that i have created a service as: kubectl create -f deployment.yaml

Here's my Yaml configurations:

pod.yaml:

apiVersion: v1
kind: Pod
metadata:
  name: test-app
spec:
  containers:
  - name: test-ctr
    image: arycloud/flask-svc
    ports:
    - containerPort: 5000

Here's my Dockerfile:

FROM python:alpine3.7
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txt
EXPOSE 5000
CMD python ./app.py

deployment.yaml:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  labels:
    app: test-app
  name: test-app
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test-app
      name: test-app
    spec:
      containers:
      - name: test-app
        image: arycloud/flask-svc
        resources:
          requests:
            cpu: "100m"
        imagePullPolicy: Always
        ports:
        - containerPort: 8080

service.yaml:

apiVersion: v1
kind: Service
metadata:
  name: test-app
  labels:
    app: test-app
spec:
  type: LoadBalancer
  ports:
  - name: http
    port: 80
    protocol: TCP
    targetPort: 8080
    nodePort: 32000
  selector:
    app: test-app

Ingress

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: test-ingress
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /
        backend:
          serviceName: frontend
          servicePort: 80

It creates a LoadBalancer and provides an external IP, when I open the IP it returns Connection Refused error

What's going wrong?

Help me, please!

Thank You, Abdul

-- Abdul Rehman
docker
google-cloud-platform
google-kubernetes-engine
kubernetes
python

1 Answer

7/3/2018

you can first check if the pod is working by curl podip:port, in your scenario, should be curl podip:8080; if not work well, you have to check if the precess is bind 8080 port in the image you are using.

if it work, then try with service by curl svcip:svcport, in your scenario, should be curl svcip:80; if not work well, will be a kubernetes networking [congiguration] issue.

if still work, then the issue should be happen on ingress layer.

In theory, it should work if all match the k8s rules.

-- Weiwei Jiang
Source: StackOverflow