本篇内容介绍了“Kubernetes怎么更新APP”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!
创新互联,为您提供重庆网站建设、重庆网站制作、网站营销推广、网站开发设计,对服务成都砂岩浮雕等多个行业拥有丰富的网站建设及推广经验。创新互联网站建设公司成立于2013年,提供专业网站制作报价服务,我们深知市场的竞争激烈,认真对待每位客户,为客户提供赏心悦目的作品。 与客户共同发展进步,是我们永远的责任!
用户希望应用程序随时可用,而开发人员则希望每天多次部署新版本的应用程序。 在Kubernetes中,这是通过滚动更新完成的。 滚动更新允许部署的更新在零停机时间内进行,方法是使用新实例增量更新Pods实例。 新Pods将会被安排在具有可用资源的节点上。
默认情况下,在更新期间不可用的pod的最大数量和可以创建的新pod的最大数量是1。 这两个选项都可以配置为数字或百分比(pod的)。 在Kubernetes中,更新是版本控制的,任何部署更新都可以恢复到以前的(稳定的)版本。
与应用程序伸缩类似,如果部署是公开的,服务将只在更新期间将流量负载均衡到可用的pod 。 可用Pod是应用程序用户可用的实例。
滚动更新允许以下操作:
将应用程序从一个环境提升到另一个环境( 通过容器镜像更新)
回滚到以前版本
持续集成和应用程序的持续交付,并且没有停机时间
查看资源信息的命令:kubectl get deployments; kubectl get pods;kubectl describe pods
使用set image命令将应用程序的镜像更新到版本2:kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2,该命令通知部署为应用程序使用不同的映像,并启动滚动更新。再次使用kubectl get pods检查Pods的状态。
验证更新
首先,让我们检查应用程序是否正在运行。我们可以使用kubectl describe services/kubernetes-bootcamp命令找出公开的IP和端口。
创建一个名为NODE_PORT的环境变量,该变量具有指定的节点端口的值:export NODE_PORT=$(kubectl get services/kubernetes-bootcamp -o go-template='{{(index .spec.ports 0).nodePort}}') echo NODE_PORT=$NODE_PORT
接下来,我们将对公开的IP和端口通过curl来访问:curl $(minikube ip):$NODE_PORT,执行多次请求,每个请求都会碰到不同的Pod,我们看到所有Pod都在运行最新版本(v2)。
还可以通过运行rollout status命令来确认更新:kubectl rollout status deployments/kubernetes-bootcamp
要查看应用程序的当前镜像版本,执行:kubectl describe pods
回滚一个更新
让我们执行另一个更新,并部署标记为v10的镜像执行:kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=gcr.io/google-samples/kubernetes-bootcamp:v10
使用kubectl get deployments查看部署的状态。可能会发现有点问题,可用Pods的数量没有达到我们所期望的。使用kubectl get pods查看pods状态。kubectl describe pods命令可以提供更多的信息。从信息里可以发现存储库中没有标为v10的镜像。
让我们回到以前的可工作版本,我们将使用rollout撤销命令:kubectl rollout undo deployments/kubernetes-bootcamp.rollout命令会将部署恢复到以前的已知状态(v2版本镜像)。更新是有版本控制的,您可以恢复到以前已知的任何部署状态。再次执行kubectl get podskubectl describe pods
“Kubernetes怎么更新APP”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注创新互联网站,小编将为大家输出更多高质量的实用文章!