循环获取 Kubernetes Pod 的日志

Alb*_*ert 2 loops kubernetes kubernetes-pod

我有兴趣获取名称中包含“test”但使用 json 和 jq 的多个 pod 的日志。第一步是找出包含该特定字符串的名称 - 在我的例子中是“test”:

kubectl get pods -n test -o json | jq '.items[] | select(.metadata.name|test("test"))| .metadata.name'
Run Code Online (Sandbox Code Playgroud)

我在 Stackoverflow 上某人的帮助下得到了这个答案。

现在我想找出获取每个包含“test”名称的 pod 日志的命令。我想要类似以下命令的命令,但不幸的是这种方式不起作用,因为我猜第一个命令会在多行中一次返回所有 pod:

kubectl logs ``kubectl get pods -n test -o json | jq '.items[] | select(.metadata.name|test("test"))| .metadata.name'`` -n test
Run Code Online (Sandbox Code Playgroud)

有什么方法可以通过一些额外的参数以这种方式获取日志以使其工作吗?

谢谢。

Kun*_* Li 7

使用循环获取所有 pod 的日志,试试这个:

for pod in `kubectl get po -o json |  jq '.items[] | select(.metadata.name|contains("test"))| .metadata.name' | sed 's/"//g'` ; do
  echo $pod
  kubectl logs $pod 
done
Run Code Online (Sandbox Code Playgroud)