仮想ノードでのアプリケーション・ログの表示
Kubernetes Engine (OKE)を使用して作成したKubernetesクラスタ内の仮想ノードで実行されているアプリケーションのログを表示する方法を確認します。
Kubernetes Engineを使用して仮想ノードを含むクラスタを作成した後、仮想ノードで実行されているアプリケーションのログにアクセスする2つのオプションがあります:
kubectl logs
コマンドを使用して、アプリケーション・コンテナからstdoutおよびstderrログを表示します。- 表示のためにアプリケーション・ログを永続ログ・サーバーに送信します。
kubectl logsコマンドを使用したstdoutログとstderrログの表示
kubectl logs
コマンドを使用して、アプリケーションのコンテナからstdoutログおよびstderrログを表示するには:-
まだ実行していない場合は、ステップに従って、クラスタのkubeconfig構成ファイルを設定し、(必要に応じて)そのファイルを指すようにKUBECONFIG環境変数を設定します。自分のkubeconfigファイルを設定する必要があります。別のユーザーが設定したkubeconfigファイルを使用してクラスタにアクセスすることはできません。クラスタ・アクセスの設定を参照してください。
- ターミナル・ウィンドウで、次のように入力して
kubectl logs
コマンドを実行します:kubectl logs <pod-name>
例:
kubectl logs nginx
ポッドに複数のコンテナが含まれている場合は、ログを表示するコンテナを指定します。たとえば、
myapp
ポッドにnginx
およびlogging
という2つのコンテナがあり、logging
コンテナのログを表示する場合は、次のように入力します。kubectl logs myapp logging
永続ログ・サーバーへのログの送信
仮想ノードで実行されているアプリケーションのログをOpenSearchなどのリモート・ログ・サーバーに送信し、そのサーバー上のログを表示できます。仮想ノードはKubernetesデーモンセットをサポートしていないため、ノード・レベルでロギング・エージェントを実行することはできません。かわりに、軽量ロギング・エージェントを各アプリケーションのポッドのサイドカーとして実行できます。Kubernetesポッドでサイドカーとして実行できるロギング・エージェント(Fluent Bitなど)を使用できます。
たとえば、アプリケーション・ログをリモートのOpenSearchログ・サーバーに送信するために、ポッド上でサイドカーとしてFluent Bitを実行するには:
- 使用するFluent Bit構成設定を指定して、クラスタごとまたはネームスペースごとにKubernetes ConfigMapを作成します。特に、リモート・ログ・サーバーのIPアドレス、ポート番号および認証パラメータを指定する必要があります。
例:
apiVersion: v1 kind: ConfigMap metadata: name: fluentbit-config data: fluent-bit.conf: | [SERVICE] flush 1 daemon Off [INPUT] Name tail Path /mnt/log/* [OUTPUT] name opensearch match * host <ip-address> port <port-number> tls On HTTP_User <username> HTTP_Passwd <example-password> Index fluent-bit Suppress_Type_Name On
ここでは:
host <ip-address>
は、OpensearchサーバーのIPアドレスを指定します。port <port-number>
は、Opensearchサーバーのポートを指定します(デフォルトでは9200)。HTTP_User <username>
は、Opensearchサーバーのユーザー名を指定します。HTTP_Passwd <example-password>
は、Opensearchサーバーのパスワードを指定します。
- 各ポッドにFluent Bitサイドカーを追加します。アプリケーション・ログが永続ログの宛先に送信されるように、Fluent Bitサイドカーですべてのポッドを構成する必要があることに注意してください。
-
各ポッド仕様の
volumes
セクションで、次を指定します:- 次のように、アプリケーション・ログが書き込まれるemptyDir。
- name: logs emptyDir: {}
- 次のように、前に作成したConfigMapへの参照。
- name: fluentbit-config configMap: name: fluentbit-config
- 次のように、アプリケーション・ログが書き込まれるemptyDir。
-
各ポッド仕様の
containers
セクションで、ロギング・コンテナを指定する必要があります。fluent/fluent-bit
イメージを使用します。logs
emptyDirおよびfluentbit-config
ConfigMapをマウントします。
例:
- name: logging image: fluent/fluent-bit resources: requests: cpu: 100m memory: 50Mi volumeMounts: - name: logs mountPath: /mnt/log - name: fluentbit-config mountPath: /fluent-bit/etc
完全なポッド仕様の例を次に示します。
apiVersion: v1 kind: Pod metadata: name: date-logging spec: containers: - name: date image: busybox resources: requests: cpu: 500m memory: 200Mi command: ["sh", "-c"] args: - while [ 1 ]; do echo "Writing the date in /mnt/log/date.log"; date >> /mnt/log/date.log; sleep 10; done volumeMounts: - name: logs mountPath: /mnt/log - name: logging image: resources: requests: cpu: 100m memory: 50Mi volumeMounts: - name: logs mountPath: /mnt/log - name: fluentbit-config mountPath: /fluent-bit/etc volumes: - name: logs emptyDir: {} - name: fluentbit-config configMap: name: fluentbit-config
-