使用 Azure 文件共享
GKE on Azure 支持装载 Azure 文件共享。如果您已拥有用于 GKE on Azure 的 Azure 文件共享,则可以创建 PersistentVolume (PV) 对象并将其预留用于特定的 PersistentVolumeClaim (PVC)。
本页面介绍如何使用填充了数据的现有共享来创建 PV,以及如何在 pod 中使用 PV。
准备工作
- 连接到集群
- 有权访问或创建 Azure 文件共享。如需了解详情,请参阅创建 Azure 文件共享。
存储 Azure 存储账号信息
GKE on Azure 会在 Secret 中存储用于访问 Azure 存储账号的信息。如果您尚未在集群中创建 Secret,则必须添加一个。如果您的集群中有此 Secret,请跳到为现有共享创建 PersistentVolume。
要创建 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 存储账号密钥
使用
kubectl
工具将文件应用到集群:kubectl apply -f azure-service-account-key.yaml
为预先存在的共享创建 PersistentVolume
您可以通过在集群中指定新 PV 来导入现有的 Azure 文件共享。如需创建 PV,请执行以下操作:
将以下 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
将 YAML 应用到您的集群。
kubectl apply -f existing-volume.yaml
通过
kubectl describe pv
确认已创建 PV。kubectl describe pv VOLUME_NAME
此命令的输出内容中包含 PV 的状态。
将卷与 PersistentVolumeClaim 和 pod 一起使用
导入卷后,您可以创建一个 PVC 和一个装载该 PVC 的 pod。
以下 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
。
- STORAGE_CLASS:您之前创建的 PersistentVolume 中的 StorageClass 名称。例如
将 YAML 应用到您的集群。
kubectl apply -f nginx.yaml
使用
kubectl describe
检查 Nginx 实例的状态。输出的STATUS
应为Running
。kubectl describe pod web-server
如需删除 Pod,请使用
kubectl delete
命令。kubectl delete -f nginx.yaml
后续步骤
- 将其他存储驱动程序与 GKE on Azure 搭配使用。
- 阅读 Azure File CSI 驱动程序的文档。