
Kubernetes 中有沒有辦法根據需要觸發作業在我的容器上運行?
用例是能夠根據需要將容器從 S3 同步到持久性磁碟區。在應用程式的目前架構中,新內容將新增至 S3 並同步到由 Chef 管理的一組伺服器。我需要有一種方法讓團隊能夠在 Kubernetes 上運行的容器中觸發此功能。
答案1
實際上,Kubernetes 代表了一種用於自動化任務工作負載(例如一次性流程)的靈活機制工作和週期性過程,如定時任務,它們包含在batch/v1
Kubernetes 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 功能