すべてのプロダクト
Search
ドキュメントセンター

Container Service for Kubernetes:ノードプールの OS パラメーターのカスタマイズ

最終更新日:Nov 09, 2025

Linux システムのデフォルトのオペレーティングシステム (OS) パラメーターがニーズを満たさない場合は、ワークロードの要件に基づいてノードプール内のノードの OS パラメーターをカスタマイズできます。パラメーターをカスタマイズすると、システムは変更をバッチでノードに適用します。これらの変更は、ノードプール内の既存のノードですぐに有効になり、新しいノードも新しい構成を使用します。

使用上の注意

この機能は、バージョン 1.28 以降の ACK マネージドクラスターACK 専用クラスター (新しいクラスターは作成できなくなりました)、および ACK Edge クラスターでのみサポートされています。クラスターをアップグレードするには、「クラスターを手動でアップグレードする」をご参照ください。

注意事項

  • OS ノード構成を変更すると、ノード上の既存の Pod の構成が変更され、Pod が再作成される可能性があります。続行する前に、アプリケーションが高可用性であることを確認してください。

  • 不適切な OS パラメーターの調整は、Linux カーネルの動作を変更する可能性があります。これにより、ノードのパフォーマンスが低下したり、ノードが利用できなくなったりして、サービスに影響を与える可能性があります。パラメーターを変更する前に、その機能を完全に理解し、本番環境に適用する前に十分なテストを実行してください。

ノードプールの OS パラメーターの構成

ノードプールの sysctl パラメーターと Transparent HugePage (THP) パラメーターを構成できます。これらのパラメーターはすべて構成ファイルを変更することで構成できますが、THP パラメーター一部の sysctl パラメーターは、コンソールまたは OpenAPI を使用して構成することもできます。

コンソールまたは OpenAPI を使用した構成

コンソール

OS パラメーターをカスタマイズすると、システムは変更をバッチでノードに適用します。新しい構成は既存のノードですぐに有効になり、新しいノードにも自動的に適用されます。カスタム OS パラメーターを適用すると、既存のノードの OS 構成が変更されるため、この操作はサービスに影響を与える可能性があります。この操作はオフピーク時に実行することをお勧めします。

  1. ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。

  2. クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、[ノード] > [ノードプール] を選択します。

  3. ターゲットノードプールの [アクション] 列で、image > [OS 設定] をクリックします。

  4. ページ上の注意事項を読みます。[+ カスタムパラメーター] をクリックし、構成するパラメーターを選択して、アップグレードするノードを指定します。[バッチごとの最大同時ノード数] を 10 以下の値に設定し、[送信] をクリックします。画面の指示に従って操作を完了します。

    [バッチごとの最大同時ノード数] を設定すると、OS 構成がバッチでノードに適用されます。このプロセス中に、[イベント履歴] エリアで進行状況を表示し、操作 (一時停止、再開、キャンセルなど) を制御できます。一時停止機能を使用して、アップグレードされたノードを検証できます。タスクが一時停止されると、構成中のノードは構成が完了するまで続行されます。タスクを再開するまで、カスタム構成は開始されていないノードには適用されません。

    重要

    カスタム構成タスクはできるだけ早く完了してください。一時停止されたタスクは 7 日後に自動的にキャンセルされ、関連するイベントとログはクリアされます。

OpenAPI

コンソールを使用するだけでなく、ModifyNodePoolNodeConfig API 操作を呼び出すことで OS パラメーターをカスタマイズすることもできます。

構成ファイルを使用した構成

ACK では、カスタムパラメーターを /etc/sysctl.d/99-user-customized.conf ファイルに書き込むことができます。このファイルは、ノードの初期化および再起動時にカスタム構成用に予約されています。このファイル内の sysctl パラメーターは、ノードの再起動時に優先され、デフォルトの OS 値およびノードプールのカスタム sysctl 構成機能を使用して設定された値を上書きします。

重要

sysctl パラメーターを調整すると、Linux カーネルの動作が変更されます。これにより、ノードのパフォーマンスが低下したり、ノードが利用できなくなったりして、サービスに影響を与える可能性があります。変更を行う前に、リスクを十分に評価してください。

  • ノードプール内の既存のノードについては、ノードにログインしてこのカスタムパラメーターファイルを変更できます。その後、手動で sysctl -p /etc/sysctl.d/99-user-customized.conf コマンドを実行して構成を適用する必要があります。

  • 今後ノードプールに追加されるノードについては、ノードプールのインスタンスのユーザーデータにカスタムパラメーターファイルに書き込むスクリプトを追加できます。これにより、新しいノードはデフォルトでこれらのカスタムパラメーター値を使用するようになります。手順は次のとおりです。

    ノードプール構成の [ユーザーデータ] フィールドに、コマンド echo '${sysctl_key}=${sysctl_value}' > /etc/sysctl.d/99-user-customized.conf を追加します。${sysctl_key}${sysctl_value} を実際の値に置き換えます。このコマンドは、カスタム構成を /etc/sysctl.d/ ディレクトリ内の指定された構成ファイルに書き込みます。

    詳細については、「ノードプールの作成と管理」をご参照ください。

    image

sysctl パラメーターのリスト

説明
  • 次の表では、[デフォルト値] は、ノードプールが初期化されるときに ACK がデフォルトで設定する値を指します。

  • 次のパラメーターの値の範囲については、「Linux カーネル sysctl パラメーター」ドキュメントをご参照ください。

  • コンソールまたは OpenAPI でまだサポートされていないパラメーター、および表に記載されていないパラメーターについては、変更方法の手順について「構成ファイルを使用した構成」をご参照ください。

フィールド名

説明

デフォルト値

コンソールまたは OpenAPI でサポート

fs.aio-max-nr

非同期 I/O 操作の最大数。

65536

Correct

fs.file-max

システムが開くことができるファイルハンドルの最大数。

2097152

Correct

fs.inotify.max_user_watches

単一のユーザーが作成できる inotify ウォッチの最大数。

524288

Correct

fs.nr_open

単一のプロセスが開くことができるファイル記述子の最大数。

この値は fs.file-max の値より小さくする必要があります。

1048576

Check mark

kernel.pid_max

システムが割り当てることができる PID の最大数。

4194303

Correct

kernel.threads-max

システムが作成できるスレッドの最大数。

504581

Correct

net.core.netdev_max_backlog

インターフェイスがカーネルが処理できるよりも速くパケットを受信したときに、INPUT 側でキューに入れることができるパケットの最大数。

16384

Yes

net.core.optmem_max

各ネットワークソケットの補助バッファーの最大サイズ (バイト単位)。

20480

Correct

net.core.rmem_max

各ネットワークソケットの受信バッファーの最大サイズ (バイト単位)。

16777216

Check mark

net.core.wmem_max

各ネットワークソケットの送信バッファーの最大サイズ (バイト単位)。

16777216

Correct

net.core.wmem_default

各ネットワークソケットの送信バッファーのデフォルトサイズ (バイト単位)。

212992

Correct

net.ipv4.tcp_mem

TCP スタックが使用できるメモリ量 (メモリページ単位、通常は 4 KB)。このパラメーターは、低いしきい値、圧力のしきい値、および高いしきい値を表す 3 つの整数値で構成されます。厳密な順序で設定する必要があります。

システムの総メモリに基づいて動的に計算

Correct

net.ipv4.neigh.default.gc_thresh1

ARP キャッシュに保持するエントリの最小数。キャッシュ内のエントリ数がこの値を下回る場合、システムは GC を実行しません。

システムプリセット

Correct

net.ipv4.neigh.default.gc_thresh2

ARP キャッシュ内のエントリの最大数。これはソフトリミットです。キャッシュ内のエントリ数がこの値に達すると、システムは GC の実行を検討しますが、すぐには強制しません。代わりに、5 秒の遅延を待ちます。

1024

Correct

net.ipv4.neigh.default.gc_thresh3

ARP キャッシュに保持するエントリの最大数。これはハードリミットです。キャッシュ内のエントリ数がこの値に達すると、システムはすぐに GC を実行します。キャッシュ内のエントリ数が一貫してこの値を超える場合、システムは継続的にクリーンアップを実行します。

8192

Correct

user.max_user_namespaces

単一のユーザーが作成できるユーザー名前空間の最大数。

0

Checkmark

kernel.softlockup_panic

ソフトロックアップが発生すると、カーネルはパニックをトリガーしてシステムを再起動し、システムの状態を迅速に回復します。

1

Error

kernel.softlockup_all_cpu_backtrace

ソフトロックアップが検出されると、すべての CPU のデバッグ情報をキャプチャして、問題の診断を容易にします。

1

Incorrect

vm.max_map_count

単一のプロセスが持つことができるメモリマッピングエリアの最大数を制限して、過剰なメモリ使用量を防ぎます。

262144

Error

net.core.somaxconn

ソケットリスナーキューの最大接続数を設定して、同時接続処理能力を制御します。

32768

Incorrect

net.ipv4.tcp_wmem

TCP 接続送信バッファーの最小値、デフォルト値、および最大値を構成します。単位: バイト。

この設定は、TCP 接続のネットワークスループットとメモリ使用量に直接影響します。

4096 12582912 16777216

Incorrect

net.ipv4.tcp_rmem

TCP 受信バッファーの最小値、デフォルト値、および最大値を構成します。単位: バイト。

この設定は、TCP 接続のネットワークスループットとメモリ使用量に直接影響します。

4096 12582912 16777216

Incorrect

net.ipv4.tcp_max_syn_backlog

SYN キュー内で 3 ウェイハンドシェイクを完了していない接続リクエストの数を制限します。

8096

Error

net.ipv4.tcp_slow_start_after_idle

長いアイドル期間の後に TCP 接続がスロースタートアルゴリズムを再利用するかどうかを制御します。

0

Error

net.ipv4.ip_forward

IPv4 パケット転送を有効にし、システムがルーターとして機能してパケットを転送できるようにします。

1

Error

net.bridge.bridge-nf-call-iptables

ブリッジデバイスがレイヤー 2 転送中にレイヤー 3 iptables ルールを適用して、ネットワークセキュリティポリシーが有効になるようにします。

1

Error

fs.inotify.max_user_instances

単一のユーザーが作成できる inotify モニターの数を制限して、リソースの枯渇を防ぎます。

16384

Error

fs.inotify.max_queued_events

カーネルキューにキャッシュできるファイルシステムイベントの数を設定します。

16384

Error

fs.may_detach_mounts

プロセスがまだアクセスしている間にカーネルが名前空間からマウントポイントを安全にデタッチできるようにし、名前空間全体がロックされるのを防ぎます。

1

Error

THP パラメーターのリスト

Transparent Huge Pages (THP) は、Linux カーネルの機能で、小さなページ (通常 4 KB) を大きなページ (通常 2 MB 以上) に自動的にマージします。これにより、ページテーブルエントリ (PTE) へのアクセスサイズと回数が削減され、トランスレーションルックアサイドバッファー (TLB) キャッシュへの圧力が緩和され、メモリアクセス効率が向上します。

説明
  • 以下のすべてのパラメーターは、コンソールまたは OpenAPI を使用して構成できます。

  • 以下のパラメーターのデフォルト値は、オペレーティングシステムとそのカーネルのバージョンによって異なります。詳細については、「Linux カーネル THP パラメーター」ドキュメントをご参照ください。

フィールド名

説明

有効値

transparent_enabled

システムで THP 機能をグローバルに有効にするかどうかを指定します。

  • always: システムで THP 機能をグローバルに有効にします。

  • never: システムで THP 機能をグローバルに無効にします。

  • madvise: madvise() システムコールを使用して MADV_HUGEPAGE でマークされたメモリリージョンでのみ THP 機能を有効にします。

transparent_defrag

THP に関連する最適化を有効にするかどうかを指定します。有効にすると、メモリ内の小さなページを大きなページにマージできます。これにより、ページテーブルのサイズが削減され、システムのパフォーマンスが向上します。

  • always: システムが透明な巨大ページの割り当てに失敗すると、メモリ割り当てを一時停止し、システムが直接メモリ再利用と直接メモリ最適化を実行するのを待ちます。メモリの再利用と最適化が完了した後、十分な隣接した空きメモリがある場合、システムは透明な巨大ページを割り当てます。

  • defer: システムが透明な巨大ページの割り当てに失敗すると、代わりに通常の 4 KB ページを割り当てます。同時に、システムはバックグラウンドメモリ再利用のために kswapd デーモンプロセスを、バックグラウンドメモリ最適化のために kcompactd デーモンプロセスを起動します。一定期間後、十分な隣接した空きメモリがある場合、khugepaged デーモンプロセスは以前に割り当てられた 4 KB ページを 2 MB の透明な巨大ページにマージできます。

  • madvise: madvise() システムコールを使用して MADV_HUGEPAGE でマークされたメモリリージョンでは、メモリ割り当ての動作は `always` と同じです。他のメモリ領域では、ページフォールトが発生すると、システムは代わりに通常のページ (4 KB) を割り当てます。

    他のメモリ領域では、ページフォールトが発生すると、システムは代わりに通常のページ (4 KB) を割り当てます。

  • defer+madvise: madvise() システムコールを使用して MADV_HUGEPAGE でマークされたメモリリージョンでは、メモリ割り当ての動作は `always` と同じです。他のメモリリージョンでは、メモリ割り当ての動作は `defer` と同じです。

  • never: 最適化を無効にします。

khugepaged_defrag

khugepaged は、主に大きなページを管理および最適化してメモリの断片化を減らし、パフォーマンスを向上させる役割を担うカーネルスレッドです。システム内の大きなページを監視し、散在する大きなページを見つけると、それらをより大きな隣接したページにマージして、メモリ使用率とパフォーマンスを向上させようとします。

この操作はメモリパスでロックを実行するため、khugepaged デーモンプロセスが不適切なタイミングで大きなページのスキャンと変換を開始し、アプリケーションのパフォーマンスに影響を与える可能性があります。

  • 0: khugepaged の最適化機能を無効にします。

  • 1: khugepaged デーモンプロセスは、システムがアイドル状態のときに定期的に起動し、隣接した 4 KB ページを 2 MB の透明な巨大ページにマージしようとします。

khugepaged_alloc_sleep_millisecs

THP の割り当てが失敗した後、khugepaged デーモンプロセスが次の大きなページの割り当て試行の前に待機する時間をミリ秒単位で指定します。これは、短期間に連続して大きなページの割り当てが失敗するのを避けるためです。

詳細については、「khugepaged の最適化」をご参照ください。

khugepaged_scan_sleep_millisecs

khugepaged デーモンプロセスが起動する間隔 (ミリ秒単位)。

khugepaged_pages_to_scan

khugepaged デーモンプロセスが起動するたびにスキャンするメモリページの数。