bash 可以使用 kubectl get pods 运行 按顺序查看日志吗?
can bash use kubectl get pods run a log watch sequentially?
注意:与 Kubernetes 相比,这更多是 bash/shell 脚本问题。
所以我有一个 pod 副本,所以 kubectl get pods
只会 return 一个活动副本。
从概念上讲,我想做的很简单。我想和观察者一起做一个 kubectl logs my-pod-nnn1
,但是当那个 pod 终止时,我想流式传输一条消息“my-pod-nnn1 终止,现在记录 my-pod-nnn2”,然后流式传输新日志。这是一个相当复杂的过程(对我来说),我想知道我可以采取什么方法,以及是否可以(或者可能不需要)使用某种多线程(我还没有这样做)。谢谢
作为您需要做的事情的粗略概述,如果我正确阅读了您的需求
slm-log-continue() {
while true ; do
PODLINE=$(kubectl get pod | grep regional-wkspce | grep Running | awk '/^regional-wkspce-.*/{print }')
if [[ -z "$PODLINE" ]]; then
echo no pod currently active, waiting 5 seconds ...
sleep 5
else
echo "----- logging for $PODLINE -----"
kubectl logs -f $PODLINE
echo "----- pod $PODLINE disconnected -----"
fi
done
}
假设 kubectl 日志在 pod 完成后终止并且它收到了日志的结尾(我没有测试过),类似的东西应该可以做你需要的,而不需要任何花哨的多线程。它只会使用针对 get pods
输出的任何正则表达式找到当前 pod,提取名称,然后吐出日志,直到它消失。
注意:与 Kubernetes 相比,这更多是 bash/shell 脚本问题。
所以我有一个 pod 副本,所以 kubectl get pods
只会 return 一个活动副本。
从概念上讲,我想做的很简单。我想和观察者一起做一个 kubectl logs my-pod-nnn1
,但是当那个 pod 终止时,我想流式传输一条消息“my-pod-nnn1 终止,现在记录 my-pod-nnn2”,然后流式传输新日志。这是一个相当复杂的过程(对我来说),我想知道我可以采取什么方法,以及是否可以(或者可能不需要)使用某种多线程(我还没有这样做)。谢谢
作为您需要做的事情的粗略概述,如果我正确阅读了您的需求
slm-log-continue() {
while true ; do
PODLINE=$(kubectl get pod | grep regional-wkspce | grep Running | awk '/^regional-wkspce-.*/{print }')
if [[ -z "$PODLINE" ]]; then
echo no pod currently active, waiting 5 seconds ...
sleep 5
else
echo "----- logging for $PODLINE -----"
kubectl logs -f $PODLINE
echo "----- pod $PODLINE disconnected -----"
fi
done
}
假设 kubectl 日志在 pod 完成后终止并且它收到了日志的结尾(我没有测试过),类似的东西应该可以做你需要的,而不需要任何花哨的多线程。它只会使用针对 get pods
输出的任何正则表达式找到当前 pod,提取名称,然后吐出日志,直到它消失。