第2章 CSIDriver [storage.k8s.io/v1]
- 説明
- CSIDriver は、クラスターにデプロイされた Container Storage Interface (CSI) ボリュームドライバーに関する情報をキャプチャーします。Kubernetes アタッチデタッチコントローラーは、このオブジェクトを使用して、アタッチが必要かどうかを判断します。Kubelet はこのオブジェクトを使用して、Pod 情報をマウントで渡す必要があるかどうかを判断します。CSIDriver オブジェクトには namespace がありません。
- タイプ
-
object
- 必須
-
spec
-
2.1. 仕様
プロパティー | タイプ | 説明 |
---|---|---|
|
| APIVersion はオブジェクトのこの表現のバージョンスキーマを定義します。サーバーは認識されたスキーマを最新の内部値に変換し、認識されない値は拒否することがあります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources を参照してください。 |
|
| kind はこのオブジェクトが表す REST リソースを表す文字列の値です。サーバーはクライアントが要求を送信するエンドポイントからこれを推測できることがあります。これを更新することはできません。CamelCase を使用します。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds を参照してください。 |
| 標準オブジェクトのメタデータ。metadata.Name は、このオブジェクトが参照する CSI ドライバーの名前を示します。そのドライバーの CSI GetPluginName() 呼び出しによって返される名前と同じである必要があります。ドライバー名は 63 文字以下で、ダッシュ (-)、ドット (.)、およびその間に英数字を含む英数字 ([a-z0-9A-Z]) で開始および終了する必要があります。詳細は、https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata を参照してください。 | |
|
| CSIDriverSpec は、CSIDriver の仕様です。 |
2.1.1. .spec
- 説明
- CSIDriverSpec は、CSIDriver の仕様です。
- タイプ
-
object
プロパティー | タイプ | 説明 |
---|---|---|
|
| attachRequired は、この CSI ボリュームドライバーにアタッチ操作が必要であることを示し (CSI ControllerPublishVolume () メソッドを実装しているため)、Kubernetes アタッチデタッチコントローラーは、volumeattachment ステータスをチェックし、ボリュームがアタッチされるまで待機してからに進む前に、アタッチデタッチコントローラーを呼び出す必要があります。取り付け。CSI 外部アタッチメントは CSI ボリュームドライバーと調整し、接続操作が完了すると volumeattachment ステータスを更新します。CSIDriverRegistry 機能ゲートが有効で、値が false に指定されている場合、接続操作はスキップされます。それ以外の場合は、アタッチ操作が呼び出されます。 このフィールドは不変です。 |
|
| fsGroupPolicy は、基になるボリュームがマウント前のボリュームの所有権と権限の変更をサポートするかどうかを定義します。詳細は、特定の FSGroupPolicy 値を参照してください。 このフィールドは不変です。 デフォルトは ReadWriteOnceWithFSType です。これにより、各ボリュームが調べられ、Kubernetes がボリュームの所有権および権限を変更する必要があるかどうかが判断されます。デフォルトのポリシーでは、定義された fsGroup は、fstype が定義されていて、ボリュームのアクセスモードに ReadWriteOnce が含まれている場合にのみ適用されます。 |
|
| true に設定すると、podInfoOnMount は、この CSI ボリュームドライバーがマウント操作中に追加の Pod 情報 (podName、podUID など) を必要とすることを示します。false に設定すると、Pod 情報はマウント時に渡されません。デフォルトは false です。 CSI ドライバーは、ドライバーデプロイメントの一部として podInfoOnMount を指定します。true の場合、Kubelet は CSI NodePublishVolume () 呼び出しで VolumeContext として Pod 情報を渡します。CSI ドライバーは、VolumeContext として渡された情報の解析および検証を担当します。 podInfoOnMount が true に設定されていると、次の VolumeContext が渡されます。このリストは大きくなる可能性がありますが、接頭辞が使用されます。"csi.storage.k8s.io/pod.name": pod.Name "csi.storage.k8s.io/pod.namespace": pod.Namespace "csi.storage.k8s.io/pod.uid": string(pod.UID) "csi.storage.k8s.io/ephemeral": ボリュームが CSIVolumeSource によって定義されたエフェメラルインラインボリュームの場合は "true"、それ以外の場合は "false" です。 "csi.storage.k8s.io/ephemeral" は Kubernetes1.16 の新機能です。これは、"Persistent" および "Ephemeral" の両方の VolumeLifecycleMode をサポートするドライバーにのみ必要です。他のドライバーは、Pod 情報を無効のままにするか、このフィールドを無視することができます。Kubernetes 1.15 はこのフィールドをサポートしていないため、ドライバーはそのようなクラスターにデプロイされた場合に 1 つのモードしかサポートできず、デプロイメントによって、たとえばドライバーのコマンドラインパラメーターを介してどのモードであるかが決定されます。 このフィールドは不変です。 |
|
|
requiresRepublish は、CSI ドライバーが、マウントされたボリュームで発生する可能性のある変更を反映するために 注: 最初の NodePublishVolume 呼び出しが成功した後、NodePublishVolume への後続の呼び出しは、ボリュームの内容のみを更新する必要があります。新しいマウントポイントは、実行中のコンテナーには表示されません。 |
|
| seLinuxMount は、CSI ドライバーが "-o context" マウントオプションをサポートするかどうかを指定します。
"true" の場合、CSI ドライバーは、この CSI ドライバーが提供するすべてのボリュームを、異なる "false" の場合、Kubernetes は特別な SELinux マウントオプションをドライバーに渡しません。これは、サイズの大きい共有ファイルシステムのサブディレクトリーを表すボリュームでは一般的です。 デフォルトは "false" です。 |
|
| true に設定されている場合、storageCapacity は、容量情報を使用して CSIStorageCapacity オブジェクトを作成することにより、CSI ボリュームドライバーが Pod スケジューリングでドライバーデプロイメントが報告するストレージ容量を考慮することを望んでいることを示します。 ドライバーをデプロイすると、チェックをすぐに有効にできます。その場合、遅延バインディングを使用した新しいボリュームのプロビジョニングは、ドライバーのデプロイメントで適切な CSIStorageCapacity オブジェクトが公開されるまで一時停止します。 または、フィールドを unset または false にしてドライバーをデプロイし、後でストレージ容量情報が公開されたときにドライバーを反転させることもできます。 このフィールドは Kubernetes ⇐ 1.22 では不変でしたが、現在は変更可能です。 |
|
| tokenRequests は、CSI ドライバーが必要な認証を行うためにボリュームをマウントしている Pod のサービスアカウントトークンを必要としていることを示します。Kubelet は、CSI NodePublishVolume 呼び出しで VolumeContext のトークンを渡します。CSI ドライバーは、次の VolumeContext: "csi.storage.k8s.io/serviceAccount.tokens": { "<audience>": { "token": <token>, "expirationTimestamp": <expiration timestamp in RFC3339>, }, … } を解析して検証する必要があります。 注: 各 TokenRequest のオーディエンスは異なる必要があり、最大で 1 つのトークンが空の文字列です。有効期限後に新しいトークンを受け取るには、RequiresRepublish を使用して NodePublishVolume を定期的にトリガーできます。 |
|
| TokenRequest には、サービスアカウントトークンのパラメーターが含まれています。 |
|
| volumeLifecycleModes は、この CSI ボリュームドライバーがサポートするボリュームの種類を定義します。リストが空の場合のデフォルトは "Persistent" です。これは、CSI 仕様で定義され、通常の PV/PVC メカニズムを介して Kubernetes に実装される使用法です。 もう 1 つのモードは "Ephemeral" です。このモードでは、ボリュームは CSIVolumeSource を使用して Pod 仕様内でインラインで定義され、そのライフサイクルはその Pod のライフサイクルに関連付けられます。ドライバーは、そのようなボリュームに対して NodePublishVolume 呼び出しを取得するだけなので、これを認識している必要があります。 このモードの実装の詳細は、https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html を参照してください。ドライバーはこれらのモードの 1 つ以上をサポートでき、将来さらにモードが追加される可能性があります。 このフィールドはベータ版です。このフィールドは不変です。 |
2.1.2. .spec.tokenRequests
- 説明
tokenRequests は、CSI ドライバーが必要な認証を行うためにボリュームをマウントしている Pod のサービスアカウントトークンを必要としていることを示します。Kubelet は、CSI NodePublishVolume 呼び出しで VolumeContext のトークンを渡します。CSI ドライバーは、次の VolumeContext: "csi.storage.k8s.io/serviceAccount.tokens": { "<audience>": { "token": <token>, "expirationTimestamp": <expiration timestamp in RFC3339>, }, … } を解析して検証する必要があります。
注: 各 TokenRequest のオーディエンスは異なる必要があり、最大で 1 つのトークンが空の文字列です。有効期限後に新しいトークンを受け取るには、RequiresRepublish を使用して NodePublishVolume を定期的にトリガーできます。
- タイプ
-
array
2.1.3. .spec.tokenRequests[]
- 説明
- TokenRequest には、サービスアカウントトークンのパラメーターが含まれています。
- タイプ
-
object
- 必須
-
audience
-
プロパティー | タイプ | 説明 |
---|---|---|
|
| audience は、"TokenRequestSpec" のトークンの対象オーディエンスです。デフォルトでは、kube apiserver のオーディエンスになります。 |
|
| expirationSeconds は、"TokenRequestSpec" 内のトークンの有効期間です。"TokenRequestSpec" の "ExpirationSeconds" と同じデフォルト値があります。 |