kubernetes - Go 客户端 SDK:检查 Deployment 是否完全就绪
问题描述
假设我有一个内存中的部署对象,如果它完全准备好,正确的测试方法是什么?(不在推出、升级或回滚的过程中)。
解决方案
我无法评论,所以它必须是一个答案。
我认为没有正确的方法可以做到这一点,因为它取决于许多变量。比如你精通什么语言等等。
在我工作的地方,我们运行 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
}
推荐阅读
- azure-functions - 使用 IAsyncCollector
.AddAsync() 与循环中的表存储不保存 - java - 如何检查 Java 派生类型是否是当前调用堆栈的一部分?
- java - Java - 如何使用枚举/工厂模式基于字符串调用相应类的方法
- oracle - 如果 Crysal 报告中保持日期格式的日期字段的其他公式 - 不是字符串
- c# - 属性类型更改后的 JSON 反序列化
- scala - Spark提交,如何读取用户输入参数?
- android - 使用 ListTile 并出现异常:未布置 RenderBox
- yii2 - 如何在 yii2 搜索模型中使用 joinWith 使用关系
- c++ - 如何创建 shared_ptr 的容器到抽象类
- tfs - 无法在 TFS 2018 Web 门户中使用自定义工作项表单