Kubernetes等待部署完成

在CI/CD的时候,我们有时候需要等待部署完成,pod已经正常运行后,再进入容器执行一些命令,例如laravel环境下,我们需要等pod起来后,再执行migrate。

正确的方式应该是判断status,而不是使用kubectl wait

kubectl wait --for=condition=available --timeout=600s deployment/myapp -n namespace

因为这样只能判断deployment是否OK,并不能判断容器是否OK,正确的应该是以下脚本方式

ATTEMPTS=0
ROLLOUT_STATUS_CMD="kubectl rollout status deployment/myapp -n namespace"
until $ROLLOUT_STATUS_CMD || [ $ATTEMPTS -eq 60 ]; do
  $ROLLOUT_STATUS_CMD
  ATTEMPTS=$((attempts + 1))
  sleep 10
done
原文地址:https://www.cnblogs.com/flyingaway/p/13948388.html