SO1992
SO1992

Reputation: 127

Kubernetes: Only one service endpoint working

I've deployed my Django/React app into K8s and exposed both deployments as a service (ClusterIP). Whenever I try to call the API service through its ClusterIP:8000, it sometimes refuses the connection. So I checked its endpoints and only one out of the three existing endpoints returns what I expect. I understand that when calling the ClusterIP, it redirects to one of those three endpoints.

Is there any way to 'debug' a incoming service request? Can I modify the amount of existing endpoints (so I could limit it to the only working endpoint)? Is there any other way to maybe see logs of the service to find out why only one of the endpoints is working?

Upvotes: 1

Views: 732

Answers (2)

SO1992
SO1992

Reputation: 127

I was able to fix it:

I deployed a three-tier-application (Django/React/DB) and used the same selector for every deployment, like this:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: myapp-xxx-deployment
  labels:
    app: myapp
spec:
  replicas: 1
  selector:
    matchLabels:
      app: myapp

So when exposing this with "kubectl expose deployment/..." it created as many endpoints as equal selectors were found in the deployment. Since I have three deployments (DB/React/Djagno), three endpoints were created.

Changing the deployment .yaml like this fixed my error and only one endpoint was crated:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  labels:
    app: myapp-web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: mapp-web

Upvotes: 2

Emre Odabaş
Emre Odabaş

Reputation: 499

ClusterIP:8000 is not seems right to use. You could replace it to http://$(serviceName).$(namespace):8000/ for using service correctly.

Upvotes: 0

Related Questions