Skip to content

Instantly share code, notes, and snippets.

@guitarrapc
Last active March 17, 2023 02:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save guitarrapc/7adbf5bef6628fbd0af34c68c2cc9808 to your computer and use it in GitHub Desktop.
Save guitarrapc/7adbf5bef6628fbd0af34c68c2cc9808 to your computer and use it in GitHub Desktop.
Docker and containerd, Kubernetes container runtime difference on stdout output log on node.

Kubernetes のコンテナランタイムが Docker と containerd に変わることでどのような違いが起こるか例を教えてください。

Kubernetesは、コンテナ化されたアプリケーションを管理するためのオーケストレーションツールです。KubernetesがDockerからcontainerdに移行することで、いくつかの違いが生じます。

まず、コンテナイメージの管理方法が異なります。Dockerでは、コンテナイメージをDocker Hubなどのリポジトリからプルして管理しますが、containerdでは、OCI(Dockerの規格)に基づいて、イメージをプルして管理します。

次に、ネットワーク管理の方法が異なります。Dockerでは、Dockerが提供するネットワークドライバーを使用して、コンテナのネットワークを管理しますが、containerdでは、CNI(Container Network Interface)を使用して、ネットワークを管理します。

最後に、ログの管理方法が異なります。Dockerでは、Dockerデーモンがログを収集して管理しますが、containerdでは、コンテナランタイムがログを直接管理します。

これらの違いにより、KubernetesがDockerからcontainerdに移行することで、より柔軟で高速なコンテナ管理が可能になります。

Kubernetes のコンテナランタイムが Docker と containerd それぞれについて、具体的な違いを教えてください。例えばコンテナが標準出力したログは、ノード上でどのようなログ形式で保存されますか?

KubernetesのコンテナランタイムがDockerとcontainerdの違いについては前述しましたが、具体的にコンテナが標準出力したログは、以下のように保存されます。

Dockerの場合、Dockerデーモンがログを収集して管理します。ログは、ノード上の/var/lib/docker/containers/[コンテナID]/[コンテナID]-json.logにJSON形式で保存されます。

containerdの場合、ログはコンテナランタイムが直接管理します。ログは、ノード上の/var/log/pods/[ネームスペース][ポッド名][コンテナ名]/[コンテナ名]/[タイムスタンプ].logに保存されます。ログは、コンテナの標準出力および標準エラー出力から収集され、テキスト形式で保存されます。

コンテナランタイムが Docker の場合にノードに保存される標準出力のログの具体的な出力例を教えてください。

Dockerの場合、コンテナが標準出力するログは、以下のような形式で保存されます。

{
  "log": "Hello World!\\n",
  "stream": "stdout",
  "time": "2021-06-17T12:34:56.789012345Z"
}

このログには、コンテナが出力したメッセージの他に、ログのストリーム(stdoutやstderr)、タイムスタンプ、ログレベルなどの情報が含まれます。Dockerデーモンは、ログのローテーション、圧縮、削除などを自動的に行います。

コンテナランタイムが containerd の場合にノードに保存される標準出力のログの具体的な出力例を教えてください。

containerdの場合、コンテナが標準出力するログは以下のような形式で保存されます。

2021-06-17T12:34:56.789012345Z stdout F Hello World!

このログには、タイムスタンプ、ログレベル、コンテナID、ストリーム(stdoutやstderr)、メッセージなどの情報が含まれます。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment