背景
皆さんが心配しているように、Openshift プライベート ウェアハウス ディスクが爆発し、使用率は 100% です!!!
これを使ってoc adm prune
Openshift クラスターをクリーンアップしてみませんか?
必要なミラー イメージも同時に削除されますか? 削除された場合は、DBA のように離れるしかありません。今日はその使い方について
お話しましょう。oc adm prune
最初に答えを出しなさい
ご想像のとおり、イメージをクリーンアップするための最終的な解決策は次のとおりです。oc adm prune images
oc login -u admin -p admin
oc adm prune images --keep-younger-than=400m --confirm
注意
上記のoc adm prune images
コマンドは、system:admin ユーザーではなく、通常のユーザーでのみ実行できるため、最初に通常のユーザーとしてログインする必要があり、ユーザーには system:image-pruner 権限が付与されています。
イメージ コマンド oc adm prune Images の使用量を削減します。
イメージがディスク領域を占有しすぎないようにするには、イメージを完全に間引く必要があります。画像を繰り返し構築する場合など、多くの場合、不要な画像レイヤーが多数残り、これらの画像レイヤーが多くのスペースを占有します。
oc adm prune images [<options>]
オプションの説明
パラメータ | 説明する |
---|---|
- 全て | デフォルト: true。プライベート ミラー ウェアハウス内の冗長ミラーを削除するだけでなく、ImageStream 内の外部ミラーに接続されている ImageStream も削除します。プライベート ミラー ウェアハウス内のミラーのみを削除する場合は、--all=false を設定します。 |
- 証明する機関 | プライベートミラーウェアハウスの証明書にアクセスするには、openshift のパスはマスターノードの /etc/origin/master/registry.crt です。クラスタ内のマスターノードでコマンドを実行する場合、このパラメータを追加する必要はありません。 |
- 確認する | 実装を確認し、追加されていない場合はドリルを確認するだけです |
--強制的に安全でない | 証明書チェックを行わずに安全でない接続を強制する |
--keep-tag-revisions=<N> | デフォルト: 3、各 ImageStream の各タグに対して N 個の画像を保持します。 |
--keep-younger-than=<期間> | デフォルト: 60m、作成時間が継続時間よりも短いイメージはクリーンアップされません。また、作成時間が継続時間よりも短いオブジェクトによって参照されるミラー イメージはクリーンアップされません。 |
--サイズ制限を超えたプルーン | 同じプロジェクトで指定された LimitRanges を超えるイメージをクリーンアップします。この優先順位は --keep-tag-revisions および --keep-younger-than と一緒に使用することはできません |
--レジストリ URL | プライベート ミラー リンク。コマンドがクラスター内のマスター ノードで実行される場合、このパラメーターを追加する必要はありません。 |
--keep-tag-revisions
と を使用して--keep-younger-than
ミラーをクリーンアップすると、以下の状況に該当するミラーはクリーンアップされません。
--keep-younger-than
指定された時間内に作成されたすべてのポッド--keep-younger-than
指定された時間内にすべての ImageStreamを作成します- 実行中のすべてのポッド
- すべてのポッドが保留状態にある
- すべてのレプリケーション コントローラー
- すべてのビルド構成
- すべてのビルド
- ImageStream の状態項目にある最新の
--keep-tag-revisions
画像
指定された制限を超えてクリアされたイメージを使用する場合
--prune-over-size-limit
、以下の場合、ポイントされたミラーはクリーンアップされません。
- 実行中のすべてのポッド
- すべてのポッドが保留状態にある
- すべてのレプリケーション コントローラー
- すべてのビルド構成
- すべてのビルド
注: 次の状況では、実際には画像は削除されません。
- イメージを手動で削除します。これにより削除されるのは etcd 内のデータのみであり、プライベート ウェアハウス内のミラー イメージは削除されません
oc delete image <sha256:image-id>
oc adm prune は、デプロイメントとビルドをクリーンアップするために使用されます
もちろんoc adm prune
、イメージをクリーンアップするために使用されるだけでなく、デプロイメントとビルドをクリーンアップするためにも使用されます。
oc adm prune deployments/builds [<options>]
オプションの説明
パラメータ | 説明する |
---|---|
- 確認する | 実装を確認し、追加されていない場合はドリルを確認するだけです |
--孤児たち | deploymentconfig/buildconfig に存在しないすべてのデプロイメント/ビルドをクリーンアップします。 |
--keep-complete=<N> | デフォルト: 5、最後に成功したデプロイメント/ビルドを保持します。 |
--keep-failed=<N> | デフォルト: 1、最新の N エラー展開/ビルドを保持します。 |
--keep-younger-than=<期間> | デフォルト: 60 分、作成時間がこの期間よりも短いデプロイメント/ビルドをクリーンアップしません。 |
例: デプロイメント/ビルドをクリーンアップする
oc adm prune deployments --orphans --keep-complete=5 --keep-failed=1 --keep-younger-than=60m --confirm
oc adm prune builds --orphans --keep-complete=5 --keep-failed=1 --keep-younger-than=60m --confirm
トラブルを起こさないように定期的に掃除をしましょう
$ cat cleanregistry.sh
#!/bin/bash
date
oc login -u admin -p password
oc adm prune builds --orphans --keep-complete=25 --keep-failed=5 --keep-younger-than=60m --confirm
oc adm prune deployments --orphans --keep-complete=25 --keep-failed=10 --keep-younger-than=60m --confirm
oc adm prune images --keep-younger-than=400m --confirm
$ crontab -l
0 0 * * * /usr/bin/cleanregistry.sh >> /var/log/cleanregistry.log 2>&1