このドキュメントでは、デフォルトのログ スループットとスループットを増やす方法について説明します。
システム ロギングを有効にすると、専用の Logging エージェントが自動的にデプロイされ、管理されます。これは、クラスタ内のすべての GKE ノード上で実行され、ログを収集します。コンテナ、Pod、クラスタに関する有用なメタデータを追加し、fluentbit ベースのエージェントを使用してログを Cloud Logging に送信します。
専用 Logging エージェントは、システムログとワークロード ログについてノードあたり毎秒 100 KiB 以上のログ スループットを提供します。ノードの使用率がこの数値を下回る場合は、ログの読み込みの種類(例: テキスト ログエントリまたは構造化ログエントリ、ノードのコンテナ数が非常に少ない、または多い)によっては、専用のロギング エージェントによって毎秒 500 KiB 以上のスループットを実現できる場合があります。さらに、GKE コントロール プレーンのバージョン 1.23.13-gke.1000 以降を使用しているクラスタでは、未使用の CPU コアが 2 つ以上あるノードに対して、Logging エージェントで 1 秒あたり 10 MiB のスループットが可能になります。ただし、スループットが向上すると、一部のログが失われる可能性がある点に留意してください。
ログ スループットが高いノードを特定する
デフォルトでは、GKE クラスタはシステム指標を収集します。システム指標 kubernetes.io/node/logs/input_bytes
は、ノードで 1 秒あたりに生成されるログのバイト数を示します。この指標は、Logging エージェントのどのバリアントがクラスタまたはノードプールへのデプロイに適しているかを判断するのに役立ちます。
クラスタ内の各ノードのロギング スループットの履歴を確認するには、次の操作を行います。
-
Google Cloud コンソールで、[leaderboardMetrics Explorer] ページに移動します。
検索バーを使用してこのページを検索する場合は、小見出しが [Monitoring] である結果を選択します。
[指標を選択] フィールドで、
kubernetes.io/node/logs/input_bytes
を選択します。[Group by] フィールドで、[project_id]、[location]、[cluster_name]、[node_name] を選択します。
[OK] をクリックします。
指標のリストの上にある列ヘッダーの [値] をクリックして、指標のリストを降順で並べ替えます。
システム コンポーネントまたはノード上で実行されているワークロードがどの程度のロギング量であるかを把握するために、[type] 指標ラベルでグループ化することもできます。
高スループットのロギングを有効にする
いずれかの GKE ノードで 1 秒あたり 100 KiB を超えるログ スループットが必要であり、GKE Standard クラスタでコントロール プレーン バージョン 1.23.13-gke.1000 以降を使用している場合は、ロギング スループットを最大化するように設計された Logging エージェントの代替構成をデプロイするように GKE を構成できます。この最大スループットの Logging バリアントにより、ノードごとに 1 秒あたり 10 MiB という高スループットを実現できます。この高スループットの Logging エージェントは、クラスタ内のすべてのノードまたはノードプール内のすべてのノードにデプロイできます。
この高スループット構成では、追加の CPU とメモリが消費されます。
gcloud CLI
新しいクラスタ内のすべてのノードで高スループットのロギングを有効にするには:
gcloud container clusters create CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=MAX_THROUGHPUT \
--machine-type=MACHINE_TYPE
次のように置き換えます。
CLUSTER_NAME
: 新しいクラスタの名前。COMPUTE_LOCATION
: 新しいクラスタの Compute Engine のロケーション。MACHINE_TYPE
: Logging エージェントに十分な CPU を備えたマシンタイプ(e2-standard-8
など)。
このクラスタ内に新しく作成されたすべてのノードプール(デフォルト ノードプールを含む)は、高スループットの Logging エージェントをデプロイします。
既存のクラスタに高スループット ロギングがすでに設定されているかどうかを確認するには、gcloud container cluster describe
コマンドを使用します。
gcloud container clusters describe CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--format="value(nodePoolDefaults[].loggingConfig.variantConfig.variant)"
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
既存のクラスタに高スループット ロギングを構成するには、gcloud container clusters update
コマンドを使用します。
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=MAX_THROUGHPUT
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
高スループットの Logging エージェントを使用する新しいノードプールを作成するには、gcloud container node-pools create
コマンドを使用します。
gcloud container node-pools create NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=MAX_THROUGHPUT
次のように置き換えます。
NODEPOOL_NAME
: 新しいノードプールの名前。CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: 新しいクラスタの Compute Engine のロケーション。
既存のノードプールに高スループット ロギングがすでに設定されているかどうかを確認するには、gcloud container node-pools describe
コマンドを使用します。
gcloud container node-pools describe NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--format="value(config.loggingConfig.variantConfig.variant)"
次のように置き換えます。
NODEPOOL_NAME
: ノードプールの名前。CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: Compute Engine のロケーション。
既存のノードプールを更新するには、gcloud container node-pools update
コマンドを使用します。
gcloud container node-pools update NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=MAX_THROUGHPUT
次のように置き換えます。
NODEPOOL_NAME
: ノードプールの名前。CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: Compute Engine のロケーション。
Terraform
次のコードブロックは、高スループット ロギングの有無にかかわらずノードプールを宣言する方法を指定します。
ノードプールを明示的に管理するには、デフォルトのノードプールがないクラスタを指定する必要があります。
resource "google_container_cluster" "with_example_logging_variants" {
provider = google
name = "CLUSTER_NAME"
location = "COMPUTE_LOCATION"
initial_node_count = 1
remove_default_node_pool = true # We want to manage our node pools separately.
}
高スループット エージェントを使用するノードプールを指定するには、node_config
フィールドを使用して Logging エージェント バリアントを MAX_THROUGHPUT
として指定するほかに、該当するマシンタイプを指定します。
resource "google_container_node_pool" "with_example_logging_variant" {
provider = google
name = "example-node-pool-with-htl"
cluster = google_container_cluster.with_example_logging_variants.name
location = "COMPUTE_LOCATION"
node_config {
logging_variant = "MAX_THROUGHPUT"
# Use a machine type with enough CPU to accommodate the high-throughput agent, such as e2-standard-8.
machine_type = "e2-standard-8"
}
node_count = 1
}
デフォルト エージェントを使用するノードプールを指定するには、node_config
フィールドを使用して Logging エージェント バリアントを DEFAULT
として指定します。
resource "google_container_node_pool" "with_default_logging_variant" {
provider = google
name = "example-node-pool-with-default-logging"
cluster = google_container_cluster.with_example_logging_variants.name
location = "COMPUTE_LOCATION"
node_config {
logging_variant = "DEFAULT"
}
node_count = 1
}
高スループットのロギングを無効にする
高スループットの Logging エージェントを使用しなくなった場合は、デフォルトの Logging エージェントをクラスタまたはノードプールにデプロイします。
gcloud CLI
クラスタまたはノードプールを作成または更新するときに、フラグ --logging-variant=DEFAULT
を渡します。
新しいクラスタ内のすべてのノードでデフォルトの Logging エージェントを使用するには:
gcloud container clusters create CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=DEFAULT \
--machine-type=MACHINE_TYPE
次のように置き換えます。
CLUSTER_NAME
: 新しいクラスタの名前。COMPUTE_LOCATION
: 新しいクラスタの Compute Engine のロケーション。MACHINE_TYPE
: Logging エージェントに十分な CPU を備えたマシンタイプ(e2-standard-8
など)。
既存のクラスタでデフォルトの Logging エージェントを使用するには、gcloud container clusters update
コマンドを使用します。
gcloud container clusters update CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=DEFAULT
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: クラスタの Compute Engine のロケーション。
新しいノードプールでデフォルトのロギング エージェントを使用するには、gcloud container node-pools create
コマンドを使用します。
gcloud container node-pools create NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=DEFAULT
次のように置き換えます。
NODEPOOL_NAME
: 新しいノードプールの名前。CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: 新しいクラスタの Compute Engine のロケーション。
既存のノードプールを更新するには、gcloud container node-pools update
コマンドを使用します。
gcloud container node-pools update NODEPOOL_NAME \
--cluster=CLUSTER_NAME \
--location=COMPUTE_LOCATION \
--logging-variant=DEFAULT
次のように置き換えます。
NODEPOOL_NAME
: ノードプールの名前。CLUSTER_NAME
: クラスタの名前。COMPUTE_LOCATION
: Compute Engine のロケーション。
Terraform
高スループットの Logging エージェントを使用するノードプールを Terraform で作成しなくなった場合は、logging_variant
フィールドを DEFAULT
に設定します。
次のステップ
- ログの取り込みを制御する方法を確認する。