使用由 Azure Arc 启用的 AKS 的永久性卷

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

本文介绍如何预配、使用和删除永久性卷,这些卷提供长期存储,以便与由 Azure Arc (AKS Arc) 启用的 AKS 中的 Kubernetes Pod 配合使用。

永久性卷表示已预配用于 Kubernetes Pod 的一段存储。 持久卷可由一个或多个 Pod 使用,旨在用于长期存储。 它还独立于 Pod 或节点生命周期。

虽然可以为 Windows 和 Linux 节点预配永久性卷,但本文介绍如何创建在 Windows 应用程序中使用的永久性卷。 有关详细信息,请参阅 Kubernetes 中的永久性卷

准备阶段

以下是开始使用需要满足的条件:

创建永久性卷声明

永久卷声明 (PVC) 用于基于存储类自动预配存储。 若要创建卷声明,请首先创建名为 pvc-akshci-csi.yaml 的文件,并在以下 YAML 定义中进行复制和粘贴。 该 PVC 需要一个大小为 10 GB 且具有 ReadWriteOnce 访问权限的磁盘。 default 存储类将指定为存储类 (vhdx)。

apiVersion: v1
kind: PersistentVolumeClaim
metadata:
 name: pvc-akshci-csi
spec:
 accessModes:
 - ReadWriteOnce
 resources:
  requests:
   storage: 10Gi

若要创建卷,请在 Azure Stack HCI 群集中的其中一台服务器上的管理 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

后续步骤