2016-10-28 9 views
2

PetSet定義の一部として、volumeClainTemplatesは、Kubernetesが永続ボリュームクレームを動的に生成するために定義されています。たとえば:Kubernetes PetSetに既存の永続ボリュームを使用させるにはどうすればいいですか?

#kubectl get pv  
NAME  CAPACITY ACCESSMODES RECLAIMPOLICY STATUS CLAIM     REASON AGE 
pv-1-rw 24Gi  RWO   Retain   Bound  rnd/pvc-1-rw    1h 
pv-2-rw 24Gi  RWO   Retain   Bound  rnd/pvc-2-rw    6d 
pv-3-rw 24Gi  RWO   Retain   Bound  rnd/pvc-3-rw    6d 
... 

私は既存のものから永続的なボリュームを選択するのではなく、動的に新しいものを作成するためにKubernetesをしたいと思います。しかし

volumeClaimTemplates: 
    - metadata: 
     name: datadir 
     annotations: 
     volume.alpha.kubernetes.io/storage-class: anything 
    spec: 
     accessModes: [ "ReadWriteOnce" ] 
     resources: 
     requests: 
      storage: 24Gi 

、私はすでに永続ボリュームの数が定義されています。

私はKubernetes 1.4.3を使用しています。誰もそれを行う方法を知っていますか?

答えて

3

volumeClaimTemplatesは、PersistentVolumeClaimの配列です。あなたはすなわち、何とかselectorとラベル既存のボリュームを使用してそれらを定義しようとすることができます。:

kind: PersistentVolume 
apiVersion: v1 
metadata: 
    name: pv0001 
    labels: 
    foo: foo 
    bar: bar 
spec: 
    accessModes: 
    - ReadWriteOnce 
    capacity: 
    storage: 5Gi 
    hostPath: 
    path: /data/pv0001/ 
--- 
kind: PersistentVolume 
apiVersion: v1 
metadata: 
    name: pv0002 
    labels: 
    foo: foo 
    bar: bar 
spec: 
    accessModes: 
    - ReadWriteOnce 
    capacity: 
    storage: 5Gi 
    hostPath: 
    path: /data/pv0002/ 
--- 
kind: Service 
apiVersion: v1 
metadata: 
    name: nginx 
    labels: 
    app: nginx 
spec: 
    ports: 
    - port: 80 
    selector: 
    app: nginx 
--- 
kind: PetSet 
apiVersion: apps/v1alpha1 
metadata: 
    name: nginx 
spec: 
    serviceName: nginx 
    template: 
    metadata: 
     labels: 
     app: nginx 
    spec: 
     containers: 
     - name: nginx 
      image: gcr.io/google_containers/nginx-slim:0.8 
      ports: 
      - containerPort: 80 
      volumeMounts: 
      - name: html 
       mountPath: /usr/share/nginx/html 
    volumeClaimTemplates: 
    - metadata: 
     name: html 
     spec: 
     accessModes: 
      - ReadWriteOnce 
     resources: 
      requests: 
      storage: 5Gi 
     selector: 
      matchLabels: 
      foo: foo 
      bar: bar 

もちろん、ボリュームが境界のために利用可能でなければなりません。

$ kubectl get pvc html-nginx-0 
NAME   STATUS VOLUME CAPACITY ACCESSMODES AGE 
html-nginx-0 Bound  pv0002 5Gi  RWO   1m 
$ kubectl get pv 
NAME  CAPACITY ACCESSMODES RECLAIMPOLICY STATUS  CLAIM     REASON AGE 
pv0001 5Gi  RWO   Retain   Available         2m 
pv0002 5Gi  RWO   Retain   Bound  default/html-nginx-0    2m 
+0

これを試してみましたが、それはk8s v1.4.4のために私のために働いていました。私は後でpetsetのセレクタに使用するラベル付きのPVを作成する必要がありました。 PVCはpetsetによって自動的に作成されました。 –

関連する問題