我有什么方法可以复制我在cloud.docker上获得的行为,其中可以使用最新映像手动重新部署服务,或者在更新存储库映像时自动重新部署服务?
现在我在我的控制器和服务文件的shell脚本中手动执行此类操作:
kubectl delete -f ./ticketing-controller.yaml || true
kubectl delete -f ./ticketing-service.yaml || true
kubectl create -f ./ticketing-controller.yaml
kubectl create -f ./ticketing-service.yaml
即使这看起来有点沉重,但工作正常。我真的错过了我在cloud.docker上的autoredeploy功能。
答案 0 :(得分:1)
假设您运行的是nginx版本1.7.9:
$ kubectl run my-nginx --image=nginx:1.7.9 --replicas=3 deployment "my-nginx" created
要更新到1.9.1版,只需更改即可 来自
.spec.template.spec.containers[0].image
的{{1}}nginx:1.7.9
,使用kubectl命令。nginx:1.9.1
就是这样!部署将以声明方式更新已部署的nginx 应用程序逐步落后于现场。它确保只有一个 一定数量的旧复制品可能会在它们存在时失效 更新,并且只能创建一定数量的新副本 超过所需数量的豆荚。
答案 1 :(得分:1)
删除控制器yaml文件本身不会删除kubernetes中的实际控制器,除非您有特殊配置。如果您有多个实例正在运行,删除控制器可能不是您想要的,因为它会删除正在运行的应用程序的所有实例。你真正想要做的是执行应用程序的滚动更新,逐步用运行新映像的容器替换运行旧映像的容器。
您可以通过以下方式手动执行此操作:
Deployment
控制器更新yaml文件图像并执行kubectl apply
。ReplicationController
更新yaml文件并执行kubectl rollingupdate
。请参阅:http://kubernetes.io/docs/user-guide/rolling-updates/ kubectl set image
或者,您可以使用PaaS在回购中更新图像时自动推送图像。以下是几个Paas选项的不完整列表: