次のコマンドを使用して、kubectl get
コマンドの出力をjq
で絞り込み、その結果をkubectl logs
コマンドにパイプしてログを出力することができます。
kubectl get <resource> -o json | jq -r '.items[] | select(<filter condition>) | .metadata.name' | xargs -I {} kubectl logs {}
上記のコマンドをカスタマイズするには、以下の手順に従ってください。
<resource>
を、ログを出力したいKubernetesリソース(例:pod
、deployment
など)に置き換えます。<filter condition>
を、結果を絞り込むためのjq
のフィルタ条件に置き換えます。この条件を使用して、特定のPodを絞り込むことができます。例えば、.metadata.labels.app == "my-app"
のような条件を指定すると、app
ラベルがmy-app
と一致するPodのログを出力します。コマンドを実行すると、絞り込まれたPodの名前が抽出され、
kubectl logs
コマンドに渡されます。ログはそれぞれのPodに対して個別に出力されます。
注意: 上記のコマンドは、結果を1つのPodに絞り込むことを前提としています。複数のPodに対してログを出力する場合は、適切なjq
フィルタ条件を指定する必要があります。
このコマンドを使用すると、kubectl get
の結果をjq
で絞り込み、結果のPodに対してkubectl logs
でログを出力することができます。