適用於:在 Windows Server 上運行的 AKS
本文說明如何布建、使用和刪除提供長期記憶體的永續性磁碟區,以搭配 Windows Server 上的 AKS 中的 Kubernetes Pod 使用。
永續性磁碟區代表已布建以用於 Kubernetes pods 的一部分儲存空間。 永續性磁碟區可由一或多個 Pod 使用,而且適用於長期儲存。 它也與 Pod 或節點生命周期無關。
雖然您可以為 Windows 和 Linux 節點布建永續性磁碟區,但本文說明如何建立永續性磁碟區以在 Windows 應用程式中使用。 如需詳細資訊,請參閱 Kubernetes 中的永續性磁碟區。
開始之前
若要開始,您需要:
- 具有至少一個 Windows 背景工作節點的 Kubernetes 叢集 。
- 用來存取 Kubernetes 叢集的 kubeconfig 檔案。
建立永續性磁碟區宣告
永續性磁碟區宣告 (PVC) 可用來根據儲存體類別,動態佈建儲存體。 若要建立磁碟區宣告,請先建立名為 pvc-akshci-csi.yaml 的檔案,並複製並貼上下列 YAML 定義。 PVC 需要一個大小為 10 GB 並具有ReadWriteOnce存取權限的磁碟。 預設儲存類別會被指定為儲存類別 (vhdx)。
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-akshci-csi
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
若要建立磁碟區,請在 Windows Server 叢集中的其中一部伺服器上,於系統管理 PowerShell 會話中執行下列命令。 使用 Enter-PSSession 或遠端桌面等方法來連線到伺服器。
kubectl create -f pvc-akshci-csi.yaml
下列輸出顯示已成功建立永續性磁碟區宣告:
輸出:
persistentvolumeclaim/pvc-akshci-csi created
使用永續性磁碟區
若要使用永續性磁碟區,請建立名為 winwebserver.yaml的檔案,然後複製並貼上下列 YAML 定義。 然後,建立可以存取持久性磁碟區宣告和 vhdx 的 Pod。
在下列 YAML 定義中,mountPath 是指將磁碟區掛載到容器內部的路徑。 成功建立 Pod 之後,您會看到在 C:\ 中建立的子目錄 mnt,以及在 mnt 內建立的子目錄 akshciscsi:
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app: win-webserver
name: win-webserver
spec:
replicas: 1
selector:
matchLabels:
app: win-webserver
template:
metadata:
labels:
app: win-webserver
name: win-webserver
spec:
containers:
- name: windowswebserver
image: mcr.microsoft.com/windows/servercore/iis:windowsservercore-ltsc2019
ports:
- containerPort: 80
volumeMounts:
- name: akshciscsi
mountPath: "/mnt/akshciscsi"
volumes:
- name: akshciscsi
persistentVolumeClaim:
claimName: pvc-akshci-csi
nodeSelector:
kubernetes.io/os: windows
若要使用此 YAML 定義建立 Pod,請執行:
kubectl create -f winwebserver.yaml
若要確定 Pod 正在執行,請執行下列命令。 等候幾分鐘,直到 Pod 處於執行中狀態,因為提取映像需要時間:
kubectl get pods -o wide
一旦您的 Pod 開始運行,請執行下列命令來檢視 Pod 狀態:
kubectl.exe describe pod %podName%
若要確認您的磁碟區已在 Pod 中掛接,請執行下列命令:
kubectl exec -it %podname% cmd.exe
刪除永續性磁碟區宣告
在刪除持久性磁碟區宣告之前,您必須透過執行下列命令來刪除應用程式部署:
kubectl delete deployments win-webserver
然後,您可以執行下列命令來刪除永續性磁碟區宣告:
kubectl delete PersistentVolumeClaim pvc-akshci-csi