Kubernetes デプロイメント - イメージのチェックサムが変更されていない場合はポッドを再起動しない

Kubernetes デプロイメント - イメージのチェックサムが変更されていない場合はポッドを再起動しない

docker-compose現在、コンテナのデプロイメントに(実質的に)を使用しているシステムがありdocker-compose pull && docker-compose up、そのシステムを Kubernetes に変換するプロセスにあります。

Git リポジトリにプッシュされた Git タグに基づいて、本番環境に自動的にデプロイする CI/CD があります。ステージングでは、ブランチを進め続けます。Docker イメージはビルドされ、Git 本番環境タグまたは Git ステージング ブランチ名のいずれかでタグ付けされます。

デプロイメント時に、docker-composeイメージが実際に同じである場合、つまり 2 つのプロダクション タグが同じイメージを指している場合は、コンテナーを再起動しないほどインテリジェントです。

Kubernetes で同じことを実行する方法を探しています。デプロイメント時にポッドのコンテナに使用される実際のイメージがすでに実行されているものと同じである場合 (イメージ タグだけでなく、イメージ チェックサムに基づく)、ポッドを再起動する必要はありません。これは可能ですか?

ありがとう

答え1

コメントで述べたように、 ですぐに動作するはずですimagePullPolicy:Always

によるとドキュメンテーション

コンテナイメージ

imagePullPolicy とイメージのタグは、kubelet が指定されたイメージをプルしようとするタイミングに影響します。

画像プルポリシー:いつも: kubelet がコンテナを起動するたびに、kubelet はコンテナ イメージ レジストリを照会して、名前をイメージ ダイジェストに解決します。kubelet に、そのダイジェストがローカルにキャッシュされたコンテナ イメージがある場合、kubelet はそのキャッシュされたイメージを使用します。それ以外の場合、kubelet は解決されたダイジェストを含むイメージをダウンロード (プル) し、そのイメージを使用してコンテナを起動します。

注: コンテナーが常に同じバージョンのイメージを使用するようにするには、ダイジェストを指定できます。: を @ に置き換えます (例: image@sha256:45b23dee08af5e43a7fea6c4cf9c25ccf269ee113168c19722f87876677c5cb2)。ダイジェストはイメージの特定のバージョンを一意に識別するため、ダイジェスト値を変更しない限り、Kubernetes によって更新されることはありません。


また、成虫一見の価値があります。Imago は実行中のポッドの sha256 をチェックし、新しいイメージを使用する必要があるリソースを再起動します。

関連情報