Kubernetes怎么更新APP
更新:HHH   时间:2023-1-7


本篇内容介绍了“Kubernetes怎么更新APP”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

执行滚动更新

更新应用程序

用户希望应用程序随时可用,而开发人员则希望每天多次部署新版本的应用程序。 在Kubernetes中,这是通过滚动更新完成的。 滚动更新允许部署的更新在零停机时间内进行,方法是使用新实例增量更新Pods实例。 新Pods将会被安排在具有可用资源的节点上。

 默认情况下,在更新期间不可用的pod的最大数量和可以创建的新pod的最大数量是1。 这两个选项都可以配置为数字或百分比(pod的)。 在Kubernetes中,更新是版本控制的,任何部署更新都可以恢复到以前的(稳定的)版本。

滚动更新概述

与应用程序伸缩类似,如果部署是公开的,服务将只在更新期间将流量负载均衡到可用的pod 。 可用Pod是应用程序用户可用的实例。

滚动更新允许以下操作:

  • 将应用程序从一个环境提升到另一个环境( 通过容器镜像更新)

  • 回滚到以前版本

  • 持续集成和应用程序的持续交付,并且没有停机时间

  1. 查看资源信息的命令:kubectl get deployments; kubectl get pods;kubectl describe pods

  2. 使用set image命令将应用程序的镜像更新到版本2:kubectl set image deployments/kubernetes-bootcamp kubernetes-bootcamp=jocatalin/kubernetes-bootcamp:v2,该命令通知部署为应用程序使用不同的映像,并启动滚动更新。再次使用kubectl get pods检查Pods的状态。

  3. 验证更新

    首先,让我们检查应用程序是否正在运行。我们可以使用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

  4. 回滚一个更新

    让我们执行另一个更新,并部署标记为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”的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注天达云网站,小编将为大家输出更多高质量的实用文章!

返回云计算教程...