Kubernetes: Führen Sie AWS S3 Sync/Rsync bei Bedarf mit persistentem Volume aus.

Kubernetes: Führen Sie AWS S3 Sync/Rsync bei Bedarf mit persistentem Volume aus.

Gibt es in Kubernetes eine Möglichkeit, bei Bedarf einen Job auszulösen, der in meinen Containern ausgeführt wird?

Der Anwendungsfall besteht darin, die Container bei Bedarf von S3 auf ein persistentes Volume synchronisieren zu können. In der aktuellen Architektur der Anwendung werden neue Inhalte zu S3 hinzugefügt und mit einer Gruppe von Servern synchronisiert, die mit Chef verwaltet werden. Ich muss eine Möglichkeit finden, wie ein Team diese Funktionalität in den auf Kubernetes laufenden Containern auslösen kann.

Antwort1

Tatsächlich stellt Kubernetes einen flexiblen Mechanismus für automatisierte Aufgaben-Workloads wie einmalige Prozesse dar.Arbeitsplätzeund periodische Prozesse wieZeitgesteuerte Aufgabenbatch/v1, die im Kubernetes API-Objekt enthalten sindModell, daher ist die Lösung von @Tim für mich ganz anständig.

Ich nehme an, dass es für Sie möglich sein könnte, einen Pod mit einem auf einem Board zu starten, aws-clium eine Synchronisierungsaktion zwischen zugeordnetenaus PVCin diesen Container und Ziel-S3-Speicher. Zu diesem Zweck können Sie ein eigenes Image erstellen, das mit der erforderlichen Binärdatei portiert wurde, oder Sie verwenden eine fertige Lösung wie docker-kubectl-awsclidas Image, das von verwaltet wird@Expert360.

Der folgende Job führt aws s3 synceinen Befehl in einem bestimmten Container aus und startet eine Synchronisierungsaktion zwischen den Zielparteien:

apiVersion: batch/v1
kind: Job
metadata:
  name: backup-s3
spec:
  template:
    spec:
      containers:
      - name: kubectl-aws
        image: expert360/kubectl-awscli:v1.11.2
        env:
        - name: AWS_ACCESS_KEY_ID
          valueFrom:
            secretKeyRef:
              name: aws-s3-key
              key: aws-access-key-id
        - name: AWS_SECRET_ACCESS_KEY
          valueFrom:
            secretKeyRef:
              name: aws-s3-access-key
              key: aws-secret-access-key
        command: [ "/bin/bash", "-c", "aws s3 sync s3://my-bucket/ /data/backup" ]
        volumeMounts:
            - name: backup-aws
              mountPath: /data/backup
      volumes:
        - name: backup-aws
          persistentVolumeClaim:
            claimName: backup-aws-claim
      restartPolicy: Never

Sie müssen aws-clientsprechende AWS_ACCESS_KEY_IDund AWS_SECRET_ACCESS_KEYin bestimmten Kubernetes gespeicherte Umgebungsvariablen bereitstellenGeheimnisObjekte.

Antwort2

Werfen Sie einen Blick in das Projekt:https://github.com/nuvo/skbn. Es kann auch kube2iam-Funktionalitäten nutzen

verwandte Informationen