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 構成が変更されるため、この操作はサービスに影響を与える可能性があります。この操作はオフピーク時に実行することをお勧めします。
ACK コンソールにログインします。左側のナビゲーションウィンドウで、[クラスター] をクリックします。
クラスター ページで、管理するクラスターを見つけてその名前をクリックします。左側のナビゲーションウィンドウで、 を選択します。
ターゲットノードプールの [アクション] 列で、
> [OS 設定] をクリックします。ページ上の注意事項を読みます。[+ カスタムパラメーター] をクリックし、構成するパラメーターを選択して、アップグレードするノードを指定します。[バッチごとの最大同時ノード数] を 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/ディレクトリ内の指定された構成ファイルに書き込みます。詳細については、「ノードプールの作成と管理」をご参照ください。

sysctl パラメーターのリスト
次の表では、[デフォルト値] は、ノードプールが初期化されるときに ACK がデフォルトで設定する値を指します。
次のパラメーターの値の範囲については、「Linux カーネル sysctl パラメーター」ドキュメントをご参照ください。
コンソールまたは OpenAPI でまだサポートされていないパラメーター、および表に記載されていないパラメーターについては、変更方法の手順について「構成ファイルを使用した構成」をご参照ください。
フィールド名 | 説明 | デフォルト値 | コンソールまたは OpenAPI でサポート |
fs.aio-max-nr | 非同期 I/O 操作の最大数。 | 65536 |
|
fs.file-max | システムが開くことができるファイルハンドルの最大数。 | 2097152 |
|
fs.inotify.max_user_watches | 単一のユーザーが作成できる inotify ウォッチの最大数。 | 524288 |
|
fs.nr_open | 単一のプロセスが開くことができるファイル記述子の最大数。 この値は fs.file-max の値より小さくする必要があります。 | 1048576 |
|
kernel.pid_max | システムが割り当てることができる PID の最大数。 | 4194303 |
|
kernel.threads-max | システムが作成できるスレッドの最大数。 | 504581 |
|
net.core.netdev_max_backlog | インターフェイスがカーネルが処理できるよりも速くパケットを受信したときに、INPUT 側でキューに入れることができるパケットの最大数。 | 16384 |
|
net.core.optmem_max | 各ネットワークソケットの補助バッファーの最大サイズ (バイト単位)。 | 20480 |
|
net.core.rmem_max | 各ネットワークソケットの受信バッファーの最大サイズ (バイト単位)。 | 16777216 |
|
net.core.wmem_max | 各ネットワークソケットの送信バッファーの最大サイズ (バイト単位)。 | 16777216 |
|
net.core.wmem_default | 各ネットワークソケットの送信バッファーのデフォルトサイズ (バイト単位)。 | 212992 |
|
net.ipv4.tcp_mem | TCP スタックが使用できるメモリ量 (メモリページ単位、通常は 4 KB)。このパラメーターは、低いしきい値、圧力のしきい値、および高いしきい値を表す 3 つの整数値で構成されます。厳密な順序で設定する必要があります。 | システムの総メモリに基づいて動的に計算 |
|
net.ipv4.neigh.default.gc_thresh1 | ARP キャッシュに保持するエントリの最小数。キャッシュ内のエントリ数がこの値を下回る場合、システムは GC を実行しません。 | システムプリセット |
|
net.ipv4.neigh.default.gc_thresh2 | ARP キャッシュ内のエントリの最大数。これはソフトリミットです。キャッシュ内のエントリ数がこの値に達すると、システムは GC の実行を検討しますが、すぐには強制しません。代わりに、5 秒の遅延を待ちます。 | 1024 |
|
net.ipv4.neigh.default.gc_thresh3 | ARP キャッシュに保持するエントリの最大数。これはハードリミットです。キャッシュ内のエントリ数がこの値に達すると、システムはすぐに GC を実行します。キャッシュ内のエントリ数が一貫してこの値を超える場合、システムは継続的にクリーンアップを実行します。 | 8192 |
|
user.max_user_namespaces | 単一のユーザーが作成できるユーザー名前空間の最大数。 | 0 |
|
kernel.softlockup_panic | ソフトロックアップが発生すると、カーネルはパニックをトリガーしてシステムを再起動し、システムの状態を迅速に回復します。 | 1 |
|
kernel.softlockup_all_cpu_backtrace | ソフトロックアップが検出されると、すべての CPU のデバッグ情報をキャプチャして、問題の診断を容易にします。 | 1 |
|
vm.max_map_count | 単一のプロセスが持つことができるメモリマッピングエリアの最大数を制限して、過剰なメモリ使用量を防ぎます。 | 262144 |
|
net.core.somaxconn | ソケットリスナーキューの最大接続数を設定して、同時接続処理能力を制御します。 | 32768 |
|
net.ipv4.tcp_wmem | TCP 接続送信バッファーの最小値、デフォルト値、および最大値を構成します。単位: バイト。 この設定は、TCP 接続のネットワークスループットとメモリ使用量に直接影響します。 | 4096 12582912 16777216 |
|
net.ipv4.tcp_rmem | TCP 受信バッファーの最小値、デフォルト値、および最大値を構成します。単位: バイト。 この設定は、TCP 接続のネットワークスループットとメモリ使用量に直接影響します。 | 4096 12582912 16777216 |
|
net.ipv4.tcp_max_syn_backlog | SYN キュー内で 3 ウェイハンドシェイクを完了していない接続リクエストの数を制限します。 | 8096 |
|
net.ipv4.tcp_slow_start_after_idle | 長いアイドル期間の後に TCP 接続がスロースタートアルゴリズムを再利用するかどうかを制御します。 | 0 |
|
net.ipv4.ip_forward | IPv4 パケット転送を有効にし、システムがルーターとして機能してパケットを転送できるようにします。 | 1 |
|
net.bridge.bridge-nf-call-iptables | ブリッジデバイスがレイヤー 2 転送中にレイヤー 3 iptables ルールを適用して、ネットワークセキュリティポリシーが有効になるようにします。 | 1 |
|
fs.inotify.max_user_instances | 単一のユーザーが作成できる inotify モニターの数を制限して、リソースの枯渇を防ぎます。 | 16384 |
|
fs.inotify.max_queued_events | カーネルキューにキャッシュできるファイルシステムイベントの数を設定します。 | 16384 |
|
fs.may_detach_mounts | プロセスがまだアクセスしている間にカーネルが名前空間からマウントポイントを安全にデタッチできるようにし、名前空間全体がロックされるのを防ぎます。 | 1 |
|
THP パラメーターのリスト
Transparent Huge Pages (THP) は、Linux カーネルの機能で、小さなページ (通常 4 KB) を大きなページ (通常 2 MB 以上) に自動的にマージします。これにより、ページテーブルエントリ (PTE) へのアクセスサイズと回数が削減され、トランスレーションルックアサイドバッファー (TLB) キャッシュへの圧力が緩和され、メモリアクセス効率が向上します。
以下のすべてのパラメーターは、コンソールまたは OpenAPI を使用して構成できます。
以下のパラメーターのデフォルト値は、オペレーティングシステムとそのカーネルのバージョンによって異なります。詳細については、「Linux カーネル THP パラメーター」ドキュメントをご参照ください。
フィールド名 | 説明 | 有効値 |
transparent_enabled | システムで THP 機能をグローバルに有効にするかどうかを指定します。 |
|
transparent_defrag | THP に関連する最適化を有効にするかどうかを指定します。有効にすると、メモリ内の小さなページを大きなページにマージできます。これにより、ページテーブルのサイズが削減され、システムのパフォーマンスが向上します。 |
|
khugepaged_defrag |
この操作はメモリパスでロックを実行するため、 |
|
khugepaged_alloc_sleep_millisecs | THP の割り当てが失敗した後、 | 詳細については、「khugepaged の最適化」をご参照ください。 |
khugepaged_scan_sleep_millisecs |
| |
khugepaged_pages_to_scan |
|