2016-04-28 5 views
0

172.20.20.20:5000/my_appを実行しているポッドの3つのレプリカを持つDeploymentがあります。これは私のプライベートレジストリにあります。デプロイメントのポッド内でのイメージのアップグレード

私は私のレジストリにそのイメージの新しいバージョンlatestを押すと、展開にローリング更新を行いたいと思います。

私は、新しいイメージこの方法(最新のタグV3.0)押す:

$ docker tag 172.20.20.20:5000/my_app:3.0 172.20.20.20:5000/my_app 
$ docker push 172.20.20.20:5000/my_app 

をしかし、何も起こりません。ポッドの画像はアップグレードされません。これは私の展開の定義です:

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: myapp-deployment 
spec: 
    replicas: 3 
    template: 
    metadata: 
     labels: 
     app: myapp 
    spec: 
     containers: 
     - name: app 
     image: 172.20.20.20:5000/my_app:latest 
     ports: 
     - containerPort: 8080 

これは自動的に行う方法はありますか? ReplicaControllersのようにrolling-updateのようなコマンドを実行すべきですか?ために

答えて

1

upgrade a Deploymentに新しいイメージで展開リソースを変更する必要があります。たとえば、172.20.20.20:5000/my_app:v1を172.20.20.20:5000/my_app:v2に変更します。 Dockerレジストリ内の画像を変更しているだけなので、変更に気づくことはありません。

あなたが(手動)個々のポッドを殺した場合、展開は、それらを再起動します。展開イメージで「最新の」タグが指定されているため、Kubernetesは"Always" ImagePullPolicyという暗黙のために最新のバージョン(現在は "v3")をダウンロードします。

+0

感謝。それは私の多くの助け:) –

+0

その後、私は更新プロセスを自動化したい場合は、手動でポッドを殺すことができますか?本当に?これを確認してください:http://stackoverflow.com/questions/36920171/how-can-i-edit-a-deployment-without-modify-the-file-manually –

+0

@bigdestroyerいいえ、別のイメージバージョンを使用している場合、デプロイメントあなたのためにすべてを処理します。この混乱は、タグを指定していないので、新しいバージョンをレジストリに「最新」としてプッシュしているためです。 –

関連する問題