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
82
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
日本CTO協会 新卒合同研修_Google Cloud
googlecloudjapan
0
31
Google Kubernetes Engine (GKE) の可観測性を活用し、 システムの Resiliency を高める障害原因調査
googlecloudjapan
0
110
「原因不明なナゾの障害」で終わらないための Kubernetes のログの徹底活用
googlecloudjapan
0
460
15 分で学ぶ Cloud Run のユースケースと代表的なアーキテクチャパターン
googlecloudjapan
3
830
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
Other Decks in Business
See All in Business
株式会社アイリッジ 会社説明資料
iridge
0
6.8k
2026.6_中途採用資料.pdf
superstudio
PRO
5
120k
SimpleForm 会社紹介資料
simpleform
2
56k
Sotas Company Deck / 会社紹介資料
sotas
0
6.6k
JAPANSHOP大阪/POP-UPセミナースライド
superpenguin
PRO
0
150
データ品質とメタデータ管理で実現する構造化・非構造化データ活用のユースケース紹介
kawanago
0
430
セーフィー株式会社(Safie Inc.) 会社紹介資料
safie_recruit
7
450k
malna-recruiting-pitch
malna
0
23k
CEOの価値観を言語化することでメンバーの心を動かすマネジメントを体得するワークショップ
nagam3618
1
370
非エンジニア向け Claude Codeの全社展開~推進とリスク統制のリアル~ #プロヒス2026 #プロダクトヒストリーカンファレンス 2026
kayato
3
140
マルチエージェント入門:チームで動くAIと非エンジニアのための設計(Claude Code)
forest8810
0
120
「プロダクトヒストリーカンファレンス2026」リチェルカ投影資料
recerqainc
0
130
Featured
See All Featured
Large-scale JavaScript Application Architecture
addyosmani
515
110k
Mind Mapping
helmedeiros
PRO
1
280
From Legacy to Launchpad: Building Startup-Ready Communities
dugsong
0
240
Getting science done with accelerated Python computing platforms
jacobtomlinson
2
250
Intergalactic Javascript Robots from Outer Space
tanoku
273
27k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
180
Agile Leadership in an Agile Organization
kimpetersen
PRO
0
180
Ethics towards AI in product and experience design
skipperchong
2
320
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
PRO
201
75k
Chasing Engaging Ingredients in Design
codingconduct
0
230
From π to Pie charts
rasagy
0
230
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
67
56k
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