2017-07-03 15 views
1

2つのアプリケーション(それぞれポッドを使用)間で単一の永続ボリュームクレーム(PVC)を共有できますか?Apps間のEBSボリュームに対する永続ボリュームクレームを共有できません

私は:Share persistent volume claims amongst containers in Kubernetes/OpenShiftを読みましたが、答えが得られませんでした。

同じプロジェクト内にPHPアプリケーションとMySQLアプリケーション(永続ストレージあり)を追加しようとしました。元の永続ボリューム(PV)を削除し、読み取り、書き込み、多数のモードで新しいボリュームを作成しました。私はMySQLデータベースのrootパスワードを設定し、データベースは動作します。

次に、別のサブパスを持つ同じ永続ボリュームクレームを使用して、PHPアプリケーションにストレージを追加します。私は両方のアプリをオンにすることができないことがわかった。私が1つをオンにした後、次のものをオンにしようとすると、コンテナを作成することに固執します。

openshiftでの展開ステップのMySQLの.yaml:

... 
    template: 
    metadata: 
     creationTimestamp: null 
     labels: 
     name: mysql 
    spec: 
     volumes: 
     - name: mysql-data 
      persistentVolumeClaim: 
      claimName: mysql 
     containers: 
     - name: mysql 
     ... 
      volumeMounts: 
      - name: mysql-data 
       mountPath: /var/lib/mysql/data 
       subPath: mysql/data 
      ... 
      terminationMessagePath: /dev/termination-log 
      imagePullPolicy: IfNotPresent 
     restartPolicy: Always 
     terminationGracePeriodSeconds: 30 
     dnsPolicy: ClusterFirst 

展開段階からPHPの.yaml:

template: 
    metadata: 
     creationTimestamp: null 
     labels: 
     app: wiki2 
     deploymentconfig: wiki2 
    spec: 
     volumes: 
     - name: volume-959bo <<---- 
      persistentVolumeClaim: 
      claimName: mysql 
     containers: 
     - name: wiki2 
      ... 
      volumeMounts: 
      - name: volume-959bo 
       mountPath: /opt/app-root/src/w/images 
       subPath: wiki/images 
      terminationMessagePath: /dev/termination-log 
      imagePullPolicy: Always 
     restartPolicy: Always 
     terminationGracePeriodSeconds: 30 
     dnsPolicy: ClusterFirst 
     securityContext: {} 

ボリュームが名前をマウントが異なっています。しかし、それは2つのポッドがPVCを共有することはできません。または、同時に両方のボリュームを同時にマウントできないという問題がありますか?ボリュームをマウントできない場合、ポッドが起動せず、ログを取得できないため、/ devに終了ログを取得できません。

PVCの.yaml(oc get pvc -o yamloc get events

Warning FailedMount {controller-manager } 
    Failed to attach volume "pvc-________-____-____-____-____________" 
    on node "ip-172-__-__-___.xx-xxxx-x.compute.internal" 
with: 
    Error attaching EBS volume "vol-000a00a00000000a0" to instance 
    "i-1111b1b11b1111111": VolumeInUse: vol-000a00a00000000a0 is 
    already attached to an instance 

Warning FailedMount {kubelet ip-172-__-__-___.xx-xxxx-x.compute.internal} 
    Unable to mount volumes for pod "the pod for php app": 
    timeout expired waiting for volumes to attach/mount for pod "the pod". 
    list of unattached/unmounted volumes= 
     [volume-959bo default-token-xxxxx] 

から

apiVersion: v1 
items: 
- apiVersion: v1 
    kind: PersistentVolumeClaim 
    metadata: 
    annotations: 
     pv.kubernetes.io/bind-completed: "yes" 
     pv.kubernetes.io/bound-by-controller: "yes" 
     volume.beta.kubernetes.io/storage-class: ebs 
     volume.beta.kubernetes.io/storage-provisioner: kubernetes.io/aws-ebs 
    creationTimestamp: YYYY-MM-DDTHH:MM:SSZ 
    name: mysql 
    namespace: abcdefghi 
    resourceVersion: "123456789" 
    selfLink: /api/v1/namespaces/abcdefghi/persistentvolumeclaims/mysql 
    uid: ________-____-____-____-____________ 

    spec: 
    accessModes: 
    - ReadWriteMany 
    resources: 
     requests: 
     storage: 1Gi 
    volumeName: pvc-________-____-____-____-____________ 
    status: 
    accessModes: 
    - ReadWriteMany 
    capacity: 
     storage: 1Gi 
    phase: Bound 
kind: List 
metadata: {} 
resourceVersion: "" 
selfLink: "" 

不審なエントリ私がしようとした:最初のMySQLアプリの

  1. ターンをした後にしてみてくださいPHPアプリケーションを有効にする
  2. PHPアプリケーションが起動できませんでした。
  3. 両方のアプリケーションをオフにします。
  4. MySQLアプリケーションをオンにしようとします。
  5. たMySQLのアプリが

を開始することはできません奇妙なことは、イベントログが、それはMySQLのアプリのためにボリュームをマウントすることができないと言うことはありませんということです。

残りのボリュームは、default-token-xxxxxまたはvolume-959bo(PHPアプリケーションのボリューム名)ですが、mysql-data(MySQLアプリケーションのボリューム名)ではありません。

+0

をサポートしていないが、彼らは同じ名前空間にありますか?あなたはこれを行うことができるはずです。イベントログには何もありませんか? – user2983542

+0

彼らは確かに同じ名前空間にあります。 –

+0

'' oc get events'からの何か、そして基礎となるストレージタイプは何ですか? – user2983542

答えて

2

エラーは使用している基本ストレージ(この場合はEBS)によって発生しているようです。 OpenShiftのドキュメントでは、実際にはこれがブロックストレージのケースであると具体的に述べています。hereを参照してください。

私は、これはNFSとGlusterfs両方のストレージのために働くことを知っている、これらのストレージタイプを使用して多くのプロジェクトでこれを行っているが、残念ながら、あなたのケースでは、それが

+0

ありがとうございます。私は自分でこれを決して解明したことはないだろう。 –

+0

クール、問題ありません。受け入れられた答えとしてマインドマーキング?ありがとう – user2983542

関連する問題