0

I've gone through a fair few stackoverflow posts, none are working... So here's my issue:

I've got a simple node app running on broadcast 0.0.0.0 at port 5000, it's got a simple single endpoint at /.

I've got two k8s objects, here's my Deployment object:


### pf deployment
apiVersion: apps/v1
kind: Deployment
metadata:
    # Unique key of the Deployment instance
    name: pf-deployment
spec:
    # 3 Pods should exist at all times.
    replicas: 1
    selector:
        matchLabels:
            app: public-facing
    template:
        metadata:
            labels:
                # Apply this label to pods and default
                # the Deployment label selector to this value
                app: public-facing
        spec:
            containers:
                - name: public-facing
                  # Run this image
                  image: pf:ale8k
                  ports:
                    - containerPort: 5000

Next, here is my Service object:

### pf service
apiVersion: v1
kind: Service
metadata:
  name: pf-service
  labels:
    run: pf-service-label
spec:
  type: NodePort ### may be ommited as it is a default type
  selector:
    name: public-facing ### should match your labels defined for your angular pods
  ports:
    - protocol: TCP
      targetPort: 5000 ### port your app listens on
      port: 5000 ### port on which you want to expose it within your cluster

Finally, a very simple dockerfile:

### generic docker file
FROM node:12

WORKDIR /usr/src/app

COPY . .

RUN npm i

EXPOSE 5000

CMD ["npm", "run", "start"]

I have my image in the minikubes local docker registry, so that's not the issue...

When I try: curl $(minikube service pf-service --url) I get: curl: (7) Failed to connect to 192.168.99.101 port 31753: Connection refused

When I try: minikube service pf-service

I get a little further output:

Most likely you need to configure your SUID sandbox correctly

I have the hello-minikube image running, this works perfectly fine. So I presume it isn't my nacl?

I'm very new to kubernetes, so apologies in advance if it's very simple.

Thanks!

1 Answer 1

3

Service has got selector name: public-facing but pod has got label app: public-facing. They need to be same for Endpoints of the service to be populated with pod IPs.

If you execute below command

kubectl describe svc pf-service

You will see that Endpoints has got no IPs which is the cause of connection refused error.

Change the selector in service as below to make it work.

### pf service
apiVersion: v1
kind: Service
metadata:
  name: pf-service
  labels:
    run: pf-service-label
spec:
  type: NodePort ### may be ommited as it is a default type
  selector:
    app: public-facing ### should match your labels defined for your angular pods
  ports:
    - protocol: TCP
      targetPort: 5000 ### port your app listens on
      port: 5000 ### port on which you want to expose it within your cluster
0

Not the answer you're looking for? Browse other questions tagged or ask your own question.