Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Jagu'e'r O11y分科会 0630 - kubectl logsのその先へ、実は使える...
Search
GoogleCloudPlatformJapan
June 30, 2026
Business
32
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Jagu'e'r O11y分科会 0630 - kubectl logsのその先へ、実は使えるいろんなKubernetesログを追ってみよう
GoogleCloudPlatformJapan
June 30, 2026
More Decks by GoogleCloudPlatformJapan
See All by GoogleCloudPlatformJapan
Google Kubernetes Engine (GKE) の可観測性を活用し、 システムの Resiliency を高める障害原因調査
googlecloudjapan
0
100
「原因不明なナゾの障害」で終わらないための Kubernetes のログの徹底活用
googlecloudjapan
0
450
15 分で学ぶ Cloud Run のユースケースと代表的なアーキテクチャパターン
googlecloudjapan
3
810
Google Cloud の スペシャリストと学ぶ! BigQuery & Gemini
googlecloudjapan
0
270
ログから学ぶKubernetes
googlecloudjapan
1
740
GKE Enterprise 徹底解説
googlecloudjapan
2
1.4k
Cloud Run で作るサーバーレス アーキテクチャ 30 連発 - これのときはこう!
googlecloudjapan
33
12k
実践!サーバーレス RAG 構築:Firestore ベクトル検索と VertexAI LLM 活用
googlecloudjapan
2
3k
実践!サーバーレス RAG 構築:Firestore ベクトル検索と VertexAI LLM 活用
googlecloudjapan
0
450
Other Decks in Business
See All in Business
FABRIC TOKYO会社紹介資料 / We are hiring(2026年06月17日更新)
yuichirom
38
400k
AI導入PJの勝ちパターン KPI設計&意図的な社内AI格差
okuwakim
1
920
malna-recruiting-pitch
malna
0
22k
CC採用候補者向けピッチ資料
crosscommunication
2
59k
ネクストビートコーポレートガイド/corporate-guide
nextbeat
3
87k
株式会社SAFELY 会社紹介 / Company
safely_pr
1
7.4k
CompanyDeck_v7.0.pdf
xid
3
27k
余白を生むセルフマネジメント/Self-Management That Creates Breathing Room
ikuodanaka
1
2.4k
SimpleForm 会社紹介資料
simpleform
2
55k
【結果報告】Claude×Linearで会社のタスク管理をAIにまかせて1ヶ月。業務効率150%向上したが、AIネイティブカンパニーを目指すならもっと「加速への狂気」が必要
nagatsu
1
520
捨てる、という判断 — エンジニアの役割の変化に向き合うConference
appleworld
1
890
長時間実行タスクを簡単にするLambda durable functionsの活用方法
takuyaakaike
0
470
Featured
See All Featured
Joys of Absence: A Defence of Solitary Play
codingconduct
1
400
Optimising Largest Contentful Paint
csswizardry
37
3.7k
A designer walks into a library…
pauljervisheath
211
24k
Designing for humans not robots
tammielis
254
26k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.2k
svc-hook: hooking system calls on ARM64 by binary rewriting
retrage
2
310
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
150
How to build an LLM SEO readiness audit: a practical framework
nmsamuel
1
780
AI: The stuff that nobody shows you
jnunemaker
PRO
8
730
Docker and Python
trallard
47
3.9k
The Psychology of Web Performance [Beyond Tellerrand 2023]
tammyeverts
49
3.5k
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Transcript
kubectl logs のその先へ、 実は使える GKE の Kubernetes ログ を追ってみよう Kakeru
Ishii Google Cloud Japan Technical Solutions Engineer
02 石井 翔 Google Cloud Technical Solutions Engineer @kyasbal_k @kyasbal
03 石井 翔 Google Cloud Technical Solutions Engineer Google Cloud
のテクニカルサポートのエンジニア = @kyasbal_k @kyasbal
4 Google Kubernetes Engine (GKE) の Cloud Console の画面までしか見ない こんなログの使い方になっていませんか?
5 Google Kubernetes Engine (GKE) の Cloud Console の画面までしか見ない Cloud
Logging の使い方が難しいので kubectl logs と kubectl describe だけでなんとかする こんなログの使い方になっていませんか?
Google Cloud 6 Google Kubernetes Engine (GKE) の Cloud Console
の画面までしか見ない Cloud Logging の使い方が難しいので kubectl logs と kubectl describe だけでなんとかする Cloud Logging の上に書くログフィルタがこんな感じ : こんなログの使い方になっていませんか? フィルタ例1 : とりあえずエラーの文字列でマッチ
Google Cloud 7 Google Kubernetes Engine (GKE) の Cloud Console
の画面までしか見ない Cloud Logging の使い方が難しいので kubectl logs と kubectl describe だけでなんとかする Cloud Logging の上に書くログフィルタがこんな感じ : こんなログの使い方になっていませんか? フィルタ例1 : とりあえずエラーの文字列でマッチ フィルタ例2 : いらないログを片っ端からフィルタ
Google Cloud Proprietary & Confidential 8 どんなログがあるか分からないし、 適切なログフィルタが分からない
実は 2つ のフィールドに着目すると、分かりやすくフィルタできる "resource (Goole Cloud 上の要素)" の中に、"logName (ログの種類)" というファイルが書き込まれるイメージ
おすすめ ログフィルタテンプレート resource.type = "<resource type>" resource.labels.field_A = "foo" resource.labels.field_B = "bar" LOG_ID("<log_name>") # その他のフィルター(必要に応じて追加) 構造のイメージ (リソースとログ名 ) GCE 1 GCE 2 シリアルポート GuestAgent シリアルポート GuestAgent logName resource
実は 2つ のフィールドに着目すると、分かりやすくフィルタできる "resource (Google Cloud 上の要素)" の中に、"logName (ログの種類)" というファイルが書き込まれるイメージ
実際のログフィルタテンプレート (例) resource.type = "k8s_container" resource.labels.cluster_name = "foo" resource.labels.pod_name = "bar" resource.labels.container_name = "qux" LOG_ID("stdout") OR LOG_ID("sterr") 構造のイメージ (リソースとログ名 ) GCE 1 GCE 2 シリアルポート GuestAgent シリアルポート GuestAgent logName resource
実は 2つ のフィールドに着目すると、分かりやすくフィルタできる "resource (Google Cloud 上の要素)" の中に、"logName (ログの種類)" というファイルが書き込まれるイメージ
実際のログフィルタテンプレート (例) resource.type = "k8s_container" resource.labels.cluster_name = "foo" resource.labels.pod_name = "bar" resource.labels.container_name = "qux" LOG_ID("stdout") OR LOG_ID("sterr") 構造のイメージ (リソースとログ名 ) GCE 1 GCE 2 シリアルポート GuestAgent シリアルポート GuestAgent logName resource 今日は resource と logName に着目しながら GKE の様々なログを見ていく
Google Cloud 12 今日のシナリオ GKE で Job が動くまで
Google Cloud Google Cloud 13 GKE で Job が動くまで コントロールプレーン
クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd kubectl apply -f ./my-job.yaml Job 1. ユーザが Job を kubectl apply する
Google Cloud Google Cloud 14 GKE で Job が動くまで コントロールプレーン
クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Job Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る
Google Cloud Google Cloud 15 GKE で Job が動くまで コントロールプレーン
クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod binding 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Pod に ノードを紐づける
Google Cloud Google Cloud 16 GKE で Job が動くまで コントロールプレーン
クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る
Google Cloud Google Cloud 17 GKE で Job が動くまで コントロールプレーン
クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Pod に ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る 5. containerd に指示してコンテナを作る コンテナ作って ! コンテナ
Google Cloud 18 同じものを "ログ視点" で見ていく
Google Cloud Google Cloud 19 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd kubectl apply -f ./my-job.yaml Job 1. ユーザが Job を kubectl apply する Kubernetes の監査ログ (Kubernetes のリソースをどう変えようとしたか?) LOG_ID("cloudaudit.googleapis.com/activity") もしくは LOG_ID("cloudaudit.googleapis.com/data_access") kube-apiserver が書き込んでいるので resource.type = "k8s_cluster" resource.labels にはクラスタを特定するラベル (location, project, cluster_name などがある)
Google Cloud Google Cloud 20 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd kubectl apply -f ./my-job.yaml Job 1. ユーザが Job を kubectl apply する どんな時使う? • 過去の K8s リソースの動きの把握 (特定のPodコンテナ内で完結する問題以外ほとんど全て ) Kubernetes の監査ログ (Kubernetes のリソースをどう変えようとしたか?) LOG_ID("cloudaudit.googleapis.com/activity") もしくは LOG_ID("cloudaudit.googleapis.com/data_access") kube-apiserver が書き込んでいるので resource.type = "k8s_cluster" resource.labels にはクラスタを特定するラベル (location, project, cluster_name などがある)
Google Cloud Google Cloud 21 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd kubectl apply -f ./my-job.yaml Job 1. ユーザが Job を kubectl apply する どんな時使う? • 過去の K8s リソースの動きの把握 (特定のPodコンテナ内で完結する問題以外ほとんど全て ) Kubernetes の監査ログ (Kubernetes のリソースをどう変えようとしたか?) LOG_ID("cloudaudit.googleapis.com/activity") もしくは LOG_ID("cloudaudit.googleapis.com/data_access") kube-apiserver が書き込んでいるので resource.type = "k8s_cluster" resource.labels にはクラスタを特定するラベル (location, project, cluster_name などがある)
Google Cloud Google Cloud 22 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Job Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る コントロールプレーンログ (有効化の必要あり) resource.type = "k8s_control_plane_component" LOG_ID("container.googleapis.com/controller-manager") など
Google Cloud Google Cloud 23 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Job Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る コントロールプレーンログ (有効化の必要あり) resource.type = "k8s_control_plane_component" LOG_ID("container.googleapis.com/controller-manager") など
Google Cloud Google Cloud 24 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Job Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る コントロールプレーンログ (有効化の必要あり) resource.type = "k8s_control_plane_component" LOG_ID("container.googleapis.com/controller-manager") など
Google Cloud Google Cloud 25 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Job Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る コントロールプレーンログ (有効化の必要あり) resource.type = "k8s_control_plane_component" LOG_ID("container.googleapis.com/controller-manager") など どんな時使う? • スケジューラやコントローラの問題が被 疑される時
Google Cloud Google Cloud 26 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod binding 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける イベントログ resource.type = "k8s_pod" OR "k8s_node" OR "k8s_cluster" LOG_ID("events") resource はレポート元ではなく、イベントが紐づくリソースの resource が紐づ く。 Pod, Node 以外は k8s_cluster が紐づく
Google Cloud イベントログ resource.type = "k8s_pod" OR "k8s_node" OR "k8s_cluster"
LOG_ID("events") イベントログのresourceはレポート元ではなくてイベントが紐づくリソースに対して resourceが紐づく。 Pod, Node以外は k8s_clusterがタイプ紐づく Google Cloud 27 GKE で Job が動くまで (ログ視点) コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod binding 1. ユーザが Job をkubectl applyする 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける
Google Cloud イベントログ resource.type = "k8s_pod" OR "k8s_node" OR "k8s_cluster"
LOG_ID("events") イベントログのresourceはレポート元ではなくてイベントが紐づくリソースに対して resourceが紐づく。 Pod, Node以外は k8s_clusterがタイプ紐づく Google Cloud 28 GKE で Job が動くまで (ログ視点) コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod binding 1. ユーザが Job をkubectl applyする 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける
Google Cloud Google Cloud 29 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod binding 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける どんな時使う? • 過去の K8s リソースの状態の把握 (監査ログと組み合わせて ) イベントログ resource.type = "k8s_pod" OR "k8s_node" OR "k8s_cluster" LOG_ID("events") resource はレポート元ではなく、イベントが紐づくリソースの resource が紐づ く。 Pod, Node 以外は k8s_cluster が紐づく
Google Cloud Google Cloud 30 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る K8s ノードログ resource.type = "k8s_node" LOG_ID("kubelet"),LOG_ID("container-runtime")...etc など GKE ノード上で systemd によって起動されている各種非コンテナワークロードのロ グが集まる。
Google Cloud Google Cloud 31 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る どんな時使う? • probe 系の問題調査 • コンテナがなぜか起動しない、消えたなど K8s ノードログ resource.type = "k8s_node" LOG_ID("kubelet"),LOG_ID("container-runtime")...etc など GKE ノード上で systemd によって起動されている各種非コンテナワークロードのロ グが集まる。
Google Cloud Google Cloud 32 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd Pod 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る どんな時使う? • probe 系の問題調査 • コンテナがなぜか起動しない、消えたなど K8s ノードログ resource.type = "k8s_node" LOG_ID("kubelet"),LOG_ID("container-runtime")...etc など GKE ノード上で systemd によって起動されている各種非コンテナワークロードのロ グが集まる。
Google Cloud Google Cloud 33 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る 5. containerd に指示してコンテナを作る コンテナ作って ! コンテナ K8s コンテナログ resource.type = "k8s_container" LOG_ID("stdout") もしくは、LOG_ID("stderr") おなじみのログ。kubectl logsで見れるものと基本的には同じもの
Google Cloud Google Cloud 34 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る 5. containerd に指示してコンテナを作る コンテナ作って ! コンテナ K8s コンテナログ resource.type = "k8s_container" LOG_ID("stdout") もしくは、LOG_ID("stderr") おなじみのログ。kubectl logsで見れるものと基本的には同じもの
Google Cloud Google Cloud 35 GKE で Job が動くまで (ログ視点)
コントロールプレーン クラスタの存在する Project kube-apiserver kube-controller-manager kube-scheduler kubelet containerd 1. ユーザが Job を kubectl apply する 2. JobController が Pod を作る 3. kube-scheduler が Podに ノードを紐づける 4. 対象のノードの kubelet が Pod の情報を受け取る 5. containerd に指示してコンテナを作る コンテナ作って ! コンテナ どんな時使う? • アプリケーションの問題調査 K8s コンテナログ resource.type = "k8s_container" LOG_ID("stdout") もしくは、LOG_ID("stderr") おなじみのログ。kubectl logs で見れるものと基本的には同じもの
Google Cloud Proprietary & Confidential 36 この種類のログ それぞれのログフィルタ 覚えてられない ですよね。
仮にフィルタが書けても、 この量のログ 見切れない ですよね。
Google Cloud Kubernetes の障害調査のためのログビューア (Kubernetes History Inspector) 豊富な可視化機能 Cloud Logging
のログをリソースごとに自動整理。マニフェ ストの復元やタイムライン・グラフ化により、障害調査を劇的 に効率化する強力な OSS ログビューア。 開発元と公開コミュニティ 主に東京の Google Cloud サポートチームが実務の知見を 元に主導して開発。 OSSとして全世界に向けて公開中。 37 GoogleCloudPlatform/khi
Google Cloud docker run -p 127.0.0.1:8080:8080 gcr.io/kubernetes-history-inspector/release:latest docker コマンドさえあれば OK
Cloud Shell で1コマンドで動く。手元の環境に docker コマン ドだけあれば大丈夫 ! クラスタの種類やログを選んで フォームを埋めるだけで自動的にログ収集 ユーザが選ぶログに応じ表示されるフォームを埋めると KHI がログフィルタを生成、ログを自動で収集・可視化 38 Kubernetes の障害調査のためのログビューア (Kubernetes History Inspector) GoogleCloudPlatform/khi
Google Cloud 39 デモ "Job が動くまでのログを見てみよう"
40 まとめ • resource, logName を意識した ログフィルタを書こう • 活用のためにも resource,
logName を把握してどんなログがある かを抑えると、 K8s の振る舞いの様々なポイントでログで確認できる = 障害発生時にどこ見ればいいのかわかりやすい • KHI を使えば眠っていた Cloud Logging 上のログをわかりやすい形 で様々な調査に活用できる ◦ しかもログを活用するので今日知った方も数日前に起きた問 題のトラブルシューティングから活用可能! GoogleCloudPlatform/khi https://github.com/GoogleCloudPlatform/khi Star us on GitHub!
7 ⽉ 30 ⽇ (⽊)、 東京ビッグサイト 南展⽰棟‧会議棟 31 ⽇ (⾦)
もっと詳しいログの話を聞きたい方は Google Cloud Next Tokyo へ 日々業務で活用しているサポート エンジニアが語る "詳解 Google Cloud のログ"
Thank you