3.6. fsGroup を使用した Pod のタイムアウトの抑制
多数のファイルを含むストレージボリュームを使用する際に、Pod のタイムアウトを減らすには、fsGroup フィールドを設定します。このフィールドを指定することで、ファイルの所有権と権限の適用方法を管理でき、大容量ボリュームにおけるデフォルトの再帰的な権限変更によって発生する遅延を防ぐことができます。
これは、デフォルトでは、OpenShift Dedicated がボリュームがマウントされる際に、各ボリュームの内容の所有権とアクセス許可を再帰的に変更し、Pod の securityContext で指定された fsGroup と一致させるため発生する可能性があります。多くのファイルが含まれるボリュームの場合、所有権と権限の確認と変更に時間がかかり、Pod の起動が遅くなる可能性があります。securityContext 内の fsGroupChangePolicy フィールドを使用して、OpenShift Dedicated がボリュームの所有権と権限をチェックおよび管理する方法を制御できます。
fsGroupChangePolicy は、Pod 内で公開される前にボリュームの所有者およびパーミッションを変更する動作を定義します。このフィールドは、fsGroup によって制御される所有権と権限をサポートするボリュームタイプにのみ適用されます。このフィールドには、以下の 2 つの値を指定できます。
-
OnRootMismatch: ルートディレクトリーのパーミッションと所有者が、ボリュームの予想されるパーミッションと一致しない場合にのみ、パーミッションと所有者を変更します。これにより、ボリュームの所有者とパーミッションを変更するのに必要な時間を短縮でき、Pod のタイムアウトを減らすことができます。 -
Always: (デフォルト) ボリュームのマウント時に、常にボリュームのパーミッションと所有者を変更します。
fsGroupChangePolicy は、secret、configMap、emptydir などの一時ボリュームタイプには影響を及ぼしません。
fsGroupChangePolicy は、namespace レベルまたは Pod レベルで設定できます。
3.6.1. namespace レベルで fsGroup を変更する リンクのコピーリンクがクリップボードにコピーされました!
任意の fsGroupChangePolicy 設定を namespace レベルで適用すると、その後その namespace に作成されるすべての Pod に、その設定が継承されます。ただし、個々の Pod に継承された fsGroupChangePolicy 設定は、必要に応じてオーバーライドできます。Pod レベルで fsGroupChangePolicy を設定すると、その Pod に継承された namespace レベルの設定がオーバーライドされます。
前提条件
- 実行中の OpenShift Dedicated クラスターに管理者特権でログインしている。
- OpenShift Dedicated コンソールへアクセスできる。
手順
namespace ごとに fsGroupChangePolicy を設定するには、以下を実行します。
任意の namespace を選択します。
- Administration > Namespaces をクリックします。
- Namespaces ページで、任意の namespace をクリックします。Namespace details ページが表示されます。
fsGroupChangePolicyラベルを namespace に追加します。- Namespace details ページで、Labels の横にある Edit をクリックします。
Edit labels ダイアログで、
storage.openshift.io/fsgroup-change-policyラベルを追加し、次のいずれかと同じ設定にします。-
OnRootMismatch: ルートディレクトリーの権限と所有権が、ボリュームの予期される権限と一致しない場合にのみ、権限と所有権を変更することを指定します。これは、Pod のタイムアウト問題を回避するために役立ちます。 -
Always: (デフォルト) ボリュームがマウントされるたびに、ボリュームの権限と所有権を必ず変更することを指定します。
-
- Save をクリックします。
検証
以前に編集した namespace で Pod を起動し、namespace に設定した値が spec.securityContext.fsGroupChangePolicy パラメーターに含まれていることを確認します。
fsGroupChangePolicy 設定を示す Pod YAML ファイルの例
securityContext:
seLinuxOptions:
level: 's0:c27,c24'
runAsNonRoot: true
fsGroup: 1000750000
fsGroupChangePolicy: OnRootMismatch
...
- 1
- この値は namespace から継承されます。