从 Google Kubernetes Engine 集群访问文件共享

本页面介绍如何通过创建永久性卷 (PV) 和永久性卷声明 (PVC) 从 GKE 集群访问 Filestore 文件共享。

该集群必须与 Filestore 实例位于同一 Google Cloud 项目和 VPC 网络中,除非 Filestore 实例位于共享 VPC 网络上。目前,您只能通过宿主项目在共享 VPC 网络上创建 Filestore 实例。如需了解详情,请参阅已知问题

创建永久性卷

  1. 安装 kubectl 命令行工具:

    gcloud components install kubectl &&
    gcloud container clusters get-credentials cluster-name
    

    其中,cluster-name 是集群的名称。

  2. 创建 Kubernetes 永久性卷规范。它是一个 .yaml 文件,提供有关如何访问 Filestore 文件共享的信息。该规范类似于以下示例:

    apiVersion: v1
    kind: PersistentVolume
    metadata:
     name: fileserver
    spec:
     capacity:
       storage: storage
     accessModes:
     - ReadWriteMany
     nfs:
       path: /file-share
       server: ip-address
    

    其中:

    • storage 是 Filestore 实例上的文件共享的大小。您必须在资源数量中所述的一个受支持的单位(例如 2T)指定 storage 值。
    • file-share 是 Filestore 实例上的文件共享的名称。您可以从以下任何来源获取实例的文件共享名称:

      • Cloud Console 中的 Filestore 实例页面。

      转到“Filestore 实例”页面

    • ip-address 是 Filestore 实例的 IP 地址。您可以从以下任意来源获取实例的 IP 地址:

    要详细了解其他设置,请参阅永久性卷

  3. 部署永久性卷规范:

    kubectl create -f /path/to/persistent-volume-file-name.yaml
    

    其中,persistent-volume-file-name 是您在上一步中创建的 Kubernetes 永久性卷规范文件的名称。

创建永久性卷声明

  1. 创建 Kubernetes 永久性卷声明规范。它是一个 .yaml 文件,让 Kubernetes pod 能够访问永久性卷的存储资源。该规范类似于以下示例:

    apiVersion: v1
    kind: PersistentVolumeClaim
    metadata:
     name: fileserver-claim
    spec:
     accessModes:
     - ReadWriteMany
     storageClassName: ""
     volumeName: fileserver
     resources:
       requests:
         storage: storage
    

    其中,storage 是您希望可用于 Kubernetes 对象的永久性卷声明的大小。

    您必须采用资源数量中介绍的一个受支持的单位来指定 storage 值。所指定的值必须等于或小于为永久性卷指定的存储。

    要详细了解其他设置,请参阅永久性卷声明

  2. 部署永久性卷声明规范:

    kubectl create -f /path/to/persistent-volume-claim-file-name.yaml
    

    其中,persistent-volume-file-name 是您在上一步中创建的 Kubernetes 永久性卷规范文件的名称。

使用永久性卷声明

  1. 为使用永久性卷声明的 Kubernetes 对象(例如 Kubernetes pod)创建规范。此规范是一个用于描述该对象的 .yaml 文件,包括有关任何适用于该对象的存储资源的信息。Pod 规范类似于以下示例:

    apiVersion: v1
    kind: Pod
    metadata:
     name: my-pod
    spec:
     containers:
     - name: container-name
       image: image-name
       volumeMounts:
       - mountPath: mount-path
         name: mypvc
     volumes:
     - name: mypvc
       persistentVolumeClaim:
         claimName: claim-name
         readOnly: false
    

    其中:

    • container-name 是 Pod 中容器的名称。
    • image-name 是容器运行的 Docker 映像的标记。
    • mount-path 是将持久性卷声明装载到的路径,例如 /mnt/fileserver
    • claim-name 是已部署的永久性值声明的名称。在此示例中,这是 fileserver-claim

    如需详细了解其他设置,请参阅 Pod

  2. 部署 pod 规范:

    kubectl create -f /path/to/pod-file-name.yaml
    

    其中,pod-file-name 是您在上一步中创建的 pod 规范的名称。

后续步骤

获取有关 Filestore 实例的信息