代码之家  ›  专栏  ›  技术社区  ›  ambikanair

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

  •  2
  • ambikanair  · 技术社区  · 6 年前

    我有一个守护程序,它部署容器来检查几个装载点的状态。这个守护程序部署是通过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
    
    1 回复  |  直到 6 年前
        1
  •  2
  •   Rico    6 年前

    Running 状态(pod中的所有容器)

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

    因此,如果吊舱有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>
    

    希望有帮助