イメージを使用するKubernetesデプロイメントがあります:test:latest
(実際のイメージ名ではなく、最新のタグです)。この画像はDockerハブにあります。 test:latest
の新しいバージョンをdockerhubにプッシュしました。 Kubernetesでのポッドの新しいデプロイを期待していましたが、何も起こりませんでした。
私は次のような配置を作成しました:
kubectl run sample-app --image=`test:latest` --namespace=sample-app --image-pull-policy Always
新しいイメージのプッシュ後にトリガーされる新しい展開がないのはなぜですか?
Kubernetesはnotイメージの新しいバージョンを監視しています。イメージプルポリシーは、コンテナーを実行するためにイメージを取得する方法を指定します。 Always
は、コンテナを起動するたびに新しいバージョンをプルしようとすることを意味します。更新を表示するには、ポッドを削除する必要があります(デプロイメントではありません)-新しく作成されたポッドが新しいイメージを実行します。
Kubernetesで実行中のコンテナを新しいイメージで自動的に更新する直接的な方法はありません。これは継続的デリバリーシステムの一部になります(おそらくkubectl set image
新しいsha256sumまたはイメージタグを使用しますが、latest
は使用できません)。
Ymlファイルを使用している場合は、
kubectl apply -f myfile.yml
そして
imagePullPolicy: Always
ファイルでは、k8sは新しいイメージをプルしません。最初にポッドを削除する必要があります。K8sデプロイメントはイメージを自動的にプルします。