我正在尝试手动创建新的 PersistentVolume 并将其绑定到新的 PersistentValumeClaim,但是一旦创建它,它就不会创建 EBS 卷。
据我了解,您希望手动配置存储,因此您不能期望同时创建特定 AWS 存储类型的 EBS 卷。
看,您在 yaml 清单中定义的是使用节点本地存储手动配置,与 EBS 无关。在我看来,您混淆了两个概念:手动和动态存储配置。让我们澄清一下。您实际上可以选择两种不同的路径,并决定使用手动配置或动态配置,但不能同时使用这两种方式。
正如@Anton Kostenko 在他的回答中所建议的那样,您可能会放弃使用本地节点存储,从清单中删除提到的片段,并让Kubernetes和AWS及其EBS动态地为您完成。您只需要定义PersistentVolumeClaim
、选择合适的storageClassName
并且PV
会自动配置。
您可以按照您最初PersistentVolume
使用. hostPath
在这种情况下,您需要在这两种情况下都设置storageClassName
为(在这种情况下,与第一种情况不同,它是由您手动定义的)以及在官方 Kubernetes 文档中的这个示例中。我刚刚检查过它,它工作得很好。使用相同的存储类很重要,因此两者可以绑定在一起。manual
PersistentVolume
PersistentVolumeClaim
PV
PVC
如果您决定选择第二条路径,您的特定 yaml 清单将如下所示:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv1
labels:
type: storage1
app: rabbitmq1
spec:
claimRef:
namespace: default
name: pvc1
accessModes:
- ReadWriteMany
capacity:
storage: 1Gi
hostPath:
path: "/etc/rabbitmq"
storageClassName: manual
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
type: storage1
app: rabbitmq1
name: pvc1
spec:
storageClassName: manual
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
一旦你把它放在一个文件中,storage.yaml
只需发出以下命令:
kubectl apply -f storage.yaml
一段时间后,您的pv
和pvc
将被创建,您应该看到它们的状态为Bound
:
$ kubectl get pv
NAME CAPACITY ACCESS MODES RECLAIM POLICY STATUS CLAIM STORAGECLASS REASON AGE
pv1 1Gi RWX Retain Bound default/pvc1 manual 33s
$ kubectl get pvc
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
pvc1 Bound pv1 1Gi RWX manual 38s