将永久性卷与 Arc 启用的 AKS 配合使用

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

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

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

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

开始之前

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

创建永久性卷声明

永久卷声明 (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

若要创建卷,请在 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

后续步骤