wait_for_pods_to_exist() {
local ns=$1
local pod_name_prefix=$2
local max_wait_secs=$3
local interval_secs=2
local start_time
start_time=$(date +%s)
while true; do
current_time=$(date +%s)
if (( (current_time - start_time) > max_wait_secs )); then
echo "Waited for pods in namespace \"$ns\" with name prefix \"$pod_name_prefix\" to exist for $max_wait_secs seconds without luck. Returning with error."
return 1
fi
if kubectl -n "$ns" describe pod "$pod_name_prefix" --request-timeout "5s" &> /dev/null; then
echo "Pods in namespace \"$ns\" with name prefix \"$pod_name_prefix\" exist."
break
else
sleep $interval_secs
fi
done
}
wait_for_pods_to_exist "namespace" "pod_prefix" 120
此外,您还可以使用用途:
kubectl rollout status --namespace namespace deployment/deployment_name --timeout=600s
2条答案
按热度按时间ukxgm1gy1#
这是一个社区wiki的答案张贴更好的知名度。你可以随意扩展它。
如文件所示:
实验:等待一个或多个资源上的特定条件。
该命令接受多个资源并等待,直到在每个给定资源的Status字段中看到指定的条件。
或者,命令可以通过提供“delete”关键字作为--for标志的值来等待给定的资源集被删除。
一条成功的消息将被打印到stdout,指示何时满足了指定的条件。可以使用-o选项更改为输出目的地。
此命令不适用于尚未创建的资源。@EmruzHossain发表了两个有效的观点:
kubectl get
的循环。当找到所需的资源时,中断循环。然后,运行kubectl wait
以等待资源就绪。此外,还有这样一个开放的线程:kubectl wait for un-existed resource. #83242仍在等待(没有双关语)实现。
lf3rwulv2#
我在这里找到了脚本,并对其进行了一些调整:https://github.com/kubernetes/kubernetes/issues/83242#issuecomment-1739443762
此外,您还可以使用用途:
等待,直到花苞准备好工作。