apiVersion: apps/v1 kind: DaemonSet metadata: name: sync-daemon namespace: kube-system labels: app: sync-daemon spec: selector: matchLabels: app: sync-daemon template: metadata: labels: app: sync-daemon spec: hostNetwork: true containers: - name: sync-container image: alpine:latest securityContext: privileged: true ports: - containerPort: 873 volumeMounts: - name: pf9-env mountPath: /etc/pf9 readOnly: true - name: vmwarelib mountPath: /home/ubuntu/vmware-vix-disklib-distrib command: ["/bin/sh", "-c"] args: - | # Install required packages apk add --no-cache rsync coreutils grep; # Extract variables from environment file IS_MASTER=$(grep -E '^export IS_MASTER=' /etc/pf9/k3s.env | cut -d'=' -f2) MASTER_IP=$(grep -E '^export MASTER_IP=' /etc/pf9/k3s.env | cut -d'=' -f2) if [ "$IS_MASTER" = "true" ]; then echo "Master node detected. IP: $MASTER_IP" # Start rsync daemon using the pre-created config file echo "Starting rsync daemon..." rsync --daemon --config=/etc/pf9/rsyncd.conf --no-detach # Verify rsync daemon is running if ps aux | grep rsync | grep -v grep; then echo "rsync daemon is running." else echo "Failed to start rsync daemon." exit 1 fi else echo "Worker node detected. Syncing from Master..." while true; do mkdir -p /home/ubuntu/vmware-vix-disklib-distrib/ echo "Syncing from rsync://${MASTER_IP}" rsync -avz rsync://${MASTER_IP}/vmwarelib/ /home/ubuntu/vmware-vix-disklib-distrib/ if [ $? -eq 0 ]; then echo "Sync completed successfully." else echo "Sync failed. Retrying in 60 seconds..." fi sleep 20 # Retry every 60 seconds done fi volumes: - name: pf9-env hostPath: path: /etc/pf9 type: Directory - name: vmwarelib hostPath: path: /home/ubuntu/vmware-vix-disklib-distrib type: DirectoryOrCreate