2017-07-28 12 views
0

現在、Atlassian BambooジョブをECSにスケジューリングしており、kubernetesで同じことを検討しています。私たちは、仕事に必要なもの(データベース、ドッカーデーモン、セレンなど)に基づいて1-nのサイドサービスコンテナを持つBambooエージェントコンテナを用意しています。 ECSでは、主エージェントコンテナを「必須」としてマークし、エージェントが作業を終了して終了すると、ECSタスク全体が崩壊し、他のすべてのサイドコンテナを終了しました。AWS ECS必須コンテナkubernetes

私たちはクーベルネットで同じことをどうやってしますか?私たちが持っている唯一の選択肢は、定期的にクラスタを突き抜けて、竹のエージェントのコンテナを終端してポッドをチェックし、ポッドを外から終わらせることです。コンテナの1つが死んだときにポッドを自動的に折りたたむ/終了させる方法はありますか?

答えて

0

あなたはおそらくKubernetesジョブオブジェクトを使用したい:https://kubernetes.io/docs/concepts/workloads/controllers/jobs-run-to-completion/

+0

重要なコンテナを重要なコンテナと重要でないコンテナをジョブ内で定義する方法を詳しく説明できますか?すべてのポッドのコンテナにはNeverというポリシーが再開されています。しかし、それは1つ(重要なもの)が死ぬときのケースを処理しません。 – mkleint

0

一つの方法は、コンテナのエントリポイントスクリプトのトラップ機能を使用して内部からポッドを殺すためにあるように思われます。 これは、serviceaccountに対する権限と、kubeクラスタAPIに対するhttp要求を実行する権限を必要とします。

function kube_cleanup { 
    # if running in kube only. 
    # assumes KUBE_POD_NAME is passed to this container. 
    if [ -f '/var/run/secrets/kubernetes.io/serviceaccount/namespace' ]; then 
     namespace=$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace) 
     token=$(cat /var/run/secrets/kubernetes.io/serviceaccount/token) 
     kube_url="https://kubernetes.default/api/v1/namespaces/$namespace/pods/$KUBE_POD_NAME" 
     curl -v --tlsv1.2 --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt -H "Authorization: Bearer $token" -X "DELETE" $kube_url 
    fi 
} 
trap kube_cleanup EXIT 
関連する問題