Azure Stack Edge Pro GPU 裝置上的 Kubernetes 儲存體管理
適用於:Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
在您的 Azure Stack Edge Pro 裝置上,系統會在您設定計算角色時建立 Kubernetes 叢集。 建立了 Kubernetes 叢集,就可以在 Pod 的 Kubernetes 叢集中部署容器化應用程式。 有多種不同的方式可將儲存體提供給 Kubernetes 叢集中的 Pod。
本文概要介紹在 Kubernetes 叢集上佈建儲存體的方法,尤其是與 Azure Stack Edge Pro 裝置相關的情境。
Kubernetes Pod 的儲存體需求
Kubernetes Pod 是無狀態的,但它們執行的應用程式通常是具狀態的。 由於 Pod 可能短期存留,且會在 Kubernetes 節點之間重新啟動、容錯移轉或移動,因此必須符合下列與 Pod 相關聯的儲存體需求。
儲存體必須:
- 位於 Pod 外部。
- 與 Pod 生命週期無關。
- 可從所有 Kubernetes 節點存取。
若要了解如何針對 Kubernetes 進行儲存體管理,必須了解兩個 API 資源:
PersistentVolume (PV):這是 Kubernetes 叢集中的一段儲存體。 Kubernetes 儲存體可以靜態佈建為
PersistentVolume
。 它也可以動態佈建為StorageClass
。PersistentVolumeClaim (PVC):這是使用者提出的儲存體要求。 PVC 會耗用 PV 資源。 PVC 可以要求特定大小和存取模式。
因為使用者對於不同問題的不同屬性需要
PersistentVolumes
,因此叢集管理員需要能夠提供各種不同的PersistentVolumes
,而不僅僅是大小和存取模式。 針對這些需求,您需要StorageClass
資源。
儲存體佈建可以是靜態或動態。 接著在下列各節中討論各個佈建類型。
靜態佈建
Kubernetes 叢集管理員可透過靜態方式佈建儲存體。 若要這樣做,他們可以使用以 SMB/NFS 檔案系統為基礎的儲存體後端,或使用透過內部部署環境中的網路在本機連結的 iSCSI 磁碟,甚至使用雲端中的 Azure 檔案儲存體或 Azure 資料箱磁碟。 依預設不會佈建這種類型的儲存體,且叢集管理員必須規劃和管理此佈建。
下圖描述在 Kubernetes 中使用靜態佈建儲存體的方式:
使用下列步驟:
佈建儲存體:叢集管理員會佈建儲存體。 在此範例中,叢集管理員會建立一或多個 SMB 共用,以在對應至這些共用的 Kubernetes 叢集中自動建立永續性磁碟區物件。
宣告儲存體:您提交要求儲存體的 PVC 部署。 此儲存體宣告是 PersistentVolumeClaim (PVC)。 如果 PV 的大小和存取模式符合 PVC 的大小和存取模式,則 PVC 會繫結至 PV。 PVC 和 PV 會一對一對應。
將 PVC 掛接至容器:當 PVC 繫結至 PV 之後,您可以將此 PVC 掛接至容器中的路徑。 當容器中的應用程式邏輯從/向此路徑讀取/寫入時,資料會寫入 SMB 儲存體。
動態佈建
下圖描述在 Kubernetes 中使用靜態佈建儲存體的方式:
使用下列步驟:
定義儲存類別:叢集管理員會根據 Kubernetes 叢集的作業環境來定義儲存類別。 叢集管理員也會部署佈建程式,這是在 Kubernetes 叢集上部署的另一個 Pod 或應用程式。 佈建程式具有動態佈建共用的所有詳細資料。
宣告儲存體:您提交一個宣告儲存體的應用程式。 使用此儲存類別參考建立 PVC 之後,就會叫用佈建程式。
動態佈建儲存體:佈建程式會動態建立與本機磁碟儲存體相關聯的共用。 建立共用之後,它也會自動建立對應至此共用的 PV 物件。
將 PVC 掛接至容器:當 PVC 繫結至 PV 之後,您就可以將 PVC 掛接至容器,以靜態佈建和讀取或寫入共用相同的方式將 PVC 掛接至路徑。
Azure Stack Edge Pro 上的儲存體佈建
在 Azure Stack Edge Pro 裝置上,裝置的儲存體功能會用來建立靜態佈建的 PersistentVolumes
。 當您佈建共用且 [使用共用搭配 Edge 計算] 選項已啟用時,此動作會在 Kubernetes 叢集中自動建立 PV 資源。
若要使用雲端階層處理,您可以建立 Edge 雲端共用,並啟用 [使用共用搭配 Edge 計算] 選項。 PV 會再次針對此共用自動建立。 您寫入 Edge 共用的任何應用程式資料都會分層至雲端。
您可以建立 SMB 和 NFS 共用,以在 Azure Stack Edge Pro 裝置上以靜態方式佈建 PV。 在佈建 PV 之後,請提交一個 PVC 來宣告此儲存體。 以下範例是可宣告儲存體,並使用您所佈建之共用的 PVC 部署 yaml
。
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: pvc-smb-flexvol
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
volumeName: <nfs-or-smb-share-name-here>
storageClassName: ""
若要取得 volumeName
欄位的值,請在建立後選取 SMB 或 NFS 共用時,選取 Edge 計算模組的本機掛接點。 這與共用名稱相同。
如需詳細資訊,請參閱透過 kubectl 在 Azure Stack Edge Pro 上透過靜態佈建部署具狀態應用程式。
若要存取相同的靜態佈建儲存體,IoT 儲存體繫結的對應磁碟區掛接選項如下。 /home/input
是可在容器內存取磁碟區的路徑。
{
"HostConfig": {
"Mounts": [
{
"Target": "/home/input",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
},
{
"Target": "/home/output",
"Source": "<nfs-or-smb-share-name-here>",
"Type": "volume"
}]
}
}
Azure Stack Edge Pro 也有稱為 ase-node-local
的內建 StorageClass
,其使用連結至 Kubernetes 節點的資料磁碟儲存體。 此 StorageClass
支援動態佈建。 您可以在 Pod 應用程式中建立 StorageClass
參考,系統會自動為您建立一個 PV。 如需詳細資訊,請參閱 Kubernetes 儀表板,以查詢 ase-node-local StorageClass
。
如需詳細資訊,請參閱透過 kubectl 在 Azure Stack Edge Pro 上透過動態佈建部署具狀態應用程式。
選擇儲存體類型
視您要部署的工作負載而定,您可能需要選擇儲存體類型。
如果您想要
PersistentVolumes
(其中磁碟區由許多部署節點掛接為 read-write) 的ReadWriteMany
存取模式,請針對 SMB/NFS 共用使用靜態佈建。如果您要部署的應用程式具有 POSIX 合規性需求,例如 MongoDB、PostgreSQL、MySQL 或 Prometheus 等應用程式,請使用內建的 StorageClass。 存取模式為
ReadWriteOnce
,或磁碟區由單一節點掛接為 read-write。
如需存取模式的詳細資訊,請參閱 Kubernetes 磁碟區存取模式。
下一步
若要了解如何以靜態方式佈建 PersistentVolume
,請參閱:
若要了解如何動態佈建 StorageClass
,請參閱: