2016-04-28 193 views
0

我有一个Deployment 3副本运行图像172.20.20.20:5000/my_app荚的图像,位于在我的私人注册表。升级部署的豆荚

我想要做一个滚动更新的部署时,我推新latest版本图像到我的注册表。

我推新形象这种方式(标签3.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将下载最新版本(现在称为“v3”),因为暗含的"Always" ImagePullPolicy

+0

谢谢。它帮了我很多:) –

+0

然后,如果我想自动执行更新过程,是否需要手动杀死Pod?真?请检查此:http://stackoverflow.com/questions/36920171/how-can-i-edit-a-deployment-without-modify-the-file-manually –

+0

@bigdestroyer不,如果您使用不同的图像版本的部署将为您处理所有事情。令人困惑的是,由于您没有指定任何标签,因此您将新版本推送到注册表为'最新'。 –