【问题标题】:How to check a particular script execution is completed by a Kubernetes pod如何检查特定脚本执行是否由 Kubernetes pod 完成
【发布时间】:2018-09-11 05:02:13
【问题描述】:

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

经过一番调查,我发现daemonset pods仍在执行脚本和写入日志。同时主脚本已经跳转到下一个使用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】:

    因此您还需要检查 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>
    

    希望对你有帮助

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-26
      • 2022-01-02
      • 2011-02-15
      • 2019-09-19
      • 1970-01-01
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      相关资源
      最近更新 更多