6.9.2. プロセス ID の制限について
ノード上で実行されるプロセスの数を制限する方法については、以下の情報を参照してください。適切な数のプロセスを設定することで、クラスター内のノードを効率的に稼働させることができます。
プロセス識別子 (PID) は、システム上で現在実行されている各プロセスまたはスレッドに Linux カーネルによって割り当てられる一意の識別子です。システム上で同時に実行できるプロセスの数は、Linux カーネルによって 4,194,304 に制限されています。この数値は、メモリー、CPU、ディスク容量などの他のシステムリソースへのアクセス制限によっても影響を受ける可能性があります。
OpenShift Container Platform では、クラスターで作業をスケジュールする前に、プロセス ID (PID) の使用に関してサポートされている次の 2 つの制限を考慮してください。
Pod あたりの PID の最大数。
OpenShift Container Platform 4.11 以降では、デフォルト値は 4,096 です。この値はノードに設定された
podPidsLimitパラメーターによって制御されます。chroot環境で次のコマンドを実行すると、ノード上の現在の PID 制限を表示できます。sh-5.1# cat /etc/kubernetes/kubelet.conf | grep -i pids出力例
"podPidsLimit": 4096,podPidsLimitは、KubeletConfigオブジェクトを使用して変更できます。「Kubelet パラメーターを編集するための KubeletConfig CR の作成」を参照してください。コンテナーは親 Pod から
podPidsLimit値を継承するため、カーネルは 2 つの制限のうち低い方を適用します。たとえば、コンテナーの PID 制限が最大値に設定されていても、Pod の PID 制限が4096の場合、Pod 内の各コンテナーの PID 制限は 4096 に制限されます。ノードあたりの PID の最大数。
デフォルト値はノードのリソースによって異なります。OpenShift Container Platform では、この値は kubelet 設定の
systemReservedパラメーターによって制御されます。このパラメーターにより、ノードの合計リソースに基づいて各ノードの PID が予約されます。詳細は、「OpenShift Container Platform クラスター内のノードへのリソース割り当て」を参照してください。
Pod が Pod あたりの PID の最大許容数を超えると、Pod が正しく機能しなくなり、ノードから退避させられる可能性があります。詳細は、退避シグナルと閾値に関する Kubernetes ドキュメント を参照してください。
ノードあたりの PID の最大許容数を超えると、ノードが不安定になる可能性があります。これは新しいプロセスに PID を割り当てることができなくなるためです。追加のプロセスを作成せずに既存のプロセスを完了できない場合、ノード全体が使用できなくなり、リブートが必要になる可能性があります。このような状況では、実行中のプロセスやアプリケーションによっては、データ損失が発生する可能性があります。このしきい値に達すると、お客様の管理者と Red Hat Site Reliability Engineering に通知が送信されます。また、Worker node is experiencing PIDPressure という警告がクラスターログに表示されます。
6.9.2.1. OpenShift Container Platform Pod のプロセス ID 制限の設定を引き上げることのリスク リンクのコピーリンクがクリップボードにコピーされました!
ノード上で実行できるプロセスの最大数を高く設定する際の留意事項については、以下の情報を参照してください。適切な数のプロセスを設定することで、クラスター内のノードを効率的に稼働させることができます。
podPidsLimit の値は、デフォルトの 4,096 から最大 16,384 まで増やすことができます。podPidsLimit を変更するには、影響を受けるノードをリブートする必要があります。そのため、この値を変更すると、アプリケーションのダウンタイムが発生する可能性があります。
各ノードで多数の Pod を実行しており、ノードの podPidsLimit 値が高い場合は、ノードの PID 最大値を超えるおそれがあります。
1 つのノードでノードの PID 最大値を超えずに同時に実行できる Pod の最大数を確認するには、3,650,000 を podPidsLimit 値で割ります。たとえば、podPidsLimit 値が 16,384 で、Pod がそれに近い数のプロセス ID を使用すると予想される場合、1 つのノードで 222 個の Pod を安全に実行できます。
podPidsLimit 値が適切に設定されている場合でも、メモリー、CPU、および利用可能なストレージによって、同時に実行できる Pod の最大数が制限される場合があります。