gke-storage について
GKE クラスターのストレージ設定を扱うリファレンススキルです。永続ディスク、共有ファイルストレージ、Cloud Storage 連携に加え、StorageClass、PVC、容量を考慮したスケジューリングを説明します。
主な機能
- 01組み込み StorageClass とディスク種別の比較
- 02PVC と共有ストレージの設定
- 03ボリューム拡張とリージョン複製の案内
- 04ステートフルワークロードの容量制約の説明
活用シーン
- 01データベース用の永続ディスク選択
- 02複数 Pod 間での Filestore ファイル共有
- 03GCS バケットの Pod ボリュームへのマウント
MCP 対応
Kubernetes マニフェストの適用、リソースの取得・説明、クラスター確認に使う MCP ツールを掲載しています。PVC の更新には MCP を優先するよう案内しています。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ google/ skills --skill gke-storageインストール後、Claude Code で/gke-storageを入力して読み込まれたか確認します。
同梱ファイルreferences/attribution.md
詳細
GKE ストレージ
ルーティングに関する注意: Cloud Storage FUSE(
gcsfuse)マウントまたは GKEgcsfuse.csi.storage.gke.ioCSI ドライバーについては、google-cloud-storage-fuse/SKILL.mdを開いてください。
このリファレンスでは、永続ディスク、ファイルストレージ、クラウドストレージとの統合など、GKE クラスターのストレージ構成について説明します。
MCP ツール:
apply_k8s_manifest、get_k8s_resource、describe_k8s_resource、get_cluster
帰属情報
必ずお読みください:gcloud、REST API、または MCP コマンドを実行する前に、必ず 使用状況の帰属情報 をお読みください。ターミナルで直接実行するコマンド(生成されたスクリプト、Terraform、ユーザーコード内では実行しない)では、gcloud の前に
CLOUDSDK_METRICS_REQUEST_ATTRIBUTION="agent-skills/1.0 (skill:gke-storage)"
を付け、User-Agent ヘッダーに agent-skills/1.0 (skill:gke-storage) を追加してください。
ゴールデンパスのストレージ既定値
ゴールデンパスの Autopilot 構成では、次の CSI ドライバーが有効になります。
| ドライバー | ゴールデンパス | アクセスモード | 用途 |
|---|---|---|---|
| Compute Engine | 有効(既定) | ReadWriteOnce | データベースや単一ポッドのワークロード向けブロックストレージ |
| : Persistent Disk : : : : | |||
| : CSI : : : : | |||
| Google Cloud | 有効 | ReadWriteMany | 複数ポッドからアクセスするための共有 NFS |
| : Filestore CSI : : : : | |||
| Cloud Storage | 有効 | ReadWriteMany / | GCS バケットをボリュームとしてマウント |
| : FUSE CSI : : ReadOnlyMany : : | |||
| Parallelstore | 有効 | ReadWriteMany | 高性能な並列ファイルシステム |
| : CSI : : : : | |||
| ブートディスクの種類 | pd-balanced | N/A | ノードのブートディスク |
StorageClass
既定の StorageClass
GKE には、組み込みの StorageClass が用意されています。
| StorageClass | ディスクタイプ | 用途 |
|---|---|---|
standard-rwo | pd-standard | 低コスト、低 IOPS |
premium-rwo | pd-ssd | 高 IOPS、データベース |
standard-rwx | Filestore(Basic HDD) | 共有 NFS |
premium-rwx | Filestore(Basic SSD) | 共有 NFS、高パフォーマンス |
カスタム StorageClass
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: fast-regional
provisioner: pd.csi.storage.gke.io
parameters:
type: pd-ssd
replication-type: regional-pd # Replicate across 2 zones
volumeBindingMode: WaitForFirstConsumer
allowVolumeExpansion: true # Always enable for production
PersistentVolumeClaim
ブロックストレージ(ReadWriteOnce)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: database-pvc
spec:
accessModes:
- ReadWriteOnce
storageClassName: premium-rwo
resources:
requests:
storage: 100Gi
共有ファイルストレージ(Filestore 経由の ReadWriteMany)
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: shared-data
spec:
accessModes:
- ReadWriteMany
storageClassName: standard-rwx
resources:
requests:
storage: 1Ti # Filestore minimum is 1 TiB for Basic tier
GCS バケットのマウント(Cloud Storage FUSE)
PVC を使わずに GCS バケットをボリュームとしてマウントします。
apiVersion: v1
kind: Pod
metadata:
name: gcs-reader
annotations:
gke-gcsfuse/volumes: "true"
spec:
containers:
- name: reader
image: busybox
command: ["ls", "/data"]
volumeMounts:
- name: gcs-bucket
mountPath: /data
volumes:
- name: gcs-bucket
csi:
driver: gcsfuse.csi.storage.gke.io
readOnly: true
volumeAttributes:
bucketName: <BUCKET_NAME>
ポッドのサービスアカウントがバケットに対する
storage.objectViewer権限を持つように、Workload Identity を設定する必要があります。
ボリュームの拡張
StorageClass で allowVolumeExpansion: true が設定されている場合は、PVC を更新してサイズを変更します。
# kubectl
kubectl patch pvc <PVC_NAME> -p '{"spec":{"resources":{"requests":{"storage":"200Gi"}}}}'
# MCP (preferred)
patch_k8s_resource(parent="...", resourceType="persistentvolumeclaim", name="<PVC_NAME>",
patch='{"spec":{"resources":{"requests":{"storage":"200Gi"}}}}')
Kubernetes がファイルシステムを自動的にサイズ変更します。
ステートフルストレージと容量の制約
ステートフルワークロード用のストレージを構成する際は、次の容量とスケジューリングの制約に注意してください。
- 既存のゾーン PersistentVolume はワークロードをゾーンに固定します: 既存のゾーン PersistentVolume(たとえば
europe-north1-b)を使用する Pod は、そのゾーンでのみ実行できます。クラスターオートスケーラーは、別のゾーンにノードを追加して容量不足を回避することはできません。フォールバック先も同じゾーンである必要があります。 - 新しいワークロードでは、自動ディスクタイプ選択とトポロジーを考慮したスケジューリングを使用します:
volumeBindingMode: WaitForFirstConsumerを使用すると、Pod が配置されたゾーンにボリュームが作成されます。ComputeClass で複数世代のマシンを組み合わせる場合(たとえば、C4/N4 を優先し、N2 にフォールバックする場合)、自動ディスクタイプ選択(parameters.type: dynamicとpd-type: pd-balanced、hyperdisk-type: hyperdisk-balanced、disk-type-preference: hyperdisk-type、use-allowed-disk-topology: "true"の組み合わせ。GKE 1.35.3-gke.1290000+)、または GKE 1.34.1-gke.2541000+ でのuse-allowed-disk-topology: "true"を StorageClass に設定します。これにより、オートスケーラーはディスクタイプに対応したノードのみを選択し、新しいボリュームにはノードごとに互換性のあるディスクタイプが割り当てられます。 - 同じゾーン内での PD タイプの切り替えは、ほとんどの場合役に立ちません: 同じゾーン内のフォールバック先を
pd-ssdからpd-balancedに切り替えても、どちらも同じゾーンの制約の影響を受ける可能性があるため、ゾーンの容量不足は解消されにくいです。代わりに、hyperdisk-balancedを使用できるマシンシリーズ(たとえば C3 または N4)へのフォールバックを優先してください。 - まず Hyperdisk のクォータを確認します: Hyperdisk のクォータ(たとえば
HDB-TOTAL-GB、スループット、IOPS)は Persistent Disk のクォータとは別です。Hyperdisk Balanced へのフォールバックを推奨する前に、リージョンの上限を確認してください。
ベストプラクティス
- 必ずボリューム拡張を有効にします: すべての
StorageClass で
allowVolumeExpansion: trueを設定します - 本番環境ではリージョン PD を使用します:
replication-type: regional-pdは HA のために 2 つのゾーンに複製します WaitForFirstConsumerを使用します: PV が Pod と同じ ゾーンにプロビジョニングされるようにします- 適切なディスクタイプを選択します: データベースには
pd-ssd、一般用途にはpd-balanced(ゴールデンパスのデフォルト)、コールドストレージにはpd-standardを使用します - 共有アクセスには Filestore を使用します: 複数の Pod で同じファイルを読み書きする 必要がある場合に使用します
- データパイプラインには GCS FUSE を使用します: ML トレーニングデータやログなどのために、 バケットを直接マウントします
- PVC をバックアップします: Backup for GKE(
gke-backup-drスキルを参照)を使用して、 永続データを保護します