Go客户端SDK:检查部署是否已准备就绪

时间:2019-07-09 02:30:32

标签: kubernetes

说我有一个内存中的Deployment对象,测试它是否已准备就绪的正确方法是什么? (不在部署,升级或回滚过程中)。

1 个答案:

答案 0 :(得分:1)

我无法发表评论,所以这必须是一个答案。


我认为这样做没有 正确的方法 ,因为它取决于许多变量。例如您精通哪些语言等等。

在我工作的地方,我们运行kubectl get pods并grep相关信息(在这种情况下,如果pod可用(就绪),则全部通过bash运行)启动脚本:

function not_ready_count() {
  kubectl ${1} get pods -o json | jq -r '.items[].status.conditions[].status' | grep False | wc -l | awk '{ print $1 }'
}

function not_running_count() {
  kubectl ${1} get pods -o json | jq -r '.items[].status.phase' | grep -v Running | wc -l | awk '{ print $1 }'
}

function wait_until_running_and_ready() {
  sleep 2
  while [[ "$(not_running_count ${1})" != "0" ]]; do
    echo "waiting for $(not_ready_count ${1}) pods to start"
    sleep 3
  done
  while [[ "$(not_ready_count ${1})" != "0" ]]; do
    echo "waiting for $(not_ready_count ${1}) status probes to pass"
    sleep 3
  done
  sleep 2
}