我创建了一个简单的本地存储卷。像这样:
apiVersion: v1
kind: PersistentVolume
metadata:
name: vol1
spec:
capacity:
storage: 1Gi
accessModes:
- ReadWriteOnce
persistentVolumeReclaimPolicy: Retain
storageClassName: local-storage
local:
path: /srv/volumes/vol1
nodeAffinity:
required:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
operator: In
values:
- my-node
我创建了一个声明:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim
spec:
accessModes:
- ReadWriteOnce
volumeMode: Filesystem
resources:
requests:
storage:1Gi
由于未知原因,他们没有比赛。我在做什么错了?
答案 0 :(得分:1)
您应该在PVC中指定volumeName
,以将其专门绑定到刚刚创建的PV:
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: myclaim
spec:
accessModes:
- ReadWriteOnce
volumeName: "vol1"
resources:
requests:
storage:1Gi
此外,如果您在PVC中指定storageClassName
,则PVC也将绑定到与该规范匹配的PV(尽管如果存在以下情况,它不保证将其绑定到“ vol1” PV)该存储类别的PV大于1。
希望这会有所帮助!
答案 1 :(得分:1)
关于本地存储,值得注意的是:
使用本地存储将您的应用程序绑定到该特定节点, 使您的应用程序难以安排。如果该节点或本地 卷遇到故障并变得无法访问,则该吊舱 也变得无法访问。此外,许多云提供商没有 为本地存储提供广泛的数据持久性保证,因此您 在某些情况下可能会丢失所有数据。
这是针对Kubernetes 1.10的。在Kubernetes 1.14中,本地持久卷成为GA。
您发布了一个要求该用户的答案。只是为了澄清您的用户意思是诸如吊舱,部署,statefullset等的使用者。 因此,仅使用一个简单的pod定义即可使您的PV绑定:
kind: Pod
apiVersion: v1
metadata:
name: mypod
spec:
containers:
- name: myfrontend
image: nginx
volumeMounts:
- mountPath: "/var/www/html"
name: mypd
volumes:
- name: mypd
persistentVolumeClaim:
claimName: myclaim
现在,当您删除Pod并尝试运行另一个Pod时,就会出现问题。在这种情况下,如果您或其他人正在寻找解决方案,则此GitHub issue中对此进行了描述。
希望这可以清除一切。
答案 2 :(得分:0)
我知道了。我只需要一个用户。只要有用户,一切都可以正常运行。