kubernetes - 如何检查特定脚本执行是否由 Kubernetes pod 完成
问题描述
我有一个守护程序集,它部署容器来检查几个挂载点的状态。这个 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
解决方案
因此,您还需要检查 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>
希望能帮助到你
推荐阅读
- angular - 在 Angular 模板中应用类
- c++ - 错误:没有运算符“[]”与这些操作数匹配
- c++ - 使用表达式:如何最小化运行时构建时间
- javascript - 使用 Flex 概念创建的选项卡内容在所有屏幕上都具有响应性。
- java - 如何使用 instanceof 解决 JPA 延迟加载问题
- ajax - 如何在 JAX-RS API 中添加超时
- javascript - 如何将一个 javascript 变量调用到另一个 javascript 文件
- python - 是否可以在 python 的类中单独访问实例属性?
- typo3 - TYPO3:带有最新版本 EXT:news 的 PHP 警告
- algorithm - 来自两个数组的互质数对的计数小于 O(n^2) 复杂度