為 Filestore 代理程式磁碟區設定 GKE 環境

Filestore 代理磁碟區與 Google Kubernetes Engine (GKE) 整合,可為有狀態 AI 代理沙箱、開發人員環境和多代理工作流程,提供高密度、低延遲的永久檔案儲存空間。

本指南將逐步說明在 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 的虛擬私有雲網路名稱。
  • SUBNET_NAME:子網路名稱。

設定 Workload Identity Federation for GKE 和 IAM

將佈建 Filestore 磁碟區的權限,授予 CSI 驅動程式使用的 Kubernetes ServiceAccount 和 Compute Engine 預設服務帳戶:

  1. 取得專案編號:

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

    將 PROJECT_ID 替換為專案 ID。

  2. 將專案的 Cloud Filestore 編輯者角色 (roles/file.editor) 授予 gcp-filestore-csi-driver 命名空間中的 Kubernetes ServiceAccount (gcp-filestore-csi-controller-sa):

    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. 將專案的 Cloud Filestore 編輯者角色 (roles/file.editor) 授予 Compute Engine 預設服務帳戶:

    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:專案的 ID。 Cloud de Confiance
    • LOCATION:部署磁碟區集區的區域,例如 us-central1。
    • VOLUME_POOL_ID:磁碟區集區的 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 代理工作負載: