使用 Azure 文件共享

GKE on Azure 支持装载 Azure 文件共享。如果您已拥有用于 GKE on Azure 的 Azure 文件共享,则可以创建 PersistentVolume (PV) 对象并将其预留用于特定的 PersistentVolumeClaim (PVC)。

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

准备工作

存储 Azure 存储账号信息

GKE on Azure 会在 Secret 中存储用于访问 Azure 存储账号的信息。如果您尚未在集群中创建 Secret,则必须添加一个。如果您的集群中有此 Secret,请跳到为现有共享创建 PersistentVolume

  1. 要创建 Secret,请将以下清单复制到名为“azure-service-account-key.yaml”的文件中。

    ---
    apiVersion: v1
    kind: Secret
    metadata:
      name: azure-secret-account-key
    type: Opaque
    stringData:
      accountname: STORAGE_ACCOUNT_NAME
      accountkey: STORAGE_ACCOUNT_KEY
    

    替换以下内容:

    • STORAGE_ACCOUNT_NAME:您的 Azure 存储账号名称
    • STORAGE_ACCOUNT_KEY:您的 Azure 存储账号密钥
  2. 使用 kubectl 工具将文件应用到集群:

    kubectl apply -f azure-service-account-key.yaml
    

为预先存在的共享创建 PersistentVolume

您可以通过在集群中指定新 PV 来导入现有的 Azure 文件共享。如需创建 PV,请执行以下操作:

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

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: VOLUME_NAME
    spec:
      capacity:
        storage: VOLUME_CAPACITY
      storageClassName: standard-rwx
      accessModes:
        - ReadWriteMany
      persistentVolumeReclaimPolicy: Retain
      csi:
        driver: file.csi.azure.com
        readOnly: false
        volumeHandle: VOLUME_ID
    

    替换以下内容:

    • VOLUME_NAME:卷的名称
    • VOLUME_CAPACITY:卷的大小。例如 30Gi。 如需详细了解如何在 Kubernetes 中指定卷容量,请参阅内存含义
    • VOLUME_ID:卷的唯一 ID,格式为字符串 RESOURCE_GROUP_NAME#STORAGE_ACCOUNT_NAME#FILESHARE_NAME#,其中
    • FILE_SHARE_NAME:Azure 文件共享名称

    如果您的存储账号与集群位于不同的资源组中,则需要添加对包含存储账号密钥的 Secret 的引用。如需添加引用,请在 spec.csi 部分中插入以下内容:

    # Optional. Only required if your storageAccount is in a different resource group than the cluster.
        nodeStageSecretRef:
          name: NODE_STAGE_SECRET_NAME
          namespace: NODE_STAGE_SECRET_NAMESPACE
    

    请替换以下内容:

    • NODE_STAGE_SECRET_NAME:Secret 的名称
    • NODE_STAGE_SECRET_NAMESPACE 是包含 Secret 的 Namespace
  2. 将 YAML 应用到您的集群。

    kubectl apply -f existing-volume.yaml
    
  3. 通过 kubectl describe pv 确认已创建 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
    
  4. 如需删除 Pod,请使用 kubectl delete 命令。

    kubectl delete -f nginx.yaml
    

后续步骤