LinuxなどのノードOSのデフォルトパラメーター設定がビジネス要件を満たしていない場合、ノードプールのOSパラメーターをカスタマイズしてOSパフォーマンスを向上させることができます。 ノードプールのOSパラメーターをカスタマイズした後、Container Service for Kubernetes (ACK) はノードプール内のノードをバッチで更新します。 新しいOSパラメーターは、ノードプール内の既存のノードですぐに有効になります。 新しく追加されたノードも新しいOSパラメータを使用します。
制限事項
この機能は、Kubernetes 1.28以降を実行するACKクラスターでのみサポートされます。 詳細については、「ACKマネージドクラスターの作成」、「ACK専用クラスターの作成」、および「ACKエッジクラスターの作成」をご参照ください。 ACKクラスターを更新するには、「ACKクラスターの手動アップグレード」をご参照ください。
使用上の注意
ノードOS構成を動的に変更すると、ノード上の既存のポッドの構成が変更される場合があります。 その結果、ポッドを再現することができる。 ノードOSの設定を変更する前に、アプリケーションの高可用性を確保することを推奨します。
OSパラメーターを変更すると、Linuxカーネルに影響を与える可能性があり、ノードのパフォーマンスが低下したり、可用性が低下したりします。 その結果、アプリケーションが影響を受ける可能性があります。 運用環境でOSパラメーターを変更する前に、パラメーターの目的を把握し、パラメーター変更の影響をテストすることを推奨します。
ACKコンソールでカスタマイズできないOSパラメーターを他の方法で変更しないでください。 許可されていないOSパラメーターを変更すると、ノードが使用できなくなったり、他のOSパラメーターの変更が上書きされたりします。 たとえば、CLIで /etc/sysctl.d/99-k8s.confファイルを手動で変更した場合、クラスターの更新やカスタムパラメーターの変更など、システムがクラスターのO&M操作を実行すると、他の設定変更が上書きされることがあります。
ACKコンソールでカスタマイズ可能なsysctlパラメーター
パラメーター | 説明 | デフォルト | 推奨値の範囲 |
fs.aio-max-nr | システムでサポートされている非同期I/O操作の最大数。 | 65536 | [65536, 6553500] |
fs. ファイル-max | システムによって割り当てることができるファイルハンドルの最大数。 | 2097152 | [8192, 12000500] |
fs.inotify.max_user_watches | ユーザーが作成できるinotifyウォッチの最大数。 | 524288 | [524288, 2097152] |
fs.nr_open | プロセスによって割り当てることができるファイル記述子の最大数。 | 1048576 | [1000000, 20000500] このパラメーターの値は、fs.file-maxパラメーターの値より小さくする必要があります。 |
kernel.pid_max | システムによって割り当てることができるプロセスID (PID) の最大数。 | 4194303 | > 1048575 |
kernel.threads-max | システムで作成できるスレッドの最大数。 | 504581 | > 500000 |
net.core.net dev_max_backlog | インターフェイスでのパケット受信速度がカーネルの処理速度よりも高い場合に、入力キューでサポートされる最大パケット数。 | 16384 | [1000, 3240000] |
net.core.optmem_max | ソケットでサポートされる最大補助バッファサイズ。 単位はバイトです。 | 20480 | [20480, 4194304] |
net.core.rmem_max | ソケットでサポートされている最大受信バッファサイズ。 単位はバイトです。 | 16777216 | [212992, 134217728] |
net.core.wmem_max | ソケットでサポートされている最大送信バッファサイズ。 単位はバイトです。 | 16777216 | [212992, 134217728] |
net.core.wmem_default | ソケットでサポートされているデフォルトの送信バッファサイズ。 単位はバイトです。 | 212992 | ≥ 212992 |
net.ipv4.tcp_mem | TCPスタックで使用できるメモリの最大サイズ。 単位: ページ。 ほとんどの場合、ページサイズは4 KBです。 このパラメーターの値は、TCPスタックの異なるメモリ透かしを指定する3つの整数で構成されます。 第1の整数は、最小メモリ透かしを指定する。 2番目の整数は、ストレスの多いメモリ透かしを指定します。 第3の整数は、最大メモリウォーターマークを指定する。 | 値は、システムによって提供される総メモリに基づいて動的に計算される。 | 3つの値は順に増加する。 最小値: 80000。 |
net.ipv4.neigh.de fault.gc_thresh1 | アドレス解決プロトコル (ARP) キャッシュに保持するエントリの最小数。 キャッシュ内のエントリ数がこの値を下回ると、システムはガベージコレクションを実行しません。 | 128 | [128, 80000] |
net.ipv4.neigh.de fault.gc_thresh2 | ARPキャッシュ内のエントリの最大数。 これはソフトな制限です。 キャッシュ内のエントリ数がこの値に達すると、システムは5秒後にガベージコレクションプロセスを開始します。 | 1024 | [512, 90000] |
net.ipv4.neigh.de fault.gc_thresh3 | ARPキャッシュに保持するエントリの最大数。 これは厳しい制限です。
| 8192 | [1024, 100000] |
ACKコンソールでカスタマイズ可能なTHPパラメータ
Transparent Huge Pages (THP) 機能は、Linuxカーネルの一般的な機能です。 THPは、小さなページ (通常4KBのサイズ) を巨大なページ (通常2 MB以上のサイズ) にマージして、ページテーブルエントリ (PTE) とメモリアクセスの数を減らすことができます。 このようにして、変換索引バッファ (TLB) キャッシュのストレスが低減され、アプリケーション性能が改善される。
この機能はカナリアリリースにあります。 それを使用するには、
チケットを起票してサポートセンターにお問い合わせくださいしてサポートセンターにお問い合わせください。次の表のデフォルト値は、カーネルバージョン4.19.91-18以降のAlibaba Cloud Linux 2を実行するシステムで使用されるデフォルト設定です。
パラメーター | 説明 | デフォルト | 有効値 |
transparent_enabled | THP機能をグローバルに有効にするかどうかを指定します。 | 常に |
|
transparent_defrag | THPデフラグ機能を有効にするかどうかを指定します。 THPの最適化を有効にすると、小さなページを巨大なページにマージできます。これにより、ページテーブルのサイズが縮小され、システムパフォーマンスが向上します。 | madvise |
|
khugepaged_defrag |
この操作は、メモリディレクトリをロックします。 さらに、 | 1 |
|
khugepaged_alloc_sleep_millisecs | THPの割り当てが失敗した場合、 | デフォルト値: 60000。60秒に相当します。 | |
khugepaged_scan_sleep_millisecs | 指定された間隔に基づいて | デフォルト値: 10000。10秒に相当します。 | |
khugepaged_pages_to_scan |
| デフォルト値: 4096 |
ACKコンソールでノードプールのOSパラメーターをカスタマイズする
ノードプールのOSパラメーターをカスタマイズした後、ACKはノードプール内のノードをバッチで更新します。 新しいOSパラメーターは、ノードプール内の既存のノードですぐに有効になります。 新しく追加されたノードも新しいOSパラメータを使用します。 既存のノード上のOSパラメータは、ノード上のアプリケーションに影響を与える。 そのため、ピーク時間外に操作を実行することを推奨します。
ACKコンソールにログインします。 左側のナビゲーションウィンドウで、[クラスター] をクリックします。
[クラスター] ページで、管理するクラスターの名前をクリックします。 左側のナビゲーションウィンドウで、 を選択します。
[ノードプール] ページで、管理するノードプールを選択し、[操作] 列の [詳細] > [OS設定] を選択します。
設定ノートをお読みください。 [+ カスタムパラメーター] をクリックし、変更するパラメーターを選択します。 [バッチごとに修復するノードの最大数] パラメーターを指定します。 次に、[送信] をクリックし、指示に従って後続の操作を完了します。
[バッチごとに修復するノードの最大数] パラメーターを指定すると、指定した値に基づいて、ノードプール内のノードの新しいOS設定がバッチで更新されます。 更新の進行状況は、[イベントローテーション] セクションで確認できます。 更新を一時停止、再開、またはキャンセルすることもできます。 更新を一時停止してから、更新されたノードを確認できます。 更新を一時停止した後も、現在のバッチ内のノードのOS設定は更新されます。 ノードの残りのバッチは、更新を再開するまで更新されません。
重要できるだけ早い機会に更新を完了することをお勧めします。 更新が7日間一時停止されたままの場合、システムは自動的に更新をキャンセルし、関連するイベントとログを削除します。