1

私は、永続的ボリュームがなぜ主張されていないのかわかりません、またはこれをさらに診断するために私が取るべきステップはありますか?PersistentVolumeClaimが原因で失敗した永続的なボリュームを要求していないKubernetes: "task-pv-claim"が予期しないものです。

クレームサイズがボリュームサイズと一致する必要がありますか?ボリュームのサイズはGCPのボリュームサイズと一致する必要がありますか?ここ

これはテストし、把握するのは困難である...

私の目標は、ちょうど限りそれはローリング展開をサポートするようにも単一レプリカでWordpressのインスタンスを作成できるようにすることです.... kubectl get pods

出力:kubectl describe pods

NAME       READY  STATUS RESTARTS AGE 
wordpress-1546832918-mz4rt 0/3  Pending 0   47m 
wordpress-1546832918-p0s1s 0/3  Pending 0   47m 

出力:

...truncated... 
Events: 
    FirstSeen LastSeen Count From   SubObjectPath Type  Reason   Message 
    --------- -------- ----- ----   ------------- -------- ------   ------- 
    47m  3s  168 default-scheduler  Warning  FailedScheduling [SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "task-pv-claim", which is unexpected., SchedulerPredicates failed due to PersistentVolumeClaim is not bound: "task-pv-claim", which is unexpected.] 
の0

出力:kubectl get pv

NAME   STATUS VOLUME CAPACITY ACCESSMODES STORAGECLASS AGE 
task-pv-claim Pending          manual   4h 

出力:

NAME  CAPACITY ACCESSMODES RECLAIMPOLICY STATUS  CLAIM  STORAGECLASS REASON AGE 
pv0001 10Gi  RWX   Retain   Available    manual     4h 

production.yaml

apiVersion: extensions/v1beta1 
kind: Deployment 
metadata: 
    name: wordpress 
    labels: 
    app: wordpress 
spec: 
    replicas: 2 
    selector: 
    matchLabels: 
     app: wordpress 
    template: 
    metadata: 
     labels: 
     app: wordpress 
    spec: 
     terminationGracePeriodSeconds: 30 
     containers: 
     - image: eu.gcr.io/abcxyz/wordpress:deploy-1502807720 
      name: wordpress 
      imagePullPolicy: "Always" 
      env: 
      - name: WORDPRESS_HOST 
       value: localhost 
      - name: WORDPRESS_DB_USERNAME 
       valueFrom: 
       secretKeyRef: 
        name: cloudsql-db-credentials 
        key: username 
      volumeMounts: 
      - name: wordpress-persistent-storage 
       mountPath: /var/www/html 
     - image: eu.gcr.io/abcxyz/nginx:deploy-1502807720 
      name: nginx 
      imagePullPolicy: "Always" 
      ports: 
      - containerPort: 80 
       name: nginx 
      volumeMounts: 
      - name: wordpress-persistent-storage 
       mountPath: /var/www/html 
       readOnly: true 
     - image: gcr.io/cloudsql-docker/gce-proxy:1.09 
      name: cloudsql-proxy 
      command: ["/cloud_sql_proxy", "--dir=/cloudsql", 
        "-instances=abcxyz:europe-west1:wordpressdb2=tcp:3306", 
        "-credential_file=/secrets/cloudsql/credentials.json"] 
      volumeMounts: 
      - name: cloudsql-instance-credentials 
       mountPath: /secrets/cloudsql 
       readOnly: true 
      - name: ssl-certs 
       mountPath: /etc/ssl/certs 
      - name: cloudsql 
       mountPath: /cloudsql 
     volumes: 
     - name: wordpress-persistent-storage 
      persistentVolumeClaim: 
      claimName: "task-pv-claim" 
     - name: cloudsql-instance-credentials 
      secret: 
      secretName: cloudsql-instance-credentials 
     - name: ssl-certs 
      hostPath: 
      path: /etc/ssl/certs 
     - name: cloudsql 
      emptyDir: 

pVolume.yaml

apiVersion: "v1" 
kind: "PersistentVolume" 
metadata: 
    name: "pv0001" 
spec: 
    storageClassName: manual 
    capacity: 
    storage: "10Gi" 
    accessModes: 
    - "ReadWriteMany" 
    gcePersistentDisk: 
    fsType: "ext4" 
    pdName: "wordpress-disk" 

pVolumeClaim.yaml

kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
    name: task-pv-claim 
spec: 
    storageClassName: manual 
    accessModes: 
    - ReadWriteOnce 
    resources: 
    requests: 
     storage: 3Gi 

答えて

1

あなたの永続的なボリューム請求のspec.accessModesは永続的なボリュームでそれと一致する必要があります。両方を同じ値に変更してみてください。それがうまくいかなかった場合は

は、あなたはこのようなあなたの永続的なボリュームmetadata.labelsに一致するように、それを更新することで、あなたの永続的なボリューム請求定義にspec.selector定義を追加することができます。spec.selectorがするフィルタとして機能

apiVersion: "v1" 
kind: "PersistentVolume" 
metadata: 
    name: "pv0001" 
    labels: 
    name: "pv0001" # can be anything as long as it matches the selector in the pvc 
spec: 
    ... 

---- 
kind: PersistentVolumeClaim 
apiVersion: v1 
metadata: 
    name: task-pv-claim 
spec: 
    storageClassName: manual 
    accessModes: 
    - ReadWriteOnce 
    resources: 
    requests: 
     storage: 3Gi 
    selector: 
    matchLabels: 
     name: "pv0001" 

指定したラベルのPVのみが一致するようにしてください。