kubectl:如何在不明确指定 pod 名称的情况下显示 pod 日志?

van*_*ert 5 bash kubernetes cmder kubectl

我的 pod 有一个动态生成的 ID,附加到它们的名称后,例如 ie my-app-name-7b587cd75b-dscsr,每次部署都不同(下次可能是my-app-name-xcgv83bfsd-4kjsf)。

这使得使用某些命令非常麻烦,因为每次我需要查看日志时,我都必须首先列出所有 pod 并将更改后的名称复制粘贴到logs命令中:kubectl -n [namespace] logs my-app-name-7b587cd75b-dscsr.

有没有办法可以跳过使用 pod 名称或名称的一部分并在命令中执行类似kubectl -n [namespace] logs my-pod-name-~kubectl -n [namespace] logs service/my-pod-name类似的操作port-forward

我试图greplogs命令中注入以获取 pod 名称并logs在单个命令中运行,但是 Windows 上的 Cmder 尽管它很好,但似乎不支持$()kubectl -n [namespace] logs $(kubectl -n my-app-name get pod | grep my-app-name | sed 's/ .*//')

Sur*_*noi 6

您可以使用Deployment/$DEPLOYMENT_NAME来获取 pod 的日志,而不是使用POD/$POD_NAME

kubectl logs deployment/$DEPLOY_NAME


  # Return snapshot logs from container nginx-1 of a deployment named nginx
  kubectl logs deployment/nginx -c nginx-1

Run Code Online (Sandbox Code Playgroud)

kubectl logs --help 将提供更多信息

  • 但它适用于命名空间:`kubectl -n [命名空间]日志部署/stg-01-api` (2认同)