创建PersistentVolumeClaim时,它将在EKS上使用PersistentVolume动态创建EBS卷。
我试图手动创建新的PersistentVolume并将其绑定到新的PersistentValumeClaim,但是一旦创建它,它就不会创建EBS卷。
在哪里创建PersistentVolume?
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: gp2
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
labels:
type: storage1
app: rabbitmq1
name: pvc1
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 1Gi
答案 0 :(得分:0)
您根据规范创建了一个主机路径卷:
hostPath:
path: "/etc/rabbitmq"
只需删除该路径,K8将在EBS后端创建一个新的PV。
答案 1 :(得分:0)
我正在尝试手动创建新的PersistentVolume并将其绑定到新 PersistentValumeClaim,但是一旦创建它,它就不会创建EBS 音量。
据我了解,您想手动配置存储,因此不能期望同时创建EBS卷(这是特定的AWS存储类型)。
看,您在yaml清单中定义的是使用节点本地存储进行手动配置,而与EBS无关。在我看来,您混淆了两个概念:手动和动态存储配置。让我们澄清一下。实际上,您可以选择两种不同的路径,然后决定使用手动配置还是动态配置,但不能同时使用它们。
就像@Anton Kostenko在他的回答中建议的那样,您可能会放弃使用本地节点存储,从清单中删除提到的片段,然后让 Kubernetes 和 AWS 及其 EBS 来动态为您完成。您只需要定义PersistentVolumeClaim
,选择适当的storageClassName
和PV
即可自动进行设置。
您可能会遵循使用PersistentVolume
手动创建hostPath
的原始想法。在这种情况下,您需要将storageClassName
(在这种情况下由您手动定义,与第一种情况不同)中的manual
设置为PersistentVolume
,而在{ {3}}来自Kubernetes官方文档的示例。我刚刚检查了一下,效果很好。使用相同的存储类很重要,这样PersistentVolumeClaim
和PV
都可以绑定在一起。
如果您决定选择第二条路径,则您的特定Yaml清单将如下所示:
PVC
将其放入文件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