Docker/K8S実践コンテナ開発入門@27日目

本日もKubernetsの勉強の続きです。

DaemonSetでfluentdの構築

書籍に従って、fluentdを構築します。
DaemonSetというのが新しく登場しますが、
Kubernetesクラスタで利用されている全てのNodeに対するPodを管理するためのリソース

これはログコレクタのような各ホストでエージェントとして配置したい用途に定期しているとのこと

書籍に従って「fluentd-daemonset.yaml」を作成した後に、
以下のコマンドでコンテナを配置します。

■コマンド

//コンテナ配置
 kubectl apply -f fluentd-daemonset.yaml 

//起動確認
kubectl -n kube-system get pod -l app=fluentd-logging

実行が確認できたら、今度はアプリケーションのPodを起動
書籍に従って「echo.yaml」を作成し、以下のコマンドで配置します。

■コマンド

//コンテナ配置
kubectl apply -f echo.yaml

//接続確認
curl http://localhost:30080

最初の方は「curl: (52) Empty reply from server」が何度か出ていたのですが、
数分放置しているとログが返却されました。

ローカルKubernetes環境で高築したKibanaeログを確認してみます。
f:id:lawrence-twin:20200527233831p:plain

何も出ない、、、と思ったのですが
右上の出力範囲をいじれば出てくるようになりました。

f:id:lawrence-twin:20200527234558p:plain

ただ本来は、上部検索欄に「kubernetes.labels.app: ech」と入力することで、
実行したechoに対するログが取得できるはずなのですが何も出ず、、、

kubectlで配置したfluentdのログをみると色々とwarnが出ているのでもしかしてうまくいっていない???
ひとまずはこの件は保留にします。

Docker/Kubernetesでのロギングの王道

Compose、Kubernetesでのロギングをやっていきましたが、
書籍ではロギング運用については以下のようにまとめられています。

■まとめ

  • アプリケーションのロギングは全て標準出力とする。コンテナ運用前提ではファイル出力サポートは不要
  • nginxなどのミドルウェアのログも全て標準出力にすべき
  • 標準出力はJSON形式とする
  • Kubernetesにおいては、fluentとdaemonsetで構成されるPodを各ホストに配置する
  • ラベルを適切に配置する

仕事で構築するかもしれないので、
上記は良く覚えておこうと思います。