我正在构建部署管道。我需要一个“ kubectl”命令,该命令将告诉我所有窗格都已完成部署,然后可以部署到下一个阶段。
答案 0 :(得分:2)
Deployment documentation建议使用kubectl rollout status
,如果部署未完成,则其中的内容将返回非零退出代码。 kubectl get deployment
将打印出类似的信息(预期有多少副本,可用副本和最新副本),您可以添加-w
选项进行观看。
为此,您还可以考虑使用Kubernetes APIs之一。您可以“获取”或“监视”部署对象,并获取与Deployment object的结构相匹配的内容。使用它,您可以再次监视副本数或嵌入的条件列表,并确定副本是否就绪。如果您使用的是“ watch” API,那么当对象状态更改时,您将继续获得更新。
这里的一个技巧是检测失败的部署。假设您要部署依赖于数据库的pod;通常的做法是使用您希望数据库具有的主机名来配置Pod,如果该主机名尚不存在,则会崩溃(并重新启动)。发生这种情况时,您可以短暂进入CrashLoopBackOff状态。当然,如果您的应用程序或部署完全错误,那么您也将进入CrashLoopBackOff状态,并且部署将停止进行。没有一个简单的方法可以将这两种情况区分开来。考虑绝对超时。