CSIDriver
apiVersion: storage.k8s.io/v1
import "k8s.io/api/storage/v1"
CSIDriver
CSIDriver 擷取關於部署在叢集上的容器儲存介面 (CSI) Volume 驅動程式的資訊。Kubernetes attach detach 控制器使用此物件來判斷是否需要 attach。Kubelet 使用此物件來判斷是否需要傳遞 Pod 資訊以進行掛載。CSIDriver 物件是非命名空間的。
apiVersion: storage.k8s.io/v1
kind: CSIDriver
metadata (ObjectMeta)
標準物件 metadata。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 (布林值)
attachRequired 指出此 CSI Volume 驅動程式需要 attach 操作(因為它實作了 CSI ControllerPublishVolume() 方法),並且 Kubernetes attach detach 控制器應呼叫 attach Volume 介面,該介面檢查 volumeattachment 狀態並等待 Volume attach 完成後再繼續掛載。CSI external-attacher 與 CSI Volume 驅動程式協調,並在 attach 操作完成時更新 volumeattachment 狀態。如果已啟用 CSIDriverRegistry 功能閘道且值指定為 false,則將略過 attach 操作。否則,將呼叫 attach 操作。
此欄位是不可變的。
fsGroupPolicy (字串)
fsGroupPolicy 定義基礎 Volume 是否支援在掛載前變更 Volume 的所有權和權限。有關其他詳細資訊,請參閱特定的 FSGroupPolicy 值。
此欄位在 Kubernetes < 1.29 中是不可變的,現在是可變的。
預設為 ReadWriteOnceWithFSType,它將檢查每個 Volume 以判斷 Kubernetes 是否應修改 Volume 的所有權和權限。使用預設策略,只有在定義 fstype 且 Volume 的存取模式包含 ReadWriteOnce 時,才會套用定義的 fsGroup。
podInfoOnMount (布林值)
podInfoOnMount 指出如果設定為 true,此 CSI Volume 驅動程式在掛載操作期間需要額外的 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": 如果 Volume 是由 CSIVolumeSource 定義的臨時內聯 Volume,則為 "true",否則為 "false"
"csi.storage.k8s.io/ephemeral" 是 Kubernetes 1.16 中的新功能。它僅適用於同時支援 "Persistent" 和 "Ephemeral" VolumeLifecycleMode 的驅動程式。其他驅動程式可以保持 Pod 資訊停用和/或忽略此欄位。由於 Kubernetes 1.15 不支援此欄位,因此驅動程式在部署在此類叢集上時只能支援一種模式,並且部署決定了該模式,例如透過驅動程式的命令列參數。
此欄位在 Kubernetes < 1.29 中是不可變的,現在是可變的。
requiresRepublish (布林值)
requiresRepublish 指出 CSI 驅動程式希望定期呼叫
NodePublishVolume
,以反映已掛載 Volume 中可能發生的任何變更。此欄位預設為 false。注意:在成功初始 NodePublishVolume 呼叫之後,後續對 NodePublishVolume 的呼叫應僅更新 Volume 的內容。執行中的容器看不到新的掛載點。
seLinuxMount (布林值)
seLinuxMount 指定 CSI 驅動程式是否支援 "-o context" 掛載選項。
當 "true" 時,CSI 驅動程式必須確保由此 CSI 驅動程式提供的所有 Volume 都可以使用不同的
-o context
選項單獨掛載。這對於將 Volume 作為區塊裝置上的檔案系統或作為獨立共用 Volume 提供的儲存後端而言是典型的。當掛載在 Pod 中使用的 ReadWriteOncePod Volume 時,Kubernetes 將使用 "-o context=xyz" 掛載選項呼叫 NodeStage / NodePublish,該 Pod 已明確設定 SELinux 環境。將來,它可能會擴展到其他 Volume AccessMode。在任何情況下,Kubernetes 都將確保 Volume 僅使用單一 SELinux 環境掛載。當 "false" 時,Kubernetes 不會將任何特殊的 SELinux 掛載選項傳遞給驅動程式。這對於表示較大共用檔案系統子目錄的 Volume 而言是典型的。
預設值為 "false"。
storageCapacity (布林值)
storageCapacity 指出如果設定為 true,CSI Volume 驅動程式希望 Pod 排程考慮驅動程式部署將透過建立具有容量資訊的 CSIStorageCapacity 物件來報告的儲存容量。
部署驅動程式時可以立即啟用檢查。在這種情況下,佈建具有延遲綁定的新 Volume 將暫停,直到驅動程式部署發布了一些合適的 CSIStorageCapacity 物件。
或者,驅動程式可以在未設定或 false 的欄位下部署,並且可以在發布儲存容量資訊後翻轉它。
此欄位在 Kubernetes <= 1.22 中是不可變的,現在是可變的。
tokenRequests ([]TokenRequest)
Atomic:將在合併期間替換
tokenRequests 指出 CSI 驅動程式需要 Pod 的服務帳戶 Token,它正在掛載 Volume 以進行必要的身份驗證。Kubelet 將在 CSI NodePublishVolume 呼叫中以 VolumeContext 形式傳遞 Token。CSI 驅動程式應剖析和驗證以下 VolumeContext:"csi.storage.k8s.io/serviceAccount.tokens":{ "<audience>":{ "token":<token>,"expirationTimestamp":<RFC3339 中的到期時間戳記>,},... }
注意:每個 TokenRequest 中的 Audience 應不同,並且最多一個 Token 為空字串。若要在到期後接收新 Token,可以使用 RequiresRepublish 來定期觸發 NodePublishVolume。
TokenRequest 包含服務帳戶 Token 的參數。
tokenRequests.audience (字串), 必填
audience 是指 "TokenRequestSpec" 中 token 的目標受眾。預設值為 kube apiserver 的受眾。
tokenRequests.expirationSeconds (int64)
expirationSeconds 是指 "TokenRequestSpec" 中 token 的有效期限。其預設值與 "TokenRequestSpec" 中的 "ExpirationSeconds" 相同。
volumeLifecycleModes ([]字串)
設定:合併期間將保留唯一值
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 物件的集合。
apiVersion: storage.k8s.io/v1
種類:CSIDriverList
metadata (ListMeta)
標準列表 metadata。更多資訊:https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#metadata
items ([]CSIDriver), 必填
items 是 CSIDriver 的列表
操作
get
讀取指定的 CSIDriver
HTTP 請求
GET /apis/storage.k8s.io/v1/csidrivers/{name}
參數
name (在路徑中):字串, 必填
CSIDriver 的名稱
pretty (在查詢中):字串
回應
200 (CSIDriver): 成功
401: 未經授權
list
列出或監看種類為 CSIDriver 的物件
HTTP 請求
GET /apis/storage.k8s.io/v1/csidrivers
參數
allowWatchBookmarks (在查詢中):布林值
continue (在查詢中):字串
fieldSelector (在查詢中):字串
labelSelector (在查詢中):字串
limit (在查詢中):整數
pretty (在查詢中):字串
resourceVersion (在查詢中):字串
resourceVersionMatch (在查詢中):字串
sendInitialEvents (在查詢中):布林值
timeoutSeconds (在查詢中):整數
watch (在查詢中):布林值
回應
200 (CSIDriverList): 成功
401: 未經授權
create
建立 CSIDriver
HTTP 請求
POST /apis/storage.k8s.io/v1/csidrivers
參數
body:CSIDriver, 必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
pretty (在查詢中):字串
回應
200 (CSIDriver): 成功
201 (CSIDriver): 已建立
202 (CSIDriver): 已接受
401: 未經授權
update
取代指定的 CSIDriver
HTTP 請求
PUT /apis/storage.k8s.io/v1/csidrivers/{name}
參數
name (在路徑中):字串, 必填
CSIDriver 的名稱
body:CSIDriver, 必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
pretty (在查詢中):字串
回應
200 (CSIDriver): 成功
201 (CSIDriver): 已建立
401: 未經授權
patch
部分更新指定的 CSIDriver
HTTP 請求
PATCH /apis/storage.k8s.io/v1/csidrivers/{name}
參數
name (在路徑中):字串, 必填
CSIDriver 的名稱
body:Patch, 必填
dryRun (在查詢中):字串
fieldManager (在查詢中):字串
fieldValidation (在查詢中):字串
force (在查詢中):布林值
pretty (在查詢中):字串
回應
200 (CSIDriver): 成功
201 (CSIDriver): 已建立
401: 未經授權
delete
刪除 CSIDriver
HTTP 請求
DELETE /apis/storage.k8s.io/v1/csidrivers/{name}
參數
name (在路徑中):字串, 必填
CSIDriver 的名稱
body:DeleteOptions
dryRun (在查詢中):字串
gracePeriodSeconds (在查詢中):整數
pretty (在查詢中):字串
propagationPolicy (在查詢中):字串
回應
200 (CSIDriver): 成功
202 (CSIDriver): 已接受
401: 未經授權
deletecollection
刪除 CSIDriver 的集合
HTTP 請求
DELETE /apis/storage.k8s.io/v1/csidrivers
參數
body:DeleteOptions
continue (在查詢中):字串
dryRun (在查詢中):字串
fieldSelector (在查詢中):字串
gracePeriodSeconds (在查詢中):整數
labelSelector (在查詢中):字串
limit (在查詢中):整數
pretty (在查詢中):字串
propagationPolicy (在查詢中):字串
resourceVersion (在查詢中):字串
resourceVersionMatch (在查詢中):字串
sendInitialEvents (在查詢中):布林值
timeoutSeconds (在查詢中):整數
回應
200 (Status): 成功
401: 未經授權
此頁面為自動產生。
如果您計劃回報此頁面的問題,請在您的問題描述中註明此頁面為自動產生。修正可能需要在 Kubernetes 專案的其他地方進行。