#はじめに
この記事はユニークビジョン株式会社 Advent Calendar 2018の15日目の記事です。
最近始まった開発でk8sを利用することとなり、その際にrailsのログを見る方法がわかららず苦労していました。というかそもそもpodって何だろうっというレベルだったので、簡単にpodの説明をしたのちに掲題の内容に移りたいと思います。
#podとは
公式(https://kubernetes.io/docs/concepts/workloads/pods/pod/) によると、「podは共有ストレージ/ネットワークと1つ以上のグループ、およびコンテナを実行する方法の仕様です。(google翻訳)」とあります。docker(鯨)の群がpodというそうで、コンテナ群とでもいうのか、何か一つの機能を持つ集合というの認識です。
では、実際に起動しているminikubeをみていきたいと思います。
#logを確認する
まず、起動しているpodの一覧を取得します。一覧を取得するには「kubectl get pods」コマンドを利用します。
$ kubectl get pods
NAME READY STATUS RESTARTS AGE
postgres-d4447dbd5 1/1 Running 0 2h
rails-7bf5585b55 1/1 Running 0 4h
一覧が取得できました。現在はpostgresとrailsのpodが起動しています。ここからrailsのpod内のログを確認してみます。特定のpodのログを確認するためには、「kubectl logs pod名」コマンドを利用します。
pod名は先ほど取得した名前で今回はrailsの方を利用します。
$ kubectl logs rails-7bf5585b55
// ・・・(中略
Rendering admin/companies/new.html.erb within layouts/application
Rendered admin/common/_errors.html.erb (1.3ms)
Rendered admin/companies/_form.html.erb (10.9ms)
Rendered admin/companies/new.html.erb within layouts/application (12.7ms)
Completed 200 OK in 117ms (Views: 97.9ms | ActiveRecord: 9.3ms)
取れました!これで、railsログを追ったり、printデバッグで呼ばれた順番を確認したりと開発が捗ります。
#まとめ
k8sのpodのログを確認する方法をまとめました。さらなるpodの詳細は「kubectl get pod pod名 -o json」でpodのコンテナ名を調べて、「kubectl log pod名 コンテナ名」でコンテナごとのログを出力したりとまだまだできることが多そうです。
次回は@toba_さんです!