WinterMute
WinterMute

Reputation: 185

MicroK8S deploy webserver

I am playing with microk8s and I am trying to deploy nextcloud to get more familiar with it. However the deployment of nextcloud went fine, I am facing some issues with setting ingress for that. Maybe you could take a look at my manifests and ingress resource and help find me the problem.

This is the deployment file:

apiVersion: v1
kind: Service
metadata:
  namespace: nextcloud
  name: nextcloud-service
  labels:
    run: nextcloud-app
spec:
  ports:
    - port: 80
      targetPort: 8080
  selector:
    run: nextcloud-app
---
apiVersion: apps/v1
kind: Deployment
metadata:
  namespace: nextcloud
  name: nextcloud-deployment
  labels:
    app: nextcloud-app
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nextcloud-app
  template:
    metadata:
      labels:
        app: nextcloud-app
    spec:
      containers:
      - image: nextcloud:latest
        name: nextcloud
        env:
        - name: NEXTCLOUD_ADMIN_USER
          valueFrom:
            configMapKeyRef:
              name: nextcloud-configuration
              key: nextcloud_admin_user
        - name: NEXTCLOUD_ADMIN_PASSWORD
          valueFrom:
            secretKeyRef:
              name: nextcloud-secret
              key: admin_password
        ports:
        - containerPort: 8080
          name: http
        volumeMounts:
        - name: nextcloud-pv
          mountPath: /var/www/html/data
      volumes:
      - name: nextcloud-pv
        persistentVolumeClaim:
          claimName: nextcloud-pv-claim

and this is the ingress resource file:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: nextcloud-ingress
  namespace: nextcloud
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - http:
      paths:
      - path: /nextcloud
        pathType: Prefix
        backend:
          service:
            name: nextcloud-service
            port:
              number: 80

Following addons are enabled on my microk8s:

Now I would like to show you some k8s output.

kubectl -n nextcloud describe svc nextcloud-service

Name:              nextcloud-service
Namespace:         nextcloud
Labels:            run=nextcloud-app
Annotations:       <none>
Selector:          run=nextcloud-app
Type:              ClusterIP
IP:                10.152.183.189
Port:              <unset>  80/TCP
TargetPort:        8080/TCP
Endpoints:         <none>
Session Affinity:  None
Events:            <none>

kubectl -n nextcloud describe ingress nextcloud-ingress

Name:             nextcloud-ingress
Namespace:        nextcloud
Address:          192.168.60.2
Default backend:  default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
  Host        Path  Backends
  ----        ----  --------
  *           
              /nextcloud   nextcloud-service:80   <none>)
Annotations:  nginx.ingress.kubernetes.io/rewrite-target: /
Events:
  Type    Reason  Age                 From                      Message
  ----    ------  ----                ----                      -------
  Normal  CREATE  11m                 nginx-ingress-controller  Ingress nextcloud/nextcloud-ingress
  Normal  CREATE  11m                 nginx-ingress-controller  Ingress nextcloud/nextcloud-ingress
  Normal  UPDATE  63s (x22 over 11m)  nginx-ingress-controller  Ingress nextcloud/nextcloud-ingress
  Normal  UPDATE  63s (x22 over 11m)  nginx-ingress-controller  Ingress nextcloud/nextcloud-ingress

kubectl -n ingress logs pod/nginx-ingress-microk8s-controller-k2q6c

I1024 19:56:37.955953       6 status.go:275] updating Ingress nextcloud/nextcloud-ingress status from [{192.168.60.2 }] to [{127.0.0.1 }]
W1024 19:56:37.963861       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:56:37.964276       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192287", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
I1024 19:56:39.491960       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192295", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
W1024 19:56:41.297313       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:57:37.955734       6 status.go:275] updating Ingress nextcloud/nextcloud-ingress status from [{192.168.60.2 }] to [{127.0.0.1 }]
W1024 19:57:37.969214       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:57:37.969711       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192441", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
I1024 19:57:39.492467       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192446", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
W1024 19:57:41.302640       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:58:37.956198       6 status.go:275] updating Ingress nextcloud/nextcloud-ingress status from [{192.168.60.2 }] to [{127.0.0.1 }]
W1024 19:58:37.964655       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:58:37.965017       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192592", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
I1024 19:58:39.493436       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192600", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
W1024 19:58:41.298097       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:59:37.955569       6 status.go:275] updating Ingress nextcloud/nextcloud-ingress status from [{192.168.60.2 }] to [{127.0.0.1 }]
W1024 19:59:37.964975       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:59:37.965045       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192746", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
I1024 19:59:39.491840       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192750", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
W1024 19:59:41.298496       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 20:00:37.956061       6 status.go:275] updating Ingress nextcloud/nextcloud-ingress status from [{192.168.60.2 }] to [{127.0.0.1 }]
W1024 20:00:37.965139       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 20:00:37.965212       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192896", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
I1024 20:00:39.489924       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192904", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
W1024 20:00:41.298762       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 20:01:37.955481       6 status.go:275] updating Ingress nextcloud/nextcloud-ingress status from [{192.168.60.2 }] to [{127.0.0.1 }]
W1024 20:01:37.963612       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 20:01:37.963681       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"193049", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
I1024 20:01:39.490523       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"193058", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress
W1024 20:01:41.297141       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.

Calling http://k8s.ip/nextcloud results with 503. Any ideas what I am missing?

Upvotes: 1

Views: 774

Answers (1)

Dawid Kruk
Dawid Kruk

Reputation: 9877

As I posted in the comments:

You are receiving 503 code because you have a missmatch in your Service -> .spec.selector (run: nextcloud-app) and your Deployment -> .spec.selector.matchLabels (app: nextcloud-app). You will need to have them both the same. You can see it also when describing the service (no endpoint).

The issue in this particular setup is that there is a missmatch between a matchLabel in a Deployment and selector in the Service:

Deployment

spec:
  replicas: 1
  selector:
    matchLabels:
      app: nextcloud-app # <-- HERE!

Service:

spec:
  ports:
    - port: 80
      targetPort: 8080
  selector:
    run: nextcloud-app # <-- HERE!

To fix that you will need to have both of them matching (for example):

  • app: nextcloud-app in a Deployment and a Service

Some of the ways to identify mismatched selector (by using examples from post):

  • Manual inspection of YAML definitions as shown above
  • $ kubectl -n nextcloud describe svc nextcloud-service
Name:              nextcloud-service
Namespace:         nextcloud
Labels:            run=nextcloud-app
Annotations:       <none>
Selector:          run=nextcloud-app
Type:              ClusterIP
IP:                10.152.183.189
Port:              <unset>  80/TCP
TargetPort:        8080/TCP
Endpoints:         <none> # <-- HERE
Session Affinity:  None
Events:            <none>

Above describe shows that the service is created but there are no endpoints (Pods) to send the traffic to.

No endpoint could be also related to the fact that Pod is not Ready or is not in Healthy state

  • $ kubectl get endpoint -n nextcloud
NAME                 ENDPOINTS            AGE
nextcloud-service    <none>               1m     
  • Logs from Ingress controller (posted in the question):
I1024 19:56:37.955953       6 status.go:275] updating Ingress nextcloud/nextcloud-ingress status from [{192.168.60.2 }] to [{127.0.0.1 }]
W1024 19:56:37.963861       6 controller.go:909] Service "nextcloud/nextcloud-service" does not have any active Endpoint.
I1024 19:56:37.964276       6 event.go:278] Event(v1.ObjectReference{Kind:"Ingress", Namespace:"nextcloud", Name:"nextcloud-ingress", UID:"913dcf73-e5df-4ad9-a23b-22d6ad8b83a7", APIVersion:"networking.k8s.io/v1beta1", ResourceVersion:"192287", FieldPath:""}): type: 'Normal' reason: 'UPDATE' Ingress nextcloud/nextcloud-ingress

<--REDACTED--> Service "nextcloud/nextcloud-service" does not have any active Endpoint.


I encourage you to check the Helm chart of nextcloud:


Additional resources:

Upvotes: 1

Related Questions