Kubernetes не претендует на постоянный том - "сбой из-за PersistentVolumeClaim не связан: "task-pv-претензия ", что является неожиданным".

Я не уверен, почему постоянный том не заявлен, или какие шаги я мог бы предпринять для дальнейшей диагностики этого?

Должен ли размер претензии соответствовать размеру тома? Должен ли размер тома соответствовать размеру тома GCP?

Это так сложно проверить и выяснить...

Моя цель здесь состоит в том, чтобы просто иметь возможность создавать экземпляр Wordpress даже с единственной репликой, при условии, что он будет поддерживать непрерывное развертывание....

Выход из kubectl get pods:

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

Выход из kubectl describe pods:

...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.]

Выход из kubectl get pvc:

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

Выход из kubectl get pv:

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 вашего постоянного требования тома должно совпадать с этим в постоянном объеме. Попробуйте изменить оба значения на одно и то же.

Если это не сработало, вы можете добавить spec.selector определение для определения вашей заявки на постоянный том, обновив его в соответствии с вашим постоянным томом metadata.labels как это:

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" 

spec.selector служит фильтром для обеспечения соответствия только PV с указанными метками.

Другие вопросы по тегам