本セクションで学習すること #
- Kubernetes の場合のコンテナのログ取得
- Kubernetes の場合のコンテナへのアクセス
コンテナのロギング #
アプリケーションの各インスタンスは、それぞれのポッドの中で実行されます。
すでに見たように、フロントエンドWeb サーバーのポッドをリストアップするには、次のようにします。
kubectl get pods -l app=blog -o name
アプリケーションの特定のインスタンスのログ出力にアクセスするには、kubectl logsコマンドでポッドの名前を使用できます。今回は複数のポッドがあるので、そのうちの1つの名前だけを取得する必要があります。
POD=`kubectl get pod -l app=blog -o template --template '{{range .items}}{{.metadata.name}}{{"\n"}}{{end}}'. | head -1` && echo $POD
次にkubectl logsを実行します。
kubectl logs $POD
ポッド内に複数のコンテナがある場合は、-c または –container オプションを使用してコンテナに名前を付ける必要があります。 また、実行中のアプリケーションの出力を追跡したい場合は、-fまたは–followオプションを使用できます。
コンテナへのアクセス #
コンテナにアクセスしてコマンドを実行するには、kubectl execを使用します。ロギングと同様に、アクセスしたい特定のポッドを指定する必要があり、ポッド内で複数のコンテナが動作している場合は、-cまたは–containerオプションを使用してどのコンテナかを指定します。
kubectl exec $POD env
対話型のターミナルセッションを実行したい場合は、docker と同様、-iまたは–stdinオプションと、-tまたは–ttyオプションを使用する必要があります。
kubectl exec -it $POD -- bash
一通り確認したら、対話型シェルを終了してください。
exit
このあたりはDocker ととても似ていますね。