你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

为 Azure Kubernetes 服务预配 Azure NetApp 文件双重协议卷

为 Azure Kubernetes 服务配置 Azure NetApp 文件后,可为 Azure Kubernetes 服务预配 Azure NetApp 文件卷。

Azure NetApp 文件支持使用 NFS(NFSv3 或 NFSv4.1)、SMB 和双重协议(NFSv3 和 SMB,或 NFSv4.1 和 SMB)的卷。

本文介绍如何使用 NFS 或 SMB 为双协议访问静态预配卷。

开始之前

在 Azure Kubernetes 服务中预配双重协议卷

本部分介绍如何向 Kubernetes 静态公开 Azure NetApp 文件双重协议卷。 提供了有关 SMB 和 NFS 协议的说明。 你可通过 SMB 向 Windows 工作器节点公开同一卷,通过 NFS 向 Linux 工作器节点公开同一卷。

创建 NFS 永久性卷

  1. 定义变量供以后使用。 将 myresourcegroup、myaccountname、mypool1 和 myvolname 替换为双重协议卷中的相应值。

    RESOURCE_GROUP="myresourcegroup"
    ANF_ACCOUNT_NAME="myaccountname"
    POOL_NAME="mypool1"
    VOLUME_NAME="myvolname"
    
  2. 使用 az netappfiles volume show 命令列出卷的详细信息。

    az netappfiles volume show \
        --resource-group $RESOURCE_GROUP \
        --account-name $ANF_ACCOUNT_NAME \
        --pool-name $POOL_NAME \
        --volume-name $VOLUME_NAME -o JSON
    

    以下输出是以实际值执行上述命令的示例。

    {
      ...
      "creationToken": "myfilepath2",
      ...
      "mountTargets": [
        {
          ...
          "ipAddress": "10.0.0.4",
          ...
        }
      ],
      ...
    }
    
  3. 创建名为 pv-nfs.yaml 的文件,并将其复制到以下 YAML 中。 确保服务器与上一步的输出 IP 地址匹配,并且路径与上面 creationToken 的输出匹配。 容量还必须与步骤 2 中的卷大小匹配。

    apiVersion: v1
    kind: PersistentVolume
    metadata:
      name: pv-nfs
    spec:
      capacity:
        storage: 100Gi
      accessModes:
        - ReadWriteMany
      mountOptions:
        - vers=3
      nfs:
        server: 10.0.0.4
        path: /myfilepath2
    
  4. 使用 kubectl apply 命令创建永久性卷:

    kubectl apply -f pv-nfs.yaml
    
  5. 使用 kubectl describe 命令验证永久性卷的状态是否为“Available”:

    kubectl describe pv pv-nfs
    

创建 NFS 永久性卷声明

  1. 创建名为 pvc-nfs.yaml 的文件,并将其复制到以下 YAML 中。 此清单为 100Gi 存储和 ReadWriteMany 访问模式创建一个名为 pvc-nfs 的 PVC,与你创建的 PV 匹配。

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
      name: pvc-nfs
    spec:
      accessModes:
        - ReadWriteMany
      storageClassName: ""
      resources:
        requests:
          storage: 100Gi
    
  2. 使用 kubectl apply 命令创建永久性卷声明:

    kubectl apply -f pvc-nfs.yaml
    
  3. 使用 kubectl describe 命令验证永久性卷声明的状态是否为“Bound”:

    kubectl describe pvc pvc-nfs
    

使用 NFS 装载到 Pod

  1. 创建名为 nginx-nfs.yaml 的文件,并将其复制到以下 YAML 中。 这个清单定义了一个使用持久卷声明的 nginx pod。

    kind: Pod
    apiVersion: v1
    metadata:
      name: nginx-nfs
    spec:
      containers:
      - image: mcr.microsoft.com/oss/nginx/nginx:1.15.5-alpine
        name: nginx-nfs
        command:
        - "/bin/sh"
        - "-c"
        - while true; do echo $(date) >> /mnt/azure/outfile; sleep 1; done
        volumeMounts:
        - name: disk01
          mountPath: /mnt/azure
      volumes:
      - name: disk01
        persistentVolumeClaim:
          claimName: pvc-nfs
    
  2. 使用 kubectl applykubectl apply 命令创建 Pod:

    kubectl apply -f nginx-nfs.yaml
    
  3. 使用 kubectl apply 命令验证 Pod 是否正在运行:

    kubectl describe pod nginx-nfs
    
  4. 验证卷是否已装载到 Pod 上:使用 kubectl exec 连接到 Pod,然后使用 df -h 检查该卷是否已装载。

    kubectl exec -it nginx-nfs -- sh
    
    / # df -h
    Filesystem             Size  Used Avail Use% Mounted on
    ...
    10.0.0.4:/myfilepath2  100T  384K  100T   1% /mnt/azure
    ...
    

后续步骤

Astra Trident 支持 Azure NetApp 文件的许多功能。 有关详细信息,请参阅: