Запуск нескольких модулей go-ethereum с общим хранилищем EFS на AWS EKS/kubernetes

0

Вопрос

Я пытаюсь запустить узел go-ethereum на AWS EKS, для этого я использовал наборы состояний с приведенной ниже конфигурацией. набор состояний.файл yaml

Выполняетсяkubectl apply -f statefulset.yaml создает 2 модуля, из которых 1 запущен, а 1 находится в состоянии CrashLoopBackOff. Состояние стручков После проверки журналов на наличие второго модуля я получаю ошибку Fatal: Failed to create the protocol stack: datadir already used by another process. Журналы ошибок, которые я получаю

Проблема в основном связана с тем, что модули используют один и тот же каталог для записи(данные get) на постоянном томе(т. е. модули записывают в "/данные"). Если я использую выражение вложенного пути и смонтирую каталог модуля в подкаталог с именем модуля(например: '/data/geth-0'), это работает нормально. набор состояний.yaml с подключением тома к подкаталогу с именем модуля Но мое требование состоит в том, чтобы все данные трех модулей были записаны в каталог "/data". Ниже приведен мой файл конфигурации тома. конфигурация тома

2

Лучший ответ

1

Вам необходимо динамически предоставлять точку доступа для каждого вашего модуля с отслеживанием состояния. Сначала создайте класс хранилища 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

Все модули теперь записывают свои собственные данные / данные.

2021-11-24 16:23:38

Я думаю, что данные каждого модуля будут храниться в разных местах. Каждый модуль будет иметь свои собственные данные цепочки, и это займет много места в памяти. Что мне нужно, так это чтобы модули обменивались данными о цепочке между ними. Возможно ли это ?
Sahil Singh

Ваше приложение не поддерживает обмен данными; учитывая тот факт, что оно уже сообщило вам ...datadir already used by another process.. В первую очередь вам нужно проверить руководство по применению, если это возможно.
gohm'c
0

Один и тот же каталог не может быть повторно использован несколькими экземплярами go-ethereum, поэтому у вас есть следующие возможности:

  1. Используйте один и тот же постоянный том для каждого модуля и используйте подкаталог для каждого модуля

  2. Используйте отдельный постоянный том для каждого модуля, затем каждый может использовать один и тот же /data путь

2021-11-24 09:28:51

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................