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

本页面介绍如何通过创建永久性卷 (PV) 和永久性卷声明 (PVC) 从 GKE 集群访问 Filestore 文件共享。 集群必须与 Filestore 实例位于同一 VPC 网络中。

创建永久性卷

  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:
      # Specify "" as the storageClassName so it matches the PersistentVolume's StorageClass.
      # A nil storageClassName value uses the default StorageClass. For details, see
      # https://kubernetes.io/docs/concepts/storage/persistent-volumes/#class-1
      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 是已部署的永久性值声明的名称。在此示例中,claimNamefileserver-claim

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

  2. 部署 pod 规范:

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

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

后续步骤