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

问题描述 投票:2回答:1

我有一个守护进程,它部署容器来检查几个挂载点的状态。这个守护进程部署是从python脚本完成的,在部署命令之后不久我将收集将由daemonset pod创建的日志。我发现在触发守护进程创建后很快就会复制日志,出于同样的原因,日志不完整。

经过一番调查,我发现守护进程pod仍处于脚本执行和写入log的过程中。同时主脚本已经跳转到下一个使用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
kubernetes daemonset
1个回答
2
投票

所以你还需要检查pods是否处于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>

希望能帮助到你

© www.soinside.com 2019 - 2024. All rights reserved.