0

当我创建 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
4

2 回答 2

0

您创建了一个主机路径卷,它来自您的规范:

  hostPath:
    path: "/etc/rabbitmq"

只需删除该路径,K8s 就会创建一个带有 EBS 后端的新 PV。

于 2019-09-12T12:57:03.590 回答
0

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

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

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

  1. 正如@Anton Kostenko 在他的回答中所建议的那样,您可能会放弃使用本地节点存储,从清单中删除提到的片段,并让KubernetesAWS及其EBS动态地为您完成。您只需要定义PersistentVolumeClaim、选择合适的storageClassName并且PV会自动配置。

  2. 您可以按照您最初PersistentVolume 使用. hostPath在这种情况下,您需要在这两种情况下都设置storageClassName为(在这种情况下,与第一种情况不同,它是由您手动定义的)以及在官方 Kubernetes 文档中的这个示例中。我刚刚检查过它,它工作得很好。使用相同的存储类很重要,因此两者可以绑定在一起。manualPersistentVolumePersistentVolumeClaimPVPVC

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

一段时间后,您的pvpvc将被创建,您应该看到它们的状态为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
于 2019-09-19T17:55:53.177 回答