Hi, Are you using some kind of network policy within your cluster ?
Best, Davide On Wed, 11 Jan 2023 at 10:53 Zsolt Kozak <koza...@gmail.com> wrote: > Hello Davide! > > I am running the File Daemon on the master node, on the control plane. > It's Kubernetes vanilla, version 1.25.4. > No, the master node is running on the same subnet as the workers. > > It should be some network issue, I think. > > Best regards, > Zsolt > > On Wed, Jan 11, 2023 at 8:45 AM Davide F. <bacula-...@dflc.ch> wrote: > >> Hello Kozak, >> >> I haven’t tried k8s plugin but let me try to understand what could be the >> root cause of your problem. >> >> Could you explain further point 1 please ? >> On which node are you running the file daemon ? >> >> Which version / flavor of Kubernetes are you using ? >> >> Is it Kubernetes vanilla ? OpenShift ? Tansu ? >> >> Depending on your feedback from the first question, does master nodes >> runs in a different subnet than worker’s ? >> >> Thanks for your feedback >> >> Best, >> >> Davide >> >> On Tue, 10 Jan 2023 at 21:12 Zsolt Kozak <koza...@gmail.com> wrote: >> >>> Hello, >>> >>> I have some problems with backuping Kubernetes PVCs with Bacula >>> Kubernetes Plugin. (I have asked it on bacula-users mailing list but got no >>> answer.) >>> >>> I am using the latest 13.0.1 Bacula from the community builds on Debian >>> Bullseye hosts. >>> >>> Backuping only the Kubernetes objects except Persistent Volume Claims >>> (PVC) works like a charm. I've installed the Kubernetes plugin and the >>> latest Bacula File Daemon on the master node (control plane) of our >>> Kubernetes cluster. Bacula can access the Kubernetes cluster and backup >>> every single object as YAML files. >>> >>> The interesting part comes with trying to backup a PVC... >>> >>> First of all I could build my own Bacula Backup Proxy Pod Image from the >>> source and it's deployed into our local Docker image repository (repo). The >>> Bacula File Daemon is configured properly I guess. Backup process started >>> and the following things happened. >>> >>> 1. Bacula File Daemon deployed Bacula Backup Proxy Pod Image into the >>> Kubernetes cluster, so Bacula-backup container pod started. >>> 2. I got into the pod and I could see the Baculatar application started >>> and running. >>> 3. The k8s_backend application started on the Bacula File Daemon host >>> (kubernetes.server) in 2 instances. >>> 4. From the Bacula-backup pod I could check that Baculatar could connect >>> to the k8s_backend at the default 9104 port (kubernetes.server:9104). >>> 5. I checked the console messages of the job with Bat that Bacula File >>> Daemon started to process the configured PVC, started to write a pvc.tar >>> but nothing happened. >>> 6. After default 600 sec, after timeout the job was cancelled. >>> 7. It may be important that Bacula File Daemon could not delete the >>> Bacula-backup pod. (It could create it but could not delete it.) >>> >>> >>> Could you please tell me what's wrong? >>> >>> >>> Here are some log parts. (I've changed some sensitive data.) >>> >>> >>> Bacula File Daemon configuration: >>> >>> FileSet { >>> Name = "Kubernetes Set" >>> Include { >>> Options { >>> signature = SHA512 >>> compression = GZIP >>> Verify = pins3 >>> } >>> Plugin = "kubernetes: \ >>> debug=1 \ >>> baculaimage=repo/bacula-backup:04jan23 \ >>> namespace=namespace \ >>> pvcdata \ >>> pluginhost=kubernetes.server \ >>> timeout=120 \ >>> verify_ssl=0 \ >>> fdcertfile=/etc/bacula/certs/bacula-backup.cert \ >>> fdkeyfile=/etc/bacula/certs/bacula-backup.key" >>> } >>> } >>> >>> >>> >>> Bacula File Daemon debug log (parts): >>> >>> >>> DEBUG:[baculak8s/jobs/estimation_job.py:134 in processing_loop] >>> processing get_annotated_namespaced_pods_data:namespace:nrfound:0 >>> DEBUG:[baculak8s/plugins/kubernetes_plugin.py:319 in >>> list_pvcdata_for_namespace] list pvcdata for namespace:namespace >>> pvcfilter=True estimate=False >>> DEBUG:[baculak8s/plugins/k8sbackend/pvcdata.py:108 in >>> pvcdata_list_namespaced] pvcfilter: True >>> DEBUG:[baculak8s/plugins/k8sbackend/pvcdata.py:112 in >>> pvcdata_list_namespaced] found:some-claim >>> DEBUG:[baculak8s/plugins/k8sbackend/pvcdata.py:127 in >>> pvcdata_list_namespaced] add pvc: {'name': 'some-claim', 'node_name': None, >>> 'storage_class_name': 'nfs-client', 'capacity': '2Gi', 'fi': >>> <baculak8s.entities.file_info.FileInfo object at 0x7ffaa55bfcc0>} >>> DEBUG:[baculak8s/jobs/estimation_job.py:165 in processing_loop] >>> processing list_pvcdata_for_namespace:namespace:nrfound:1 >>> DEBUG:[baculak8s/jobs/estimation_job.py:172 in processing_loop] >>> PVCDATA:some-claim:{'name': 'some-claim', 'node_name': 'node1', >>> 'storage_class_name': 'nfs-client', 'capacity': '2Gi', 'fi': >>> <baculak8s.entities.file_info.FileInfo object at 0x7ffaa55bfcc0>} >>> DEBUG:[baculak8s/io/log.py:110 in save_sent_packet] Sent Packet >>> I000041 >>> Start backup volume claim: some-claim >>> >>> DEBUG:[baculak8s/jobs/job_pod_bacula.py:298 in prepare_bacula_pod] >>> prepare_bacula_pod:token=xx88M5oggQJ....4YDbSwBRxTOhT namespace=namespace >>> DEBUG:[baculak8s/jobs/job_pod_bacula.py:136 in prepare_pod_yaml] >>> pvcdata: {'name': 'some-claim', 'node_name': 'node1', 'storage_class_name': >>> 'nfs-client', 'capacity': '2Gi', 'fi': >>> <baculak8s.entities.file_info.FileInfo object at 0x7ffaa55bfcc0>} >>> DEBUG:[baculak8s/plugins/k8sbackend/baculabackup.py:102 in >>> prepare_backup_pod_yaml] host:kubernetes.server port:9104 >>> namespace:namespace image:repo/bacula-backup:04jan23 >>> job:KubernetesBackup.2023-01-04_21.05.03_10:410706 >>> DEBUG:[baculak8s/io/log.py:110 in save_sent_packet] Sent Packet >>> I000149 >>> Prepare Bacula Pod on: node1 with: repo/bacula-backup:04jan23 >>> <IfNotPresent> kubernetes.server:9104 >>> >>> DEBUG:[baculak8s/jobs/job_pod_bacula.py:198 in >>> prepare_connection_server] prepare_connection_server:New ConnectionServer: >>> 0.0.0.0:9104 >>> DEBUG:[baculak8s/util/sslserver.py:180 in listen] >>> ConnectionServer:Listening... >>> DEBUG:[baculak8s/jobs/job_pod_bacula.py:307 in prepare_bacula_pod] >>> prepare_bacula_pod:start pod >>> INFO:[baculak8s/plugins/kubernetes_plugin.py:771 in backup_pod_isready] >>> backup_pod_status:isReady: False / 0 >>> INFO:[baculak8s/plugins/kubernetes_plugin.py:771 in backup_pod_isready] >>> backup_pod_status:isReady: True / 1 >>> DEBUG:[baculak8s/jobs/estimation_job.py:183 in _estimate_file] {'name': >>> 'some-claim', 'node_name': 'node1', 'storage_class_name': 'nfs-client', >>> 'capacity': '2Gi', 'fi': <baculak8s.entities.file_info.FileInfo object at >>> 0x7ffaa55bfcc0>} >>> DEBUG:[baculak8s/jobs/estimation_job.py:190 in _estimate_file] >>> file_info: {FileInfo >>> name:/@kubernetes/namespaces/namespace/persistentvolumeclaims/some-claim.tar >>> namespace:None type:F objtype:pvcdata cached:False} >>> DEBUG:[baculak8s/io/log.py:110 in save_sent_packet] Sent Packet >>> C000079 >>> >>> FNAME:/@kubernetes/namespaces/namespace/persistentvolumeclaims/some-claim.tar >>> >>> >>> DEBUG:[baculak8s/io/log.py:110 in save_sent_packet] Sent Packet >>> C000040 >>> TSTAMP:1672861077 1672861077 1672861077 >>> >>> DEBUG:[baculak8s/io/log.py:110 in save_sent_packet] Sent Packet >>> C000031 >>> STAT:F 2147483648 0 0 100640 1 >>> >>> DEBUG:[baculak8s/io/log.py:110 in save_sent_packet] Sent Packet >>> F000000 >>> (EOD PACKET) >>> >>> DEBUG:[baculak8s/jobs/backup_job.py:77 in __backup_pvcdata] >>> backup_pvcdata:data recv >>> DEBUG:[baculak8s/io/log.py:110 in save_sent_packet] Sent Packet >>> C000005 >>> DATA >>> >>> DEBUG:[baculak8s/util/sslserver.py:193 in handle_connection] >>> ConnectionServer:Connection from: ('192.168.XX.YY', 10541) >>> DEBUG:[baculak8s/util/sslserver.py:145 in gethello] ['Hello', >>> 'KubernetesBackup.2023-01-04_21.05.03_10', '410706'] >>> DEBUG:[baculak8s/util/token.py:57 in check_auth_data] AUTH_DATA:Token: >>> xx88M5oggQJuGsPbtD........ohQjeU7PkA4YDbSwBRxTOhT >>> DEBUG:[baculak8s/util/token.py:59 in check_auth_data] >>> RECV_TOKEN_DATA:Token: xx88M5oggQJuGsPbtD....ohQjeU7PkA4YDbSwBRxTOhT >>> DEBUG:[baculak8s/util/sslserver.py:105 in authenticate] >>> ConnectionServer:Authenticated >>> >>> .... after timeout >>> >>> DEBUG:[baculak8s/jobs/job_pod_bacula.py:121 in handle_pod_data_recv] >>> handle_pod_data_recv:EOT >>> DEBUG:[baculak8s/util/sslserver.py:201 in handle_connection] >>> ConnectionServer:Finish - disconnect. >>> DEBUG:[baculak8s/jobs/backup_job.py:85 in __backup_pvcdata] >>> backup_pvcdata:logs recv >>> >>> >>> >>> >>> Job messages: >>> >>> bacula-dir No prior or suitable Full backup found in catalog for the >>> current FileSet. Doing FULL backup. >>> The FileSet "Kubernetes Set" was modified on 2023-01-04 20:20:41, this >>> is after the last successful backup on 2023-01-04 19:19:49. >>> bacula-sd Ready to append to end of Volume "Full-XXX" size=3,838,161,002 >>> bacula-fd Connected to Storage at bacula.server:9103 with TLS >>> bacula-sd Volume "Full-XXXX" previously written, moving to end of data. >>> bacula-dir Connected to Client "bacula-fd" at kubernetes.server:9102 >>> with TLS >>> Using Device "FileStorageEeyoreFull" to write. >>> Connected to Storage "InternalStorageFull" at bacula.server:9103 with >>> TLS >>> Start Backup JobId 410830, Job=KubernetesBackup.2023-01-04_21.05.03_10 >>> bacula-fd kubernetes: Prepare Bacula Pod on: node with: >>> repo/bacula-backup:04jan23 kubernetes.server:9104 >>> kubernetes: Processing namespace: namespace >>> kubernetes: Start backup volume claim: some-claim >>> kubernetes: Connected to Kubernetes 1.25 - v1.25.4. >>> bacula-dir >>> Error: Bacula Enterprise bacula-dir 13.0.1 (05Aug22): >>> Build OS: x86_64-pc-linux-gnu-bacula-enterprise debian >>> 11.2 >>> JobId: 410830 >>> Job: KubernetesBackup.2023-01-04_21.05.03_10 >>> Backup Level: Full (upgraded from Differential) >>> Client: "bacula-fd" 13.0.1 (05Aug22) >>> x86_64-pc-linux-gnu-bacula-enterprise,debian,10.11 >>> FileSet: "Kubernetes Set" 2023-01-04 20:20:41 >>> Pool: "Full-Pool" (From Job FullPool override) >>> Catalog: "MyCatalog" (From Client resource) >>> Storage: "InternalStorageFull" (From Pool resource) >>> Scheduled time: 04-Jan-2023 21:05:03 >>> Start time: 04-Jan-2023 21:27:04 >>> End time: 04-Jan-2023 21:29:06 >>> Elapsed time: 2 mins 2 secs >>> Priority: 10 >>> FD Files Written: 23 >>> SD Files Written: 0 >>> FD Bytes Written: 52,784 (52.78 KB) >>> SD Bytes Written: 0 (0 B) >>> Rate: 0.4 KB/s >>> Software Compression: 100.0% 1.0:1 >>> Comm Line Compression: 5.6% 1.1:1 >>> Snapshot/VSS: no >>> Encryption: yes >>> Accurate: yes >>> Volume name(s): Full-XXXX >>> Volume Session Id: 43 >>> Volume Session Time: 1672853724 >>> Last Volume Bytes: 3,838,244,105 (3.838 GB) >>> Non-fatal FD errors: 3 >>> SD Errors: 0 >>> FD termination status: OK >>> SD termination status: SD despooling Attributes >>> Termination: *** Backup Error *** >>> Fatal error: catreq.c:680 Restore object create error. >>> bacula-fd >>> Error: kubernetes: PTCOMM cannot get packet header from backend. >>> bacula-dir Fatal error: sql_create.c:1273 Create db Object record INSERT >>> INTO RestoreObject >>> (ObjectName,PluginName,RestoreObject,ObjectLength,ObjectFullLength,ObjectIndex,ObjectType,ObjectCompression,FileIndex,JobId) >>> VALUES ('RestoreOptions','kubernetes: \n debug=1 \n >>> baculaimage=repo/bacula-backup:04jan23 \n namespace=namespace >>> \n pvcdata \n >>> pluginhost=kubernetes.server \n timeout=120 \n >>> verify_ssl=0 \n fdcertfile=/etc/bacula/certs/bacula-backup.cert >>> \n >>> fdkeyfile=/etc/bacula/certs/bacula-backup.key','# Plugin configuration >>> file\n# Version 1\nOptPrompt=\"K8S config >>> file\"\nOptDefault=\"*None*\"\nconfig=@STR@\n\n >>> OptPrompt=\"K8S API server >>> URL/Host\"\nOptDefault=\"*None*\"\nhost=@STR@\n\nOptPrompt=\"K8S >>> Bearertoken\"\nOptDefault=\"*None*\"\ntoken=@STR@\n\nOptPrompt=\"K8S >>> API server cert verification\"\n >>> OptDefault=\"True\"\nverify_ssl=@BOOL@\n\nOptPrompt=\"Custom CA Certs >>> file to >>> use\"\nOptDefault=\"*None*\"\nssl_ca_cert=@STR@\n\nOptPrompt=\"Output >>> format when saving to file (JSON, YAML)\"\n >>> OptDefault=\"RAW\"\noutputformat=@STR@\n\nOptPrompt=\"The address for >>> listen to incoming backup pod >>> data\"\nOptDefault=\"*FDAddress*\"\nfdaddress=@STR@\n\n >>> OptPrompt=\"The port for opening socket for >>> listen\"\nOptDefault=\"9104\"\nfdport=@INT32@\n\nOptPrompt=\"The >>> endpoint address for backup pod to connect\"\n >>> OptDefault=\"*FDAddress*\"\npluginhost=@STR@\n\nOptPrompt=\"The >>> endpoint port to connect\"\nOptDefault=\"9104\"\n >>> pluginport=@INT32@\n\n',859,859,0,27,0,1,410830) failed. ERR=Data too >>> long for column 'PluginName' at row 1 >>> >>> bacula-sd Sending spooled attrs to the Director. Despooling 8,214 bytes >>> ... >>> bacula-fd >>> Error: kubernetes: Error closing backend. Err=Child exited with code 1 >>> Fatal error: kubernetes: Wrong backend response to JobEnd command. >>> bacula-sd Elapsed time=00:02:02, Transfer rate=659 Bytes/second >>> bacula-fd >>> Error: kubernetes: PTCOMM cannot get packet header from backend. >>> >>> Error: kubernetes: Cannot successfully start bacula-backup pod in >>> expected time! >>> >>> Error: kubernetes: Job already running in 'namespace' namespace. Check >>> logs or delete bacula-backup Pod manually. >>> >>> >>> Best regards, >>> Zsolt >>> >>> _______________________________________________ >>> Bacula-devel mailing list >>> Bacula-devel@lists.sourceforge.net >>> https://lists.sourceforge.net/lists/listinfo/bacula-devel >>> >>
_______________________________________________ Bacula-devel mailing list Bacula-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bacula-devel