Stackdriver Kubernetes Monitoring がベータ版としてリリースされて、
そっちに移行するとログまわりの構成が以前 (GKEがデフォルトで提供してくれるログ まとめ) とはかなり変化する。
GKE ~
が以前までのログ。
クラスタ作成時に↓のチェックをつけて新しいモニタリングにすると、 Kubernets~
になる。
なお1.10以上必須で、さらに、クラスタ新規作成じゃないと有効にはできない 1.9から1.10にしても、Kubernetes Monitoringは有効にできないので少しハードルが高い。
(ただ実際有効にしてみると後述のように盛大にログの出方も変わり、1.9からのマイグレーションをするのが辛そうなのは察せた・・・)
以下、Stackdriver Kubernetes Monitoring時代のGKEがデフォルトで提供してくれるログ まとめ
Kubernets Container (resource.type="k8s_container"
)
おそらく旧 GKE Container (resource.type="container"
) とおなじ。
デプロイされた各コンテナの標準出力、標準エラー出力が送られてくる。
logNameがコンテナ名ではなく stdout
,stderr
になった
Stackdriver Kubernetes Monitoring有効無効関わらずではなくGKE 1.10以上での変化なんじゃないかという気がしている。
コンテナごとのログを見るためには resource.label.container_name
でフィルタすることになった。
Kubernets Cluster (resource.type="k8s_cluster"
) / Kubernets Pod (resource.type="k8s_pod"
)
旧GKE Cluster Operations (resource.type="gke_cluster"
) だったものが、
Pod内関連のログがKubernets Pod
、Pod外のログがKubernets Cluster
に分割された模様。
さらに、一部のログ "Node (node名) status is now: NodeHasInsufficientMemory" などは次に出てくる Kubernets Node に分割されている
例えば"pulling image", "Started container"などはKubernets Pod
"Scaled up replica set", "Created job"とかはKubernets Cluster
なお"Created pod"はKubernets Clusterに来る
Kubernets Node (resource.type="k8s_node"
)
以前はk8sノードであること関係なく、通常のinstanceでロガー使ったのと同じように GCE VM Instance (resource.type="gce_instance"
) として出ていた。
インスタンス上で直接動く各種プロセスからのログが送らてくる。
- kubelet
- kube-proxy
- docker
- container-runtime
などのログが見える。
その中に混じって、前述のとおり "Node (node名) status is now: NodeHasInsufficientMemory" などの以前はGKE Cluster Operationsとして出ていたものが混ざっている。
その他こまかな変化
resource.label.namespace_id
が resource.label.namespace_name
、のように ..._id
だったのが ..._name
に変わっている。
おわり
正式なドキュメントを見つけれていないけど、かなりログが変わる。
ログベースで監視とかしていて、フィルタ条件が完全に狂って混乱したので、
これからStackdriver Kubernetes Monitoringを使い始める人は注意しておくといいと思います。