2016-11-11 4 views
0

私はそれがランダムアベイラビリティゾーンやペットのボリューム主張とボリュームを作成するプロビジョニングダイナミックボリュームとそれに注釈を付ける場合PVCテンプレートとfailure-domain.beta.kubernetes.io/zone

volumeClaimTemplates: 
    - metadata: 
     name: content 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
     requests: 
      storage: 2Gi 
    - metadata: 
     name: database 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
     requests: 
      storage: 2Gi 
    - metadata: 
     name: file 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
     requests: 
      storage: 2Gi 
    - metadata: 
     name: repository 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
     requests: 
      storage: 2Gi 

でPetSetを持っていますこの例では、各ペットが実際にスケジュールされる大きさに正確に4つのボリューム2Giを必要とするので、起動することはできません。 私は手動でボリュームを作成した場合、私は彼らがfailure-domain.beta.kubernetes.io/zoneで標識することができます。たとえば、私たち-東-1Dと私は、障害ドメインでmatchLabelsセレクタでPVCを作成することができますこの方法。しかし、私はどのようにvolumeClaimTemplatesと同様のことをするのですか?私は1つの失敗ドメインにそれらすべてを固執したくないということを意味します。しかし何らかの理由で、ボリュームクレームテンプレートは、同じ故障ドメイン内の1匹のペットのためにすべてのボリュームを作成することはありません。

アイデア?

答えて

0

あなたは、ストレージ・クラスを作成し、そこに破損ゾーンを追加することができます。例えば、このようなストレージ・クラスを作成します。

kind: StorageClass 
apiVersion: storage.k8s.io/v1beta1 
metadata: 
    name: gp2storage 
provisioner: kubernetes.io/aws-ebs 
parameters: 
    type: gp2 
    zone: us-east-1b 
    encrypted: "true" 

上記の例では、PVのAWS上のゾーンus-east-1b内を作成しています。そして、ストレージクラスというテンプレート資料:

volumeClaimTemplates: 
    - metadata: 
     name: data 
     annotations: 
     volume.beta.kubernetes.io/storage-class: default 
+0

StatefulSet/PetSetは利用可能なすべてのゾーンでコンテナをプロビジョニングしようとしますが、特定のAZでしか利用できないクラスを指定しました。それは動作しません:) –

0

PVの作成がStatefulSetコードの一部ではないので、それは彼らのすべてが与えられたため、同じ障害ドメインにする必要があること、「知りません」ポッド。ベース名をハッシュrecognises PetSet-style namesとボリュームプロビジョニングのコードの部分があります

は、その後、オフセットなどの数値を適用します。

このように、同じベース名を持つボリュームがゾーンにまたがってます - しかし、ここでは、複数のボリューム名を持っているので、彼らは違ったハッシュ化されますと、これは必要条件である場合-0 1を上げ、複数のゾーンに

を終わりますこれについてトラッカーで問題は、次の操作を行うと考えられてきた、しかしそう前方にあなたの最良の方法

のですか?

apiVersion: apps/v1alpha1 
kind: PetSet 
spec: 
    template: 
    spec: 
     containers: 
     - 
     volumeMounts: 
     - name: contentdatabasefilerepository 
      mountPath: /var/www/content 
      subPath: content 
     - name: contentdatabasefilerepository 
      mountPath: /var/database 
      subPath: database 
    volumeClaimTemplates: 
    - metadata: 
     name: contentdatabasefilerepository 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
     requests: 
      storage: 8Gi 

ペット1匹につき1つのボリュームしかありませんが、複数の場所にサブパスをマウントできます。 これは各ディレクトリを2Giに制限するものではないため、使用例には適していない可能性があります

+0

こんにちは、残念ながら私は(パフォーマンスを含む)様々な理由のために同じボリューム上のデータを配置することはできません。アドバイスをいただきありがとうございます。私はGithubで問題を起こそうとします –

関連する問題