StatefulSet の永続ストレージ要件の確認

データ保持の要件を確認し、必要なボリュームの容量とライフサイクルを管理してください。

説明

StatefulSet の volumeClaimTemplates は、Pod ごとに PersistentVolumeClaim を作成します。永続データが必要なワークロードには適切な構成であり、storage の要求があるだけで削除すべきではありません。一時データだけを使う場合は、不要な永続ストレージによって費用や保持データの範囲が増えることがあります。

想定される影響

  • 不要なボリュームやデータが残り、費用や管理作業が増える場合があります。
  • 保持要件を確認せずにボリュームを削除すると、データ損失やサービス停止につながる場合があります。

対処方法

  • 永続ストレージが必要か確認してください。必要なら適切な容量、StorageClass、アクセス制御、バックアップを設定し、バインドと復旧を試してください。
  • 永続ストレージが不要なら、データ移行と StatefulSet の再作成が必要かを検討してから設定を変更してください。PVC の保持ポリシーと PV の回収ポリシーを確認し、不要になったデータだけを整理してください。

例

既存の nginx の例で永続ボリュームの使用を比較します。nginx Service とストレージのプロビジョニングは別途用意する必要があります。二つは代替構成であり、既存の StatefulSet から volumeClaimTemplates をそのまま削除するパッチではありません。

変更前

yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: nginx
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.25
          volumeMounts:
            - name: www
              mountPath: /usr/share/nginx/html
  volumeClaimTemplates:
    - metadata:
        name: www
      spec:
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 1Gi

各 Pod が 1Gi の PVC を要求し、ウェブコンテンツのパスにマウントします。永続データが必要なら適切な構成です。

変更後

yaml
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: web
spec:
  serviceName: nginx
  replicas: 2
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.25

永続ボリュームの要求とマウントを省略します。既存の PVC やデータが自動削除されるわけではなく、データ保持要件に合う場合にだけ選択してください。

参考資料