
Kubernetes で、オンデマンドでコンテナ上でジョブを実行するようにトリガーする方法はありますか?
ユースケースは、コンテナをオンデマンドで S3 から永続ボリュームに同期できるようにすることです。アプリケーションの現在のアーキテクチャでは、新しいコンテンツが S3 に追加され、Chef で管理されているサーバーのグループに同期されます。Kubernetes で実行されているコンテナでチームがこの機能をトリガーできるようにする方法が必要です。
答え1
実際、Kubernetesは、1回限りのプロセスなどの自動化されたタスクワークロードのための柔軟なメカニズムを表しています。求人そして、次のような定期的なプロセスCronジョブbatch/v1
Kubernetes APIオブジェクトに含まれるモデルしたがって、@Tim からの解決策は私にとって非常に適切です。
aws-cli
ボード上のポッドを起動して、マップされたデバイス間の同期アクションをトリガーすることは可能だと思います。ポリ塩化ビニルdocker-kubectl-awscli
このコンテナにインポートしてS3ストレージをターゲットにします。そのためには、必要なバイナリを移植した独自のイメージを作成するか、または、翻訳者。
次のジョブは、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/skbnkube2iamの機能も使用できます