导入预先存在的 Azure 磁盘卷

如果您已经有一个 Azure 磁盘卷要用于 GKE on Azure,则可以创建一个 PersistentVolume (PV) 对象并将其预留用于特定的 PersistentVolumeClaim (PVC)。

本页面介绍如何使用填充了数据的现有卷来创建 PV,以及如何在 pod 中使用 PV。

准备工作

为预先存在的卷创建 PersistentVolume

您可以指定新的 PV 来导入现有的卷。

  1. 将以下 YAML 复制到名为 existing-volume.yaml 的文件中:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
      annotations:
        pv.kubernetes.io/provisioned-by: disk.csi.azure.com
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      accessModes:
        - ReadWriteOnce
      persistentVolumeReclaimPolicy: Retain
      storageClassName: STORAGE_CLASS_NAME
      claimRef:
        name: my-pvc
        namespace: default
      csi:
        driver: disk.csi.azure.com
        volumeHandle: /subscriptions/SUBSCRIPTION_ID/resourcegroups/RESOURCE_GROUP_NAME/providers/microsoft.compute/disks/DISK_NAME
        fsType: FILE_SYSTEM_TYPE
    

    替换以下内容:

    • VOLUME_NAME:卷的名称
    • VOLUME_CAPACITY:卷的大小。例如 30Gi。 如需详细了解如何在 Kubernetes 中指定卷容量,请参阅内存含义
    • STORAGE_CLASS_NAME:预配卷的 StorageClass 的名称。例如,您可以使用默认 standard-rwo

    • SUBSCRIPTION_ID:包含卷的 Azure 订阅 ID。

    • RESOURCE_GROUP_NAME:包含卷的 Azure 资源组。

    • DISK_NAME:卷的 Azure 磁盘名称。

    • FS_TYPE:卷的文件系统类型。例如 ext4

  2. 将 YAML 应用到您的集群

    kubectl apply -f existing-volume.yaml
    
  3. 确认已创建 PV

    kubectl describe pv VOLUME_NAME
    

    此命令的输出内容中包含 PV 的状态。

将卷与 PersistentVolumeClaim 和 pod 一起使用

导入卷后,您可以创建一个 PVC 和一个装载该 PVC 的 pod。

  1. 以下 YAML 会创建一个 PVC 并将其挂接到运行 Nginx Web 服务器的 pod。将其复制到名为 nginx.yaml 的文件中:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: my-pvc
    spec:
      storageClassName: STORAGE_CLASS_NAME
      volumeName: VOLUME_NAME
      accessModes:
        - ACCESS_MODE
      resources:
        requests:
          storage: VOLUME_CAPACITY
    ---
    
    apiVersion: v1
    kind: Pod
    metadata:
      name: web-server
    spec:
      containers:
       - name: web-server
         image: nginx
         volumeMounts:
           - mountPath: /var/lib/www/html
             name: data
      volumes:
       - name: data
         persistentVolumeClaim:
           claimName: my-pvc
    

    请替换以下内容:

    • STORAGE_CLASS:您之前创建的 PersistentVolume 中的 StorageClass 名称。例如 standard-rwo
    • ACCESS_MODE:卷的访问模式。对于 Azure 磁盘,请使用 ReadWriteOnce。对于 Azure 文件,请使用 ReadWriteMany
    • VOLUME_CAPACITY:卷的大小。例如 30Gi
  2. 将 YAML 应用到您的集群

    kubectl apply -f nginx.yaml
    
  3. 使用 kubectl describe 检查 Nginx 实例的状态。输出的 STATUS 应为 Running

    kubectl describe pod web-server
    

后续步骤