为 Filestore 代理卷设置 GKE 环境

Filestore 智能体存储卷与 Google Kubernetes Engine (GKE) 集成,可为有状态 AI 智能体沙盒、开发环境和 Agentic Workflows 提供高密度、低延迟的永久性文件存储。

本指南将引导您了解在 GKE 上使用 Filestore 代理卷所需的前提条件。

准备工作

  1. 完成设置 Filestore 代理卷中的初始设置。
  2. 启用 GKE API:

    gcloud services enable container.googleapis.com \
        --project=PROJECT_ID
    
  3. 安装 gcloud 所需的组件:

    gcloud components install kubectl gke-gcloud-auth-plugin
    

创建 GKE 集群

创建一个连接到 Private Service Connect 的 GKE 集群。

gcloud container clusters create CLUSTER_NAME \
    --region=REGION \
    --project=PROJECT_ID \
    --network=projects/PROJECT_ID/global/networks/VPC_NETWORK \
    --subnetwork=SUBNET_NAME \
    --num-nodes=3 \
    --workload-pool=PROJECT_ID.s3ns.svc.id.goog \
    --scopes=cloud-platform \
    --enable-agent-sandbox \
    --addons=GcpFilestoreCsiDriver=DISABLED \
    --cluster-version=1.36.0-gke.3302001

替换以下内容:

  • CLUSTER_NAME:新集群的名称。
  • REGION:卷池所在的区域,例如 us-central1。
  • PROJECT_ID:您的 Cloud de Confiance by S3NS 项目 ID。
  • VPC_NETWORK:已启用 PSC 的 VPC 网络的名称。
  • SUBNET_NAME:子网的名称。

设置 Workload Identity Federation for GKE 和 IAM

向 CSI 驱动程序使用的 Kubernetes ServiceAccount 和 Compute Engine 默认服务帐号授予预配 Filestore 卷的权限:

  1. 获取您的项目编号:

    gcloud projects describe PROJECT_ID \
        --format="value(projectNumber)"
    

    将 PROJECT_ID 替换为您的项目 ID。

  2. 向 gcp-filestore-csi-driver 命名空间中的 Kubernetes ServiceAccount (gcp-filestore-csi-controller-sa) 授予项目的 Cloud Filestore Editor 角色 (roles/file.editor):

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="principal://iam.googleapis.com/projects/PROJECT_NUMBER/locations/global/workloadIdentityPools/PROJECT_ID.s3ns.svc.id.goog/subject/ns/gcp-filestore-csi-driver/sa/gcp-filestore-csi-controller-sa" \
        --role="roles/file.editor" \
        --condition=None
    

    替换以下内容:

    • PROJECT_ID:您的 Cloud de Confiance by S3NS 项目 ID。
    • PROJECT_NUMBER:您的 Cloud de Confiance by S3NS 项目编号。
  3. 向 Compute Engine 默认服务帐号授予项目的 Cloud Filestore Editor 角色 (roles/file.editor):

    gcloud projects add-iam-policy-binding PROJECT_ID \
        --member="serviceAccount:PROJECT_NUMBER-compute@developer.s3ns-system.iam.gserviceaccount.com" \
        --role="roles/file.editor" \
        --condition=None
    

部署 Filestore CSI 驱动程序

  1. 获取集群凭据:

    gcloud container clusters get-credentials CLUSTER_NAME \
        --region=REGION \
        --project=PROJECT_ID
    
  2. 克隆驱动程序代码库并应用 volumepool 叠加层:

    git clone https://github.com/kubernetes-sigs/gcp-filestore-csi-driver.git
    cd gcp-filestore-csi-driver
    kubectl apply -k deploy/kubernetes/overlays/volumepool
    
  3. 验证 CSI 驱动程序 pod 是否正在运行:

    kubectl get pods -n gcp-filestore-csi-driver
    

    输出类似于以下内容:

    NAME                             READY   STATUS    RESTARTS   AGE
    gcp-filestore-csi-controller-0   5/5     Running   0          2m
    gcp-filestore-csi-node-abcde     3/3     Running   0          2m
    

为卷池应用 StorageClass

如需允许 GKE 工作负载从卷池动态预配卷,请向集群应用 Kubernetes StorageClass。

如果您已在 设置 Filestore 代理卷中创建 volume-pool-sc.yaml 清单, 请跳至第 2 步。

  1. 创建一个名为 volume-pool-sc.yaml 的文件,其中包含以下配置:

    apiVersion: storage.k8s.io/v1
    kind: StorageClass
    metadata:
      name: volume-pool-sc
    provisioner: filestore.csi.storage.gke.io
    parameters:
      volume-pool: "projects/<var>PROJECT_ID</var>/locations/<var>LOCATION</var>/volumePools/<var>VOLUME_POOL_ID</var>"
    mountOptions:
      - vers=3
      - proto=tcp
      - mountproto=tcp
      - port=2049
      - mountport=2050
    volumeBindingMode: Immediate
    reclaimPolicy: Delete
    

    替换以下内容:

    • PROJECT_ID:您的 Cloud de Confiance 项目的 ID。
    • LOCATION:卷池部署到的区域,例如 us-central1。
    • VOLUME_POOL_ID:卷池的标识符。
  2. 应用清单:

    kubectl apply -f volume-pool-sc.yaml
    
  3. 验证 StorageClass 是否可用:

    kubectl get storageclass volume-pool-sc
    

    输出类似于以下内容:

    NAME             PROVISIONER                    RECLAIMPOLICY   VOLUMEBINDINGMODE   ALLOWVOLUMEEXPANSION   AGE
    volume-pool-sc   filestore.csi.storage.gke.io   Delete          Immediate           true                   1m
    

完成本指南后,您的 GKE 环境即可支持 Filestore 代理卷。

后续步骤

配置 GKE 集群和存储类别后,您可以使用以下任何一种编排模式部署有状态 AI 智能体工作负载: