CSIDriver

CSIDriver 捕獲有關叢集上部署的容器儲存介面 (CSI) 卷驅動程式的資訊。

apiVersion: storage.k8s.io/v1

import "k8s.io/api/storage/v1"

CSIDriver

CSIDriver 捕獲有關叢集上部署的容器儲存介面 (CSI) 卷驅動程式的資訊。Kubernetes 的掛載/解除安裝控制器使用此物件來確定是否需要掛載。Kubelet 使用此物件來確定在掛載時是否需要傳遞 Pod 資訊。CSIDriver 物件是非名稱空間的。


  • apiVersion: storage.k8s.io/v1

  • kind: CSIDriver

  • metadata (ObjectMeta)

    標準物件元資料。metadata.Name 指示此物件引用的 CSI 驅動程式的名稱;它必須與 CSI GetPluginName() 呼叫為該驅動程式返回的名稱相同。驅動程式名稱最多為 63 個字元,以字母數字字元([a-z0-9A-Z])開頭和結尾,中間可以包含連字元(-)、點(.)和字母數字字元。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata

  • spec (CSIDriverSpec),必需

    spec 表示 CSI 驅動程式的規範。

CSIDriverSpec

CSIDriverSpec 是 CSIDriver 的規範。


  • attachRequired (boolean)

    attachRequired 表明此 CSI 卷驅動程式需要執行 attach 操作(因為它實現了 CSI ControllerPublishVolume() 方法),並且 Kubernetes 的 attach detach 控制器應呼叫 attach volume 介面,該介面會檢查 volumeattachment 狀態並在繼續掛載之前等待卷已掛載。CSI 外部 attach 協調器與 CSI 卷驅動程式協同工作,並在 attach 操作完成後更新 volumeattachment 狀態。如果將此值指定為 false,則會跳過 attach 操作。否則,將呼叫 attach 操作。

    此欄位不可變。

  • fsGroupPolicy (string)

    fsGroupPolicy 定義了在掛載前底層卷是否支援更改卷的所有權和許可權。有關更多詳細資訊,請參閱特定的 FSGroupPolicy 值。

    此欄位在 Kubernetes < 1.29 中是不可變的,現在是可變的。

    預設為 ReadWriteOnceWithFSType,它將檢查每個卷以確定 Kubernetes 是否應修改卷的所有權和許可權。使用預設策略,只有在定義了 fstype 且卷的訪問模式包含 ReadWriteOnce 時,才會應用定義的 fsGroup。

  • nodeAllocatableUpdatePeriodSeconds (int64)

    nodeAllocatableUpdatePeriodSeconds 指定此驅動程式的 CSINode 可分配容量的定期更新間隔。設定後,將啟用定期更新和由容量相關故障觸發的更新。如果未設定,則不發生更新(既不定期也不在檢測到容量相關故障時),並且 allocatable.count 保持靜態。此欄位允許的最小值為 10 秒。

    這是一個 Beta 功能,需要啟用 MutableCSINodeAllocatableCount 功能門。

    此欄位是可變的。

  • podInfoOnMount (boolean)

    podInfoOnMount 表明此 CSI 卷驅動程式在掛載操作期間需要額外的 Pod 資訊(如 podName、podUID 等),如果設定為 true。如果設定為 false,則不會在掛載時傳遞 Pod 資訊。預設為 false。

    CSI 驅動程式在驅動程式部署時指定 podInfoOnMount。如果為 true,Kubelet 將在 CSI NodePublishVolume() 呼叫中將 Pod 資訊作為 VolumeContext 傳遞。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”:“true”如果卷是 CSIVolumeSource 定義的臨時內聯卷,否則為“false”

    “csi.storage.k8s.io/ephemeral”是 Kubernetes 1.16 中的一項新功能。它僅適用於支援“Persistent”和“Ephemeral” VolumeLifecycleMode 的驅動程式。其他驅動程式可以停用 Pod 資訊傳遞和/或忽略此欄位。由於 Kubernetes 1.15 不支援此欄位,因此驅動程式在 such 叢集上部署時只能支援一種模式,並且部署決定了是哪種模式,例如透過驅動程式的命令列引數。

    此欄位在 Kubernetes < 1.29 中是不可變的,現在是可變的。

  • requiresRepublish (boolean)

    requiresRepublish 表明 CSI 驅動程式希望 periodically 呼叫 NodePublishVolume 以反映掛載卷的任何可能更改。此欄位預設為 false。

    注意:在成功的初始 NodePublishVolume 呼叫後,後續對 NodePublishVolume 的呼叫應僅更新卷的內容。正在執行的容器將看不到新的掛載點。

  • seLinuxMount (boolean)

    seLinuxMount 指定 CSI 驅動程式是否支援“-o context”掛載選項。

    當為“true”時,CSI 驅動程式必須確保此 CSI 驅動程式提供的所有卷都可以使用不同的 -o context 選項單獨掛載。這對於將卷提供為塊裝置上的檔案系統或獨立的共享卷的儲存後端來說很常見。Kubernetes 將在掛載 Pod 中明確設定了 SELinux 上下文的 ReadWriteOncePod 卷時,使用“-o context=xyz”掛載選項呼叫 NodeStage / NodePublish。將來,它可能會擴充套件到其他卷的 AccessModes。無論如何,Kubernetes 將確保卷僅以單個 SELinux 上下文掛載。

    當為“false”時,Kubernetes 不會將任何特殊的 SELinux 掛載選項傳遞給驅動程式。這對於表示更大共享檔案系統子目錄的捲來說很常見。

    預設為“false”。

  • storageCapacity (boolean)

    storageCapacity 表明 CSI 卷驅動程式希望 Pod 排程考慮驅動程式部署將透過建立具有容量資訊的 CSIStorageCapacity 物件來報告的儲存容量,如果設定為 true。

    在部署驅動程式時可以立即啟用檢查。在這種情況下,使用延遲繫結配置新卷的操作將暫停,直到驅動程式部署釋出一些合適的 CSIStorageCapacity 物件。

    或者,可以不設定此欄位或將其設定為 false 來部署驅動程式,並在釋出儲存容量資訊後將其切換。

    此欄位在 Kubernetes <= 1.22 中是不可變的,現在是可變的。

  • tokenRequests ([]TokenRequest)

    原子性:在合併期間將被替換

    tokenRequests 表明 CSI 驅動程式需要掛載卷的 Pod 的服務賬戶令牌來進行必要的身份驗證。Kubelet 將在 CSI NodePublishVolume 呼叫中的 VolumeContext 中傳遞令牌。CSI 驅動程式應解析並驗證以下 VolumeContext:“csi.storage.k8s.io/serviceAccount.tokens”:{ “<audience>”: { “token”: <token>,“expirationTimestamp”: <RFC3339 格式的到期時間戳>,} ...}

    注意:“TokenRequestSpec”中的 audience 必須不同,並且最多隻有一個令牌為空字串。要獲取到期後的新令牌,可以使用 RequiresRepublish 來 periodic 呼叫 NodePublishVolume。

    TokenRequest 包含服務賬戶令牌的引數。

    • tokenRequests.audience (string),必需

      audience 是“TokenRequestSpec”中令牌的目標受眾。它將預設為 kube apiserver 的受眾。

    • tokenRequests.expirationSeconds (int64)

      expirationSeconds 是“TokenRequestSpec”中令牌的有效持續時間。它與“TokenRequestSpec”中的“ExpirationSeconds”具有相同的預設值。

  • volumeLifecycleModes ([]string)

    Set: 合併時將保留唯一值

    volumeLifecycleModes 定義此 CSI 卷驅動程式支援哪種型別的卷。如果列表為空,則預設為“Persistent”,這是 CSI 規範中定義的用法,並在 Kubernetes 中透過常規的 PV/PVC 機制實現。

    另一種模式是“Ephemeral”。在此模式下,卷在 Pod spec 中使用 CSIVolumeSource 內聯定義,其生命週期與該 Pod 的生命週期繫結。驅動程式必須意識到這一點,因為它只會為此類卷收到 NodePublishVolume 呼叫。

    有關實現此模式的更多資訊,請參閱 https://kubernetes-csi.github.io/docs/ephemeral-local-volumes.html。驅動程式可以支援一種或多種模式,將來還可能新增更多模式。

    此欄位是 Beta 版。此欄位不可變。

CSIDriverList

CSIDriverList 是 CSIDriver 物件的集合。


操作


get 讀取指定的 CSIDriver

HTTP 請求

GET /apis/storage.k8s.io/v1/csidrivers/{name}

引數

  • name (在路徑中): string,必填

    CSIDriver 的名稱

  • pretty (在查詢中): string

    pretty

響應

200 (CSIDriver): OK

401: 未授權

list 列出或監視 CSIDriver 型別的物件

HTTP 請求

GET /apis/storage.k8s.io/v1/csidrivers

引數

響應

200 (CSIDriverList): OK

401: 未授權

create 建立一個 CSIDriver

HTTP 請求

POST /apis/storage.k8s.io/v1/csidrivers

引數

響應

200 (CSIDriver): OK

201 (CSIDriver): Created

202 (CSIDriver): Accepted

401: 未授權

update 替換指定的 CSIDriver

HTTP 請求

PUT /apis/storage.k8s.io/v1/csidrivers/{name}

引數

  • name (在路徑中): string,必填

    CSIDriver 的名稱

  • body: CSIDriver, required

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • pretty (在查詢中): string

    pretty

響應

200 (CSIDriver): OK

201 (CSIDriver): Created

401: 未授權

patch 部分更新指定的 CSIDriver

HTTP 請求

PATCH /apis/storage.k8s.io/v1/csidrivers/{name}

引數

  • name (在路徑中): string,必填

    CSIDriver 的名稱

  • body: Patch,必需

  • dryRun (在查詢中): string

    dryRun

  • fieldManager (在查詢中): string

    fieldManager

  • fieldValidation (在查詢中): string

    fieldValidation

  • force (在查詢中): boolean

    force

  • pretty (在查詢中): string

    pretty

響應

200 (CSIDriver): OK

201 (CSIDriver): Created

401: 未授權

delete 刪除一個 CSIDriver

HTTP 請求

DELETE /apis/storage.k8s.io/v1/csidrivers/{name}

引數

響應

200 (CSIDriver): OK

202 (CSIDriver): Accepted

401: 未授權

deletecollection 刪除 CSIDriver 的集合

HTTP 請求

DELETE /apis/storage.k8s.io/v1/csidrivers

引數

響應

200 (Status): OK

401: 未授權

本頁面是自動生成的。

如果你打算報告此頁面存在的問題,請在問題描述中提及此頁面是自動生成的。修復可能需要在 Kubernetes 專案的其他地方進行。

上次修改時間:2025 年 9 月 4 日 下午 3:37 PST:更新 v1.34 的 API 資源參考 (3e10e8c195)