【Kubernetes】sternで複数コンテナの複数Podのログをまとめて確認する

2022.05.14
2024.03.24
Kubernetes
stern

はじめに

Sternを使って複数コンテナで複数Podのログをまとめて確認してみたいと思います。

Sternとは

Starnとは、複数コンテナを持つPodや複数Podのログをまとめてtailコマンドのように確認できるツールです。

GitHub - stern/stern: ⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern

GitHub - stern/stern: ⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern

⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern - stern/stern

オリジナルのリポジトリは下記のようですが、issueにあるように、上記のリポジトリが現在はメンテされているみたいです。

unknown link

インストール

Macの場合、下記でインストール可能です。

1brew install stern
GitHub - stern/stern: ⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern

GitHub - stern/stern: ⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern

⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern - stern/stern

簡単な使い方

基本的な使い方は下記の通りです。

1stern [pod query] [flags]

[pod query]では、正規表現でPodの指定ができます。正規表現なしで指定すると、ある程度同じ名前のPodが指定されます。

例えば下記のように指定すると、web-111web-222web-333web-backendなどのPodのログが同時に確認できます。

1stern web

一方、正規表現で下記のように指定すると、web-backendなどと正規表現とマッチしたPodだけのログが確認できます。

1stern "backend-\w"

-tでタイプスタンプ付きで出力することなどもできます。

GitHub - stern/stern: ⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern

GitHub - stern/stern: ⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern

⎈ Multi pod and container log tailing for Kubernetes -- Friendly fork of https://github.com/wercker/stern - stern/stern

実際に試してみる

実際にDeploymentを作成して、Podのログをまとめて確認してみます。

作成するDeploymentのマニフェストdeployment.ymlは下記の通りです。Podを5つ起動して、それぞれのPodには2つのコンテナが含まれています。

1apiVersion: apps/v1
2kind: Deployment
3metadata:
4  name: stern-test
5  labels:
6    app: stern-test
7spec:
8  replicas: 5
9  selector:
10    matchLabels:
11      app: stern-test
12  template:
13    metadata:
14      labels:
15        app: stern-test
16    spec:
17      containers:
18      - name: busybox-1
19        image: busybox
20        command: ["/bin/sh", "-c"]
21        args:
22        - |
23          while true
24          do
25            echo "busybox-1: $(hostname)"
26            sleep 20
27          done
28      - name: busybox-2
29        image: busybox
30        command: ["/bin/sh", "-c"]
31        args:
32        - |
33          while true
34          do
35            echo "busybox-2: $(hostname)"
36            sleep 20
37          done

Deploymentを作成します。

1kubectl apply -f deployment.yml

5つのPodが起動しました。それぞれのPod名はstern-test-xxxxxxxx-yyyyyとなっています。

1❯ kubectl get pod | grep stern-test
2stern-test-b9486b67d-fwmkt   2/2     Running     0          25s
3stern-test-b9486b67d-mhc6z   2/2     Running     0          25s
4stern-test-b9486b67d-s7hs9   2/2     Running     0          25s
5stern-test-b9486b67d-vffpz   2/2     Running     0          25s
6stern-test-b9486b67d-xp9ch   2/2     Running     0          25s

stern stern-testでログを確認するとPodごとに色分けされたログをまとめて確認できています。また、Podのどのコンテナからのログかもわかるようになっています。

参考

Support

\ この記事が役に立ったと思ったら、サポートお願いします! /

buy me a coffee
Share

Profile

author

Masa

都内のIT企業で働くエンジニア
自分が学んだことをブログでわかりやすく発信していきながらスキルアップを目指していきます!

buy me a coffee