13

ローカル PVが有効なベアメタ kubernetes 1.7 で事前定義された PostgreSQL クラスターをセットアップしたいと考えています。3 つの作業ノードがあります。各ノードにローカル PV を作成し、ステートフル セットを正常にデプロイします (Postgres レプリケーションをセットアップするための複雑なスクリプトを使用)。

ただし、volumeClaimTemplates と PersistentVolumeClaim の間には一種の命名規則があることに気付きました。例えば

apiVersion: apps/v1beta1 
kind: StatefulSet
  metadata:   
     name: postgres
  volumeClaimTemplates:
  - metadata:
      name: pgvolume

作成された PVC はpgvolume-postgres-0pgvolume-postgres-1pgvolume-postgres-2です。

いくつかのトリッキーな方法で、手動で PVC を作成し、セレクターによってターゲット PV にバインドします。ステートフル セットを再度テストします。ステートフル セットは、これらの PVC を使用して非常に満足しているようです。

テストは無事に終了しましたが、まだこの質問があります。volumeClaimTemplates の命名規則に依存できますか? これは文書化されていない機能ですか?

4

1 に答える 1

10

ステートフルセットAPI リファレンスに基づく

volumeClaimTemplates は、ポッドが参照できるクレームのリストです。StatefulSet コントローラーは、ポッドの ID を維持する方法で、ネットワーク ID をクレームにマッピングする役割を果たします。このリスト内のすべてのクレームには、テンプレート内の 1 つのコンテナー内に (名前で) 一致する volumeMount が少なくとも 1 つ必要です。このリストの要求は、テンプレート内の同じ名前のボリュームよりも優先されます。

だから頼りになると思います。

さらに、永続ボリュームの動的プロビジョニングを利用するストレージ クラスを定義できるため、手動で作成する必要はありません。

  volumeClaimTemplates:
  - metadata:
      name: www
    spec:
      accessModes: [ "ReadWriteOnce" ]
      storageClassName: my-storage-class
      resources:
        requests:
          storage: 1Gi

詳細については、Kubernetes の動的プロビジョニングとストレージ クラスを参照してください。

于 2017-10-22T16:30:43.313 に答える