19.6.3. イメージのプルーニングに関する問題
イメージがプルーニングされない
イメージが蓄積し続け、prune
コマンドが予想よりも小規模な削除を実行する場合、プルーニングの候補と見なされるためにイメージに適用する必要のある 条件 を理解していることを確認してください。
とくに削除する必要のあるイメージが、それぞれの タグ履歴 において選択したタグリビジョンのしきい値よりも高い位置にあることを確認します。たとえば、sha:abz
という名前の古く陳腐化したイメージがあるとします。イメージがタグ付けされている namespace N
で以下のコマンドを実行すると、イメージが myapp
という単一イメージストリームで 3 回タグ付けされていることがわかります。
$ image_name="sha:abz" $ oc get is -n openshift -o go-template='{{range $isi, $is := .items}}{{range $ti, $tag := $is.status.tags}}{{range $ii, $item := $tag.items}}{{if eq $item.image "'$image_name'"}}{{$is.metadata.name}}:{{$tag.tag}} at position {{$ii}} out of {{len $tag.items}} {{end}}{{end}}{{end}}{{end}}' # Before this place {{end}}{{end}}{{end}}{{end}}, use new line myapp:v2 at position 4 out of 5 myapp:v2.1 at position 2 out of 2 myapp:v2.1-may-2016 at position 0 out of 1
デフォルトオプションが使用される場合、イメージは myapp:v2.1-may-2016
タグの履歴の 0
の位置にあるためプルーニングされません。イメージがプルーニングの対象と見なされるようにするには、管理者は以下を実行する必要があります。
oc adm prune images
コマンドで--keep-tag-revisions=0
を指定します。注意このアクションを実行すると、イメージが指定されたしきい値よりも新しいか、またはこれよりも新しいオブジェクトによって参照されていない限り、すべてのタグが基礎となるイメージと共にすべての namespace から削除されます。
-
リビジョンのしきい値の下にあるすべての istags、つまり
myapp:v2.1
およびmyapp:v2.1-may-2016
を削除します。 - 同じ istag にプッシュする新規ビルドを実行するか、または他のイメージをタグ付けしてイメージを履歴内でさらに移動させます。ただし、これは古いリリースタグの場合には常に適切な操作となる訳ではありません。
特定のイメージのビルド日時が名前の一部になっているタグは、その使用を避ける必要があります (イメージが未定義の期間保持される必要がある場合を除きます)。このようなタグは履歴内で 1 つのイメージのみに関連付けられる可能性があり、その場合にこれらをプルーニングできなくなります。istag 命名の詳細を参照してください。
非セキュアなレジストリーに対するセキュアな接続の使用
oc adm prune images
の出力で以下のようなメッセージが表示される場合、レジストリーのセキュリティーは保護されておらず、oc adm prune images
クライアントがセキュアな接続の使用を試行することを示しています。
error: error communicating with registry: Get https://172.30.30.30:5000/healthz: http: server gave HTTP response to HTTPS client
-
推奨される解決法は、レジストリーのセキュリティーを保護 することです。これが必要でない場合には、
--force-insecure
をコマンドに追加して、クライアントに対して非セキュアな接続の使用を強制することができます (これは推奨される方法ではありません)。
19.6.3.1. セキュリティーが保護されたレジストリーに対する非セキュアな接続の使用
oc adm prune images
コマンドの出力に以下のエラーのいずれかが表示される場合、レジストリーのセキュリティー保護に使用されている認証局で署名された証明書が、接続の検証用に oc adm prune images
クライアントで使用されるものとは異なることを意味します。
error: error communicating with registry: Get http://172.30.30.30:5000/healthz: malformed HTTP response "\x15\x03\x01\x00\x02\x02" error: error communicating with registry: [Get https://172.30.30.30:5000/healthz: x509: certificate signed by unknown authority, Get http://172.30.30.30:5000/healthz: malformed HTTP response "\x15\x03\x01\x00\x02\x02"]
デフォルトでは、ユーザーの接続ファイルに保存されている認証局データが使用されます。これはマスター API との通信の場合も同様です。
--certificate-authority
オプションを使用してコンテナーイメージレジストリーサーバーに適切な認証局を指定します。
正しくない認証局の使用
以下のエラーは、セキュリティーが保護されたコンテナーイメージレジストリーの証明書の署名に使用される認証局がクライアントで使用される認証局とは異なることを示しています。
error: error communicating with registry: Get https://172.30.30.30:5000/: x509: certificate signed by unknown authority
フラグ --certificate-authority
を使用して適切な認証局を指定します。
回避策として、--force-insecure
フラグを代わりに追加することもできます (推奨される方法ではありません)。