gpt4 book ai didi

kubernetes - 在 AWS EKS/kubernetes 上使用公共(public) EFS 存储运行多个 go-ethereum pod

转载 作者:行者123 更新时间:2023-12-05 05:52:36 25 4
gpt4 key购买 nike

我正在尝试在 AWS EKS 上运行一个 go-ethereum 节点,因为我使用了具有以下配置的状态集。 statefulset.yaml file

运行kubectl apply -f statefulset.yaml 创建 2 个 pod,其中 1 个正在运行,1 个处于 CrashLoopBackOff 状态。 Pods status检查第二个 pod 的日志后,我收到的错误是 Fatal: Failed to create the protocol stack: datadir already used by another processError logs i am getting

问题主要是由于 pod 使用相同的目录在持久卷上写入(geth 数据)(即 pod 正在写入“/data”)。如果我使用子路径表达式并将 pod 的目录挂载到具有 pod 名称的子目录(例如:'/data/geth-0'),它工作正常。 statefulset.yaml with volume mounting to a sub directory with podname但我的要求是所有三个 pod 的数据都写在 '/data' 目录中。下面是我的音量配置文件。 volume configuration

最佳答案

您需要为每个有状态 Pod 动态配置访问点。首先创建一个支持动态配置的 EFS 存储类:

kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
name: efs-dyn-sc
provisioner: efs.csi.aws.com
reclaimPolicy: Retain
parameters:
provisioningMode: efs-ap
directoryPerms: "700"
fileSystemId: <get the ID from the EFS console>

更新您的规范以支持声明模板:

apiVersion: apps/v1
kind: StatefulSet
metadata:
name: geth
...
spec:
...
template:
...
spec:
containers:
- name: geth
...
volumeMounts:
- name: geth
mountPath: /data
...
volumeClaimTemplates:
- metadata:
name: geth
spec:
accessModes:
- ReadWriteOnce
storageClassName: efs-dyn-sc
resources:
requests:
storage: 5Gi

所有 pod 现在都写入自己的/data。

关于kubernetes - 在 AWS EKS/kubernetes 上使用公共(public) EFS 存储运行多个 go-ethereum pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70091242/

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