長時間実行中のクラスタK8Sは、必然的に頻繁にクリーニングを必要とし、無用ミラーやコンテナファイルの多くにつながります。
一般的に、DF -hは/ var / libに/ドッキングウィンドウのコマンドを介してローカルデータストレージパスは/ var / libに/ドッキングウィンドウのパスにあるデフォルトドッカーコンテナは、その占有率を表示します。80%以上の場合には、必要にクリーンアップすることを意味します。
まず、コマンドをクリーンアップ
2つのコマンドは、すなわち、あるコンテナのクリーンアップに関連した冗長データ:
ドッキングウィンドウの画像プルーン- AF
ドッキングウィンドウシステムプルーン -f
前記第一のコマンドが最初のコマンドであって、よりだけでなく、画像ファイルがコンテナをクリアするために使用され、過剰な第2のコマンドデータの除去、容器を停止、余分ミラー、未使用ボリューム、等を含みますより多くのコンテンツ。
上記の二つのコマンドは、統一されたスクリプトclean.shで実行することができます。
#!/ binに/ バッシュ need_clean(){ 使用 `= DF -hの/ var / libに/ドッカー| AWKの -F " [%] + " ' は/ dev / {$ 5印刷} ' ` 場合 [[$ -Ge使用80 ]。次に 返す0 のfi リターン1 } 場合 need_clean。その後、 ドッキングウィンドウの画像プルーン - AF 場合 need_clean。その後、 ドッキングウィンドウシステムプルーン - F Fi回線 Fiの
ここではawkによってカラム内の占有率-h DFため。-Fスペースや区切り文字%、指定された数の、百分率%が除外されることを「[%] +」を意味します。
場合にのみ、80%を超える占有率際clearコマンドの実行。最初のコマンドは、80%未満に低下した後、場合は、次のコマンドを実行する必要はありません。
第二には、スケジュールされたタスクを作成します
スクリプトは終了し、私たちは機械が自動的に適切なタイミングでそれを実行することができます願っています。これは、通常の作業が必要です。
実際には非常に簡単であるLinuxでのスケジュールされたタスクを作成します。あなたはシステムcrondプログラムを実行すると、あなただけの/ var /スプール/ cronのディレクトリに自分の名前を持つユーザーのファイルを作成する必要があり、crondは、自動的に適切なタイミングでそれを実行します。
例えば、我々は、ルート・ファイルを作成し、rootユーザーの管理マシンとしての/ var /スプール/ cronのディレクトリにあります。
@daily bashの/usr/local/bin/clean.sh
(もちろん、他のディレクトリでの)スクリプトコピーしては/ usr / local / binディレクトリには、その後、crond毎日深夜にスクリプトを実行します。
第三に、ファイルロックを追加
一つの可能性の高いシナリオは、時間は毎分スクリプトの実行を実行するように設定されている場合は、コマンドに表示される可能性がある、ということです行われていない、次のコマンドが来ました。そして、それが混乱の原因となります。このような状況に対処するために、我々は、コマンドを群れファイルのロックを追加する必要があります。ルート・ファイル上記のように書き換えることができます。
@daily群れ-n /tmp/.cleanlock -c " バッシュ/usr/local/bin/clean.sh "
これは、/ tmpに/ .cleanlock容易に特定することができます。ロックが取得されていない場合は-n平均、アクションなし。もちろん、実行日として、その後、長い期間のために、あなたはファイルロックを追加することはできません。
上記の動作により、システムが自動的にゼロ夜間毎日クラスタを実行するために十分なリソースを確保するため、あなたは冗長データをクリーンアップする必要があるかどうかを確認するでしょう。