首页 > 解决方案 > 获取容器的所有 pod,将它们存储在文本文件中,然后在单个命令中将这些文件用作 args

问题描述

在此处输入图像描述

上图显示了我需要保存到一个文本文件(或多个文本文件)的所有 kubernetes pod 的列表。

我需要一个命令:

  1. 将多个 pod 日志存储到文本文件(或单个文本文件)中 - 到目前为止,我有这个命令将一个 pod 存储到一个文本文件中,但这还不够,因为我必须为每个 pod 单独拼出每个 pod 名称:

    $ kubectl 日志 ipt-prodcat-db-kp-kkng2 -n ho-it-sst4-i-ie-enf > latest.txt

  2. 然后我需要命令将这些文件发送到一个 python 脚本中,它将在其中检查各种字符串 - 到目前为止,这是可行的,但如果这可以包含在上述命令中,那么这将非常有用:

    python CheckLogs.py latest.txt latest2.txt

是否可以在单个命令中执行 (1) 或同时执行 (1) 和 (2)?

标签: pythonkubernetescommand-linekubectl

解决方案


最简单的解决方案是创建一个完全符合您要求的 shell 脚本:

#!/bin/sh

FILE="text1.txt"
for p in $(kubectl get pods -o jsonpath="{.items[*].metadata.name}"); do
    kubectl logs $p >> $FILE
done

使用此脚本,您将在 FILE 中获取命名空间中所有 pod 的日志。您甚至可以添加python CheckLogs.py latest.txt


推荐阅读