Home > Software engineering >  Service Endpoint not created although container port is online
Service Endpoint not created although container port is online

Time:06-22

I have a simple Service that connects to a port from a container inside a pod.
All pretty straight forward.

This was working too but out of nothing, the endpoint is not created for port 18080.
So I began to investigate and looked at this question but nothing that helped there.
The container is up, no errors/events, all green.
I can also call the request with the pods ip:18080 from an internal container, so the endpoint should be reachable for the service.

I can't see errors in:

journalctl -u snap.microk8s.daemon-*

I am using microk8s v1.20.

Where else can I debug this situation?
I am out of tools.

Service:

kind: Service
apiVersion: v1
metadata:
  name: aedi-service
spec:
  selector:
    app: server
  ports:
    - name: aedi-host-ws #-port
      port: 51056
      protocol: TCP
      targetPort: host-ws-port
    - name: aedi-http
      port: 18080
      protocol: TCP
      targetPort: fcs-http

Deployment:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-deployment
  labels:
    app: server
spec:
  replicas: 1
  selector:
    matchLabels:
      app: server
  template:
    metadata:
      labels:
        app: server
        srv: os-port-mapping
        name: dns-service
    spec:
      hostname: fcs
      containers:
        - name: fcs
          image: '{{$fcsImage}}'
          imagePullPolicy: {{$pullPolicy}}
          ports:
          - containerPort: 18080

Service Description:

Name:              aedi-service
Namespace:         fcs-only
Labels:            app.kubernetes.io/managed-by=Helm
Annotations:       meta.helm.sh/release-name: fcs-only
                   meta.helm.sh/release-namespace: fcs-only
Selector:          app=server
Type:              ClusterIP
IP Families:       <none>
IP:                10.152.183.247
IPs:               10.152.183.247
Port:              aedi-host-ws  51056/TCP
TargetPort:        host-ws-port/TCP
Endpoints:         10.1.116.70:51056
Port:              aedi-http  18080/TCP
TargetPort:        fcs-http/TCP
Endpoints:         
Session Affinity:  None
Events:            <none>

Pod Info:

NAME                                 READY   STATUS    RESTARTS   AGE   LABELS
server-deployment-76b5789754-q48xl   6/6     Running   0          23m   app=server,name=dns-service,pod-template-hash=76b5789754,srv=os-port-mapping

kubectl get svc aedi-service -o wide:

NAME           TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                                                                        AGE   SELECTOR
aedi-service   ClusterIP   10.152.183.247   <none>        443/TCP,1884/TCP,51052/TCP,51051/TCP,51053/TCP,51056/TCP,18080/TCP,51055/TCP   34m   app=server

CodePudding user response:

Your service spec refer to a port named "fcs-http" but it was not declared in the deployment. Try:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: server-deployment
...
        ports:
        - containerPort: 18080
          name: fcs-http  # <-- add the name here
...

CodePudding user response:

Wrong service configuration

- name: aedi-http
  port: 18080   -----> which expose service, it has not related with container port.
  protocol: TCP
  targetPort: fcs-http -----> Here should be 18080, correspond to container port

If you still want to use name instead of port number, you should define name too in deployment yaml, like below:

containers:
    - name: fcs
      image: '{{$fcsImage}}'
      imagePullPolicy: {{$pullPolicy}}
      ports:
      - containerPort: 18080
        name: fcs-http
  • Related