如何通过oc CLI监控指定Pod(如consoleapp)的运行进度?
你之前用oc get pods consoleapp --watch无效,是因为consoleapp是DeploymentConfig(DC)的名称,而非Pod的名称——Pod的命名通常是consoleapp-<版本号>-<随机后缀>格式,直接指定DC名称无法匹配到对应的Pod。以下是几种无需触发新部署,就能监控该应用Pod状态的实用方法:
标签筛选实时监控Pod状态
每个由DC创建的Pod都会自动带上deploymentconfig=<DC名称>的标签,利用这个标签可以精准筛选目标Pod并开启监控:oc get pods -l deploymentconfig=consoleapp --watch执行后会实时输出该DC下所有Pod的状态变化,比如从
Pending到Running、Ready的过程,直到你按Ctrl+C停止监控。如果需要查看更详细信息(如节点、就绪状态占比),可以加上-o wide参数:oc get pods -l deploymentconfig=consoleapp -o wide --watch等待Pod达到就绪状态
如果你只需要确认所有扩容后的Pod都进入活跃就绪状态,可以用oc wait命令,它会阻塞直到满足指定条件:oc wait pods -l deploymentconfig=consoleapp --for=condition=Ready --timeout=-1其中
--timeout=-1表示无限等待,直到所有匹配的Pod都满足Ready条件后,命令会自动退出并返回成功。结合DC状态间接监控Pod
虽然你不想触发新部署,但oc rollout status其实可以用来查看现有DC的状态,只要加上--watch参数,它会持续监控DC对应的Pod状态变化,而不会触发新的部署:oc rollout status deploymentconfig/consoleapp --watch这个命令会实时反馈DC的副本就绪情况,比如“replication controller "consoleapp-2" successfully rolled out”或者“Waiting for deployment config "consoleapp" rollout to finish: 1 out of 3 new replicas have been updated...”,直到所有副本都就绪。
内容的提问来源于stack exchange,提问作者B.Allen

