#kubernetes #persistent-volumes #kubernetes-pvc
#kubernetes #постоянные тома #kubernetes-pvc
Вопрос:
Требуется ли создавать каталог вручную в nodes или он будет автоматически создан pv?
Вот мой файл pv amp; pvc, и я вижу эту ошибку
для этого утверждения не доступны постоянные тома, и класс хранилища не задан
как это решить?
kind: PersistentVolume
apiVersion: v1
metadata:
name: zk1-pv
labels:
type: local
spec:
storageClassName: manual
capacity:
storage: 10Mi
accessModes:
- ReadWriteOnce
hostPath:
path: "/mr/zk"
cat zk1-pvc.yaml
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zk1-pvc
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Mi
kubectl describe pvc zk1-pvc
Name: zk1-pvc
Namespace: instavote
StorageClass:
Status: Pending
Volume:
Labels: <none>
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"PersistentVolumeClaim","metadata":{"annotations":{},"name":"zk1-pvc","namespace":"instavote"},"spec":{"accessMo...
Finalizers: [kubernetes.io/pvc-protection]
Capacity:
Access Modes:
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Normal FailedBinding 12s (x14 over 3m7s) *persistentvolume-controller no persistent volumes available for this claim and no storage class is set*
Mounted By: zk1-745b7cbf46-lg7v9
Ответ №1:
Вернемся к вашему основному вопросу
Требуется ли создавать каталог вручную в nodes или он будет автоматически создан pv?
Прежде всего, ошибка в вашем выводе не связана с вашим вопросом. В качестве ответа на ваш вопрос — Да. Он автоматически создается PV.
Чтобы добиться этого, сначала вам нужно создать StorageClass
с no-provisioner
помощью приведенного ниже примера
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: manual
provisioner: kubernetes.io/no-provisioner
volumeBindingMode: WaitForFirstConsumer
Затем вам нужно создать PersistentVolume
, определив это storageClassName
и hostPath
параметр, как показано ниже:
apiVersion: v1
kind: PersistentVolume
metadata:
name: zk1-pv
spec:
storageClassName: manual
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
hostPath:
path: /mr/zk
Затем вам необходимо создать PVC и Pod / Deployment в качестве примера ниже:
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: myclaim
spec:
storageClassName: manual
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 1Gi
---
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: containerName
image: gcr.io/google-containers/nginx:1.7.9
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: myclaim
ПРИМЕЧАНИЕ:
Не забудьте указать storageClassName: manual
параметр как в манифестах PVC, так и в PV. В противном случае они не смогут быть связаны друг с другом.
Надеюсь, он очистится
Ответ №2:
Вы забыли указать storageClassName: manual
в PersistentVolumeClaim
.