Filestore 代理磁碟區與 Google Kubernetes Engine (GKE) 整合,可為有狀態 AI 代理沙箱、開發人員環境和多代理工作流程,提供高密度、低延遲的永久檔案儲存空間。
本指南將逐步說明在 GKE 使用 Filestore 代理磁碟區的必要條件。
事前準備
- 按照「設定 Filestore 代理磁碟區」一文的說明完成初始設定。
啟用 GKE API:
gcloud services enable container.googleapis.com \ --project=PROJECT_ID安裝
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 預設服務帳戶:
取得專案編號:
gcloud projects describe PROJECT_ID \ --format="value(projectNumber)"將
PROJECT_ID替換為專案 ID。將專案的 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 專案編號。
將專案的 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 驅動程式
取得叢集憑證:
gcloud container clusters get-credentials CLUSTER_NAME \ --region=REGION \ --project=PROJECT_ID複製驅動程式存放區並套用
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
確認 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。
建立名為
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 ConfianceLOCATION:部署磁碟區集區的區域,例如us-central1。VOLUME_POOL_ID:磁碟區集區的 ID。
套用資訊清單:
kubectl apply -f volume-pool-sc.yaml
確認
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 代理工作負載:
- 使用 GKE Agent Substrate 部署工作負載。
- 使用 GKE Agent Sandbox 部署工作負載。
- 設定動態儲存空間延遲繫結。
- 部署自行管理的 GKE 工作負載。