Kubernetes v1.37:メモリQoSがベータに移行 ノート

Kubernetes v1.37:メモリQoSがベータに移行

Kubernetes v1.37 は、Memory QoS のベータ版への昇格をマークし、cgroup v2 を使用する Linux ノードでデフォルトで有効になりました。この機能は、カーネルのメモリコントローラーを活用して、より良いガイダンスを提供することで、コンテナのメモリ管理を強化します。v1.22 でアルファ版として導入され、v1.36 で階層型メモリ予約機能が拡張されました。ベータ版への昇格は、MemoryQoS 機能ゲートが v1.37 のすべての kubelet で明示的な設定変更なしにアクティブになることを意味します。重要な点として、デフォルトの kubelet 設定では、ユーザーが明示的にオプトインしない限り、メモリのスロットリングや予約は有効になりません。ユーザーは、kubelet の設定フィールドを通じて特定の Memory QoS の動作を有効にすることができます。例えば、memoryThrottlingFactor を設定すると、Burstable および BestEffort コンテナに対して memory.high スロットリングがアクティブになります。あるいは、memoryReservationPolicy を TieredReservation に設定すると、memory.min および memory.low を介して階層型メモリ保護が有効になります。v1.37 における重要な変更点は、memoryThrottlingFactor のデフォルトが 0.9 から null に変更されたことで、既存のクラスターがアップグレード時に自動的にメモリのスロットリングが行われるのを防ぎます。これにより、明示的に設定されない限り、実行時の動作は一貫性が保たれます。Memory QoS を設定するために、クラスターオペレーターはスロットリングのために memoryThrottlingFactor を、階層型予約のために memoryReservationPolicy を設定できます。両方を同時に、または個別に有効にすることができます。Memory QoS を完全に無効にすることは、機能ゲートを false に設定し、それに応じて kubelet の設定を調整することで可能です。既知の制限事項として、メモリ予約はノード全体に適用され、個々のポッドの制御に影響を与える、望ましい動作に関係なくすべてのポッドに一貫して適用されます。Memory QoS の次の開発段階は、一般提供への昇格であり、継続的なフィードバックが将来の調整を形成します。