kerberos-io / agent

An open and scalable video surveillance system for anyone making this world a better and more peaceful place.
https://kerberos.io
MIT License
642 stars 78 forks source link

Cannot start agent, "Something went wrong while opening RTSP: open : no such file or directory" #90

Closed UntouchedWagons closed 1 year ago

UntouchedWagons commented 1 year ago

Hi there. I'm trying to deploy K-agent in a K3S cluster and I'm having trouble getting the container to start, I keep getting the error {"level":"error","msg":"Something went wrong while opening RTSP: open : no such file or directory","time":"2023-03-23T21:09:15+01:00"} over and over in the log and I cannot find in your documentation how I'm supposed to add my cameras to the config.json file.

Here is my deployment file:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: agent
  labels:
    name: agent
spec:
  selector:
    matchLabels:
      app: agent
  replicas: 1
  template:
    metadata:
      labels:
        app: agent
    spec:
      volumes:
        - name: kerberos-data
          nfs:
            server: 192.168.5.5
            path: /mnt/nvme/K3S/Kerberos

      initContainers:
        - name: download-config
          image: kerberos/agent:1b96d01
          volumeMounts:
            - name: kerberos-data
              mountPath: /home/agent/data/config
              subPath: config
          command:
            [
              "cp",
              "/home/agent/data/config.template.json",
              "/home/agent/data/config/config.json",
            ]

      containers:
        - name: agent
          image: kerberos/agent:latest
          volumeMounts:
            - name: kerberos-data
              mountPath: /home/agent/data/config
              subPath: config
            - name: kerberos-data
              mountPath: /home/agent/data/recordings
              subPath: recordings
            - name: kerberos-data
              mountPath: /home/agent/data/snapshots
              subPath: snapshots
            - name: kerberos-data
              mountPath: /home/agent/data/cloud
              subPath: cloud
---
apiVersion: v1
kind: Service
metadata:
  name: agent
  namespace: default
spec:
  selector:
    app: agent
  ports:
  - name: http
    targetPort: 80
    port: 80
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: kerberos
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik-external
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`kerberos.services.untouchedwagons.site`)
      kind: Rule
      services:
        - name: kerberos
          port: 80
      middlewares:
        - name: default-headers
  tls:
    secretName: services-untouchedwagons-site-tls
cedricve commented 1 year ago

Hey @UntouchedWagons, it looks that for some reason your config cannot be read, and so the RTSP stream is not found. Can you SSH into the container and review the config.json file in the container.

UntouchedWagons commented 1 year ago

It must have been some kind of permissions issue, I've since switched to Longhorn for volume storage and the Kerberos agent starts just fine. My current deployment file:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: agent
  namespace: default
  labels:
    name: agent
spec:
  selector:
    matchLabels:
      app: agent
  replicas: 1
  template:
    metadata:
      labels:
        app: agent
    spec:
      volumes:
        - name: kerberos-data
          persistentVolumeClaim:
            claimName: longhorn-kerberos

      initContainers:
        - name: download-config
          image: kerberos/agent:bbbed49
          volumeMounts:
            - name: kerberos-data
              mountPath: /home/agent/data/config
              subPath: config
          command:
            [
              "cp",
              "/home/agent/data/config.template.json",
              "/home/agent/data/config/config.json",
            ]

      containers:
        - name: agent
          image: kerberos/agent:bbbed49
          volumeMounts:
            - name: kerberos-data
              mountPath: /home/agent/data/config
              subPath: config
            - name: kerberos-data
              mountPath: /home/agent/data/recordings
              subPath: recordings
            - name: kerberos-data
              mountPath: /home/agent/data/snapshots
              subPath: snapshots
            - name: kerberos-data
              mountPath: /home/agent/data/cloud
              subPath: cloud
---
apiVersion: v1
kind: Service
metadata:
  name: agent
  namespace: default
spec:
  selector:
    app: agent
  ports:
  - name: http
    targetPort: 80
    port: 80
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: kerberos
  namespace: default
  annotations:
    kubernetes.io/ingress.class: traefik-external
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`kerberos.services.untouchedwagons.site`)
      kind: Rule
      services:
        - name: agent
          port: 80
      middlewares:
        - name: default-headers
  tls:
    secretName: services-untouchedwagons-site-tls

For anyone reading this in the future the default login is root/root

cedricve commented 1 year ago

Thanks! Might be linked to this: https://github.com/kerberos-io/agent/issues/80.