2016-08-26 6 views
0

セキュリティ上の理由から、Kubernetesのレプリケーションコントローラからポッドやコンテナを時間や条件に基づいて "repave"または再生成することは現在可能ですか? x分/時間ごとまたは条件(トリップワイヤのようなもの)に基づいてスケジュールに基づいてコンテナを再作成しますか?私はこれが外部で行われることができることを知っています。それが既存の機能であった場合、またはこの目的を達成するための巧妙な方法がある場合は、好奇心が強いだけです。Kubernetesレプリケーションコントローラ/コンテナの再生成

答えて

0

そのままKubernetesに組み込まれているものではありませんが、Liveness probeを利用することで回避できます。あなたのポッド内のコンテナが特定の条件(時間またはイベントベース)で「失敗」する予定の場合、Kubernetesは自動的にポッドを再起動します。つまり、失敗したコンテナを再作成します。

0

もう1つの解決策は、Brendan Burn's ksql scriptを使用してターゲットポッドを特定することです。私は私の展開CIの仕事でこれを私の会社で使っています。 SQLは、再構築したばかりのイメージを実行しているすべてのポッドを検索し、その結果をBASH whileループに渡して、影響を受けるポッドを1つずつ破棄します。

#!/bin/bash 

# Build the ksql query 
QUERY="SELECT pods.metadata->name, pods.metadata->namespace " 
QUERY="${QUERY} FROM pods LEFT JOIN containers USING uid " 
QUERY="${QUERY} WHERE image LIKE '%/${CONTAINER_NAME}:${CONTAINER_TAG}'" 

exec 5>&1 # Duplicate stdout on #5 so we can display the 
      # results of the query and use them at the same time 

# Delete every pod matching QUERY. The `sed` and `awk` calls break down the formatted table 
while read line; do 
    namespace=`echo $line | cut -d' ' -f4` 
    pod=`echo $line | cut -d' ' -f2` 
    kubectl delete --namespace=$namespace pod $pod 
done < <(echo "$QUERY" | node node_modules/ksql/ksql.js | tee >(cat - >&5) | sed -n 'p;n' | tail -n +3) 

それは確かに、世界で最もエレガントな解決策ではないのですが、あなたのクラスタ内で実行されている容器の中にこのロジックを埋め込むことが十分に単純である可能性があります。

このテクニックの利点は、それが極端に柔軟で拡張可能であることです。

関連する問題