#これなに?
どんな時にどのログを見ればいいのかはっきり理解できてないので、まずは根本的なkubernetesのログの種類をまとめておこう。
#[混乱の理由] 名前が紛らしい
コンテナログ、コンポーネントログ、システムコンポーネントログ、ノートログ、アプリケーションログ、クラスターログ。
いろんなサイトでログを説明してくれてるけど、みな少しづづ呼び名が違ったりしてどれがどれだか混乱。(コンポーネントログ、と言ってもどれもある意味コンポーネントログな気がするし。。)
#[整理するため]大きく5種類のログにわけられそう
- コンテナログ(aka アプリケーションログ、コンポーネントログ)
- クラスタログ(aka システムコンポーネントログ)
- ノードログ
- イベントログ
- 監査ログ
###コンテナログ
アプリのログ。
$ kubectl logs {app-name}
###クラスタログ
コンテナ内で走っているコンポーネントログ
k8sのデフォルトサービス/コンポーネントの etcd, kube-apiserver, kube-scheduler, kube-proxy, kube-controller-managerなど
###ノードログ
クラスタログの一部だけど、コンテナ外、OSレベルで走ってるシステムコンポーネントのログ。kubeletやcontainer runtime等
$ journalctl
###イベントログ
リソースの変化やなぜPodが失敗したかなどのエラーログがみれる
namespaceのイベントログ
$ kubectl get events -n <namespace>
Podのイベントログ
$ kubectl describe pod <pod-name>
###監査ログ
なにが、いつ、だれによって、どうやって起きた?
どこでみつかり、どこで始まり、どうなっった?
audit policyで設定する
https://kubernetes.io/docs/tasks/debug-application-cluster/audit/#audit-policy
##ちなみに
k8sのオフィシャルページにはコントロールプレーンコンポーネントについての説明があり、以下が含まれるらしい(https://kubernetes.io/ja/docs/concepts/overview/components/)
etcd, kube-apiserver, kube-scheduler, kube-controller-manager
これkube-proxy以外がクラスタログと同じ。kube-proxyはkubeletと同じノードコンポーネントにカテゴライズされてる。それでもube-proxyはOSレベルで走ってないので、ログ的にはノードログではない。。??
##まとめ
監査ログはちょっと外とちがう感じがするけど、調査するのにはこれらの情報は役に立ちそう。今後、実際のログの取得の方法とかもふくめもう少し掘り下げていこうと思います。