AKS:当进程仍在容器中运行时,kubectl exec 和 kubectl 日志退出

Posted

技术标签:

【中文标题】AKS:当进程仍在容器中运行时,kubectl exec 和 kubectl 日志退出【英文标题】:AKS : kubectl exec & kubectl log exits in between while the process is running in the container still 【发布时间】:2022-01-23 05:00:59 【问题描述】:

我在两个不同的 Windows 命令提示符下同时运行以下 kubectl exec & kubectl logs cmd

kubectl exec $pod containername -n namespace -- bash -c "cd somebatch.ksh > /proc/1/fd/1 2>&1"

kubectl logs $pod containername -n namespace

当进程仍在容器中运行时,两者都会从 Windows 命令提示符中退出。

如果我再次运行 kubectl logs cmd,我可以看到正在运行的日志

kubectl logs $pod containername -n namespace

我应该怎么做才能保持 kubectl exec & kubectl log 命令运行而不退出。

【问题讨论】:

【参考方案1】:

您可以通过包含 --follow 来“跟踪”日志命令。

exec 在容器中创建一个 shell 并运行脚本。一旦创建了 shell 并通过了脚本,该过程完成了。

如果你想保持会话打开,你应该能够exec 只是bash 然后以交互方式运行命令。您可能需要包含--stdin --tty,即kubectl exec --stdin --tty ... -- bash

【讨论】:

kubectl exec --stdin --tty 抛出无效选项 我怀疑您没有正确运行该命令。这些都是有效的标志。见kubectl exec 你能解释一下这些标志 --stdin --tty 吗?它有什么作用? 请阅读我包含的文档的链接。

以上是关于AKS:当进程仍在容器中运行时,kubectl exec 和 kubectl 日志退出的主要内容,如果未能解决你的问题,请参考以下文章

在容器中运行时,重新加载telegraf配置的最佳方法。

在 docker 容器中运行时找不到 curl 命令

在新进程中运行时窗口标题中的“无响应”

当图像在 docker 机器中运行时,X11 转发不起作用,但如果图像在没有 docker 机器的情况下运行,则它可以正常工作

在 Visual Studio 2010 调试器中运行时不会显示 Windows 公用文件对话框

当程序在 IntelliJ 中运行时,为啥我会收到 SSLHandshakeException 作为 JAR?