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

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

最終更新日:Nov 04, 2024

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

1024

[512, 90000]

net.ipv4.neigh.de fault.gc_thresh3

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機能をグローバルに有効にするかどうかを指定します。

常に

  • always: THP機能をグローバルに有効にします。

  • never: THP機能をグローバルに無効にします。

  • madvise: madvise() システムコールによって呼び出され、MADV_HUGEPAGEによってフラグが立てられたメモリゾーンでのみTHP機能を有効にします。

transparent_defrag

THPデフラグ機能を有効にするかどうかを指定します。 THPの最適化を有効にすると、小さなページを巨大なページにマージできます。これにより、ページテーブルのサイズが縮小され、システムパフォーマンスが向上します。

madvise

  • always: 透明な巨大ページが利用できない場合、システムはメモリ割り当てを中断します。 システムは、直接メモリ再利用および直接メモリ圧縮を待つ。 直接再利用および直接圧縮が完了した後にシステムが十分な連続した空きメモリを有する場合、システムは透過的な巨大ページを割り当て続ける。

  • defer: 透明な巨大ページが利用できない場合、システムは通常のページ (サイズ4 KB) を割り当てます。 一方、kswapdカーネルデーモンを起動してバックグラウンドの再利用を実行し、kcompactdカーネルデーモンを起動してバックグラウンドのコンパクションを実行します。 これらの操作が一定期間実行された後、システムに十分な連続した空きメモリがある場合、khugepagedカーネルデーモンは、以前に割り当てられた通常のページ (サイズ4 KB) を透過的な巨大ページ (サイズ2 MB) にマージします。

  • madvise: madvise() システムコールによって呼び出され、MADV_HUGEPAGEによってフラグが立てられたメモリ領域では、メモリ割り当ての動作はalwaysオプションの動作と同じです。

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

  • defer + madvise: madvise() システムコールによって呼び出され、MADV_HUGEPAGEによってフラグが立てられたメモリ領域では、メモリ割り当ての動作はalwaysオプションの動作と同じです。 他のメモリ領域では、メモリ割り当ての動作は延期オプションの動作と同じです。

  • never: THPデフラグを無効にします。

khugepaged_defrag

khugepagedは、透明な巨大なページ管理と最適化に使用されるカーネルスレッドです。 これにより、メモリフラグメントが削減され、システムパフォーマンスが向上します。 khugepagedは、システム内の透明な巨大ページを監視し、散在する透明な巨大ページをより大きなページにマージしようとします。 これにより、メモリ利用率とパフォーマンスが向上します。

この操作は、メモリディレクトリをロックします。 さらに、khugepagedカーネルデーモンは、間違った時間に通常のページをスキャンして透過的な巨大なページに変換することがあります。 その結果、この操作はアプリケーションのパフォーマンスに影響を与える可能性があります。

1

  • 0: khugepagedデフラグを無効にします。

  • 1: システムがアイドル状態になると、khugepagedカーネルデーモンが定期的に起動し、連続した通常ページ (サイズ4 KB) を透過的な巨大ページ (サイズ2 MB) にマージしようとします。

khugepaged_alloc_sleep_millisecs

THPの割り当てが失敗した場合、khugepagedカーネルデーモンは指定された期間待機してから、透過的な巨大ページの再割り当てを開始します。 これは、短時間での連続的なTHP割り当ての失敗を防ぐのに役立つ。 単位:ミリ秒。

デフォルト値: 60000。60秒に相当します。

khugepaged_scan_sleep_millisecs

指定された間隔に基づいてkhugepagedカーネルデーモンが起動します。 単位:ミリ秒。

デフォルト値: 10000。10秒に相当します。

khugepaged_pages_to_scan

khugepagedカーネルデーモンは、毎回起動された後、指定されたページ数をスキャンします。 単位: ページ。

デフォルト値: 4096

ACKコンソールでノードプールのOSパラメーターをカスタマイズする

ノードプールのOSパラメーターをカスタマイズした後、ACKはノードプール内のノードをバッチで更新します。 新しいOSパラメーターは、ノードプール内の既存のノードですぐに有効になります。 新しく追加されたノードも新しいOSパラメータを使用します。 既存のノード上のOSパラメータは、ノード上のアプリケーションに影響を与える。 そのため、ピーク時間外に操作を実行することを推奨します。

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

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

  3. [ノードプール] ページで、管理するノードプールを選択し、[操作] 列の [詳細] > [OS設定] を選択します。

  4. 設定ノートをお読みください。 [+ カスタムパラメーター] をクリックし、変更するパラメーターを選択します。 [バッチごとに修復するノードの最大数] パラメーターを指定します。 次に、[送信] をクリックし、指示に従って後続の操作を完了します。

    [バッチごとに修復するノードの最大数] パラメーターを指定すると、指定した値に基づいて、ノードプール内のノードの新しいOS設定がバッチで更新されます。 更新の進行状況は、[イベントローテーション] セクションで確認できます。 更新を一時停止、再開、またはキャンセルすることもできます。 更新を一時停止してから、更新されたノードを確認できます。 更新を一時停止した後も、現在のバッチ内のノードのOS設定は更新されます。 ノードの残りのバッチは、更新を再開するまで更新されません。

    重要

    できるだけ早い機会に更新を完了することをお勧めします。 更新が7日間一時停止されたままの場合、システムは自動的に更新をキャンセルし、関連するイベントとログを削除します。