在AWS上手动创建持久卷

时间:2019-09-12 12:42:01

标签: amazon-web-services kubernetes aws-eks aws-ebs

创建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

2 个答案:

答案 0 :(得分:0)

您根据规范创建了一个主机路径卷:

  hostPath:
    path: "/etc/rabbitmq"

只需删除该路径,K8将在EBS后端创建一个新的PV。

答案 1 :(得分:0)

  

我正在尝试手动创建新的PersistentVolume并将其绑定到新   PersistentValumeClaim,但是一旦创建它,​​它就不会创建EBS   音量。

据我了解,您想手动配置存储,因此不能期望同时创建EBS卷(这是特定的AWS存储类型)。

看,您在yaml清单中定义的是使用节点本地存储进行手动配置,而与EBS无关。在我看来,您混淆了两个概念:手动和动态存储配置。让我们澄清一下。实际上,您可以选择两种不同的路径,然后决定使用手动配置还是动态配置,但不能同时使用它们。

  1. 就像@Anton Kostenko在他的回答中建议的那样,您可能会放弃使用本地节点存储,从清单中删除提到的片段,然后让 Kubernetes AWS 及其 EBS 动态为您完成。您只需要定义PersistentVolumeClaim,选择适当的storageClassNamePV即可自动进行设置。

  2. 您可能会遵循使用PersistentVolume 手动创建hostPath的原始想法。在这种情况下,您需要将storageClassName(在这种情况下由您手动定义,与第一种情况不同)中的manual设置为PersistentVolume,而在{ {3}}来自Kubernetes官方文档的示例。我刚刚检查了一下,效果很好。使用相同的存储类很重要,这样PersistentVolumeClaimPV都可以绑定在一起。

如果您决定选择第二条路径,则您的特定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