首页 > 解决方案 > Go 客户端 SDK:检查 Deployment 是否完全就绪

问题描述

假设我有一个内存中的部署对象,如果它完全准备好,正确的测试方法是什么?(不在推出、升级或回滚的过程中)。

标签: kubernetes

解决方案


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


我认为没有正确的方法可以做到这一点,因为它取决于许多变量。比如你精通什么语言等等。

在我工作的地方,我们运行 akubectl 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
}

推荐阅读