Kubernetes:按需針對持久卷執行 aws s3sync/rsync

Kubernetes:按需針對持久卷執行 aws s3sync/rsync

Kubernetes 中有沒有辦法根據需要觸發作業在我的容器上運行?

用例是能夠根據需要將容器從 S3 同步到持久性磁碟區。在應用程式的目前架構中,新內容將新增至 S3 並同步到由 Chef 管理的一組伺服器。我需要有一種方法讓團隊能夠在 Kubernetes 上運行的容器中觸發此功能。

答案1

實際上,Kubernetes 代表了一種用於自動化任務工作負載(例如一次性流程)的靈活機制工作和週期性過程,如定時任務,它們包含在batch/v1Kubernetes API 物件中模型,因此@Tim 的解決方案對我來說相當不錯。

我假設您可以在aws-cli板上旋轉一些 pod,以便觸發映射之間的同步操作PVC進入此容器和目標 S3 儲存。為此,您可以建立自己的映像,並使用必要的二進位檔案進行移植,或使用現成的解決方案,例如docker-kubectl-awscli@專家360

以下作業將aws s3 sync在特定容器內執行命令並在目標方之間啟動同步操作:

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

您必須提供儲存在特定 Kubernetes 中的aws-cli對應AWS_ACCESS_KEY_ID環境變數AWS_SECRET_ACCESS_KEY秘密對象。

答案2

看看這個項目:https://github.com/nuvo/skbn。它還可以使用 kube2iam 功能

相關內容