如何检查特定的脚本执行是否由 Kubernetes pod 完成



我有一个守护程序集,它部署容器来检查几个挂载点的状态。此守护进程部署是通过 python 脚本完成的,在部署命令之后不久,我将收集将由上述守护程序 pod 创建的日志。我看到日志在触发守护程序创建后不久就会被复制,并且出于同样的原因,日志不完整。

经过一番调查,我发现守护程序 pod 仍在执行脚本和写入日志的过程中。同时,主脚本已经跳转到下一个使用kubectl cp命令复制日志的命令。

有什么方法可以根据仅在脚本执行完成后复制日志的条件进行等待。

这是我拥有的代码部分

# Create diag pod
cmd = "kubectl apply -f diagnostic_daemon.yaml"
(rc, cmd_out, cmd_err) = cmdHandle.cmd_run(cmd)
if cmd_err.strip():
print "ERROR: Unbale to create diag POD. Exiting!!!"
print "> " + REDC + cmd_err.strip() + ENDC
sys.exit(1)
# wait for the daemonset pod to reach running state
check_daemonset_state("cos-plugin-diag")
print "n*****Collecting cos-plugin-diag logs*****"
# Collect diag pod logs
global nodeQdigl

所以你还需要检查 pod 是否处于Running状态(Pod 中的所有容器(

# wait for the pod 
check_pod_state("cos-plugin-diag")

因此,例如,如果 Pod 有 2 个容器,您应该检查2/2

例:

NAME                                                                 READY     STATUS    RESTARTS   AGE
calico-node-9wnst                                                    2/2       Running   0          6d

您需要检查日志文件中确定日志结尾的字符串的另一个方面,您可以使用

kubectl logs <pod-name> -c <container-if-multiple-containers> -n <your-namespace>

希望对你有帮助

相关内容

最新更新