gpt4 book ai didi

AWS 中的 Kubernetes PersistentVolumeClaim 问题

转载 作者:行者123 更新时间:2023-12-02 12:21:40 24 4
gpt4 key购买 nike

我们已经根据我们的项目要求成功地创建了 Pod、服务和复制 Controller 。现在我们计划使用 Kubernetes 在 AWS 中设置持久性存储。我已经创建了 YAML 文件以在 AWS 中创建 EBS 卷,它按预期工作正常。我能够声明卷并成功安装到我的 pod(这仅适用于单个副本)。

但是当我尝试创建更多的一个副本时,我的 pod 没有成功创建。当我尝试创建卷时,它只在一个可用区中创建。如果我的 pod 是在不同的区域节点中创建的,由于我的卷已经在不同的区域中创建,因此我的 pod 没有成功创建。如何为同一应用程序在不同区域创建卷?如何使它成功,连同副本?如何创建我的持久卷声明?

---
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
name: mongo-pvc
labels:
type: amazonEBS
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10Gi
---
apiVersion: v1
kind: ReplicationController
metadata:
labels:
name: mongo-pp
name: mongo-controller-pp
spec:
replicas: 2
template:
metadata:
labels:
name: mongo-pp
spec:
containers:
- image: mongo
name: mongo-pp
ports:
- name: mongo-pp
containerPort: 27017
hostPort: 27017
volumeMounts:
- mountPath: "/opt/couchbase/var"
name: mypd1
volumes:
- name: mypd1
persistentVolumeClaim:
claimName: mongo-pvc

最佳答案

当您使用 ReadWriteOnce 卷时(不能同时挂载到多个 Pod 的卷),简单的 PV/PVC 创建不会削减它。

PV 和 PVC 都非常“单一”,如果您在 Deployment 中引用特定的声明名称,您的 pod 都将尝试获取同一个声明,并且同一个 pv 绑定(bind)到该声明,从而导致竞争条件其中只有一个 pod 将是第一个并且只允许安装该 RWO 存储。

为了缓解这种情况,您不应该直接使用 PVC,而是通过 volumeClaimTemplates 为每个缩放的新 pod 动态创建 PVC,如下所示:

 volumeClaimTemplates:
- metadata:
name: claimname
spec:
accessModes: [ "ReadWriteOnce" ]
resources:
requests:
storage: 1Gi

关于AWS 中的 Kubernetes PersistentVolumeClaim 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48456540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com