L'esecuzione di più contenitori di ethereum con il comune EFS storage su AWS EKS/kubernetes

0

Domanda

Sto cercando di eseguire un go-ethereum nodo su AWS EKS, per questo ho usato statefulsets con al di sotto di configurazione. statefulset.file yaml

In esecuzionekubectl apply -f statefulset.yaml crea 2 baccelli di cui 1 è in esecuzione e 1 è in CrashLoopBackOff stato. Contenitori di stato Dopo aver controllato i log per il secondo contenitore l'errore che ricevo è Fatal: Failed to create the protocol stack: datadir already used by another process. I registri di errore che io sto

Il problema è principalmente dovuto ai contenitori utilizzando la stessa directory di scrivere(geth dati) sulla persistente volume(io.e le cialde sono iscritto a '/dati'). Se io uso un sottotracciato espressione e montare il pod directory in una sub-directory con il nome del contenitore(per esempio: '/dati/geth-0') funziona benissimo. statefulset.yaml con volume di montaggio di una sub-directory con podname Ma la mia richiesta è che tutti e tre i pod i dati vengono scritti in '/data " directory. Qui di seguito la mia volume del file di configurazione. la configurazione del volume

2

Migliore risposta

1

È necessario in modo dinamico disposizione il punto di accesso per ogni stateful pod. Prima di creare un EFS classe di archiviazione che supporta la dinamica di fornitura:

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>

Aggiornamento spec per richiesta di supporto modello:

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

Tutti i contenitori, adesso gli scrivo una propria /data.

2021-11-24 16:23:38

Credo che in grado di memorizzare ogni contenitore di dati in posizione diversa. Ogni modulo avrà un suo chaindata e che si consumano un sacco di spazio di archiviazione. Ciò di cui ho bisogno è che i baccelli condividere chaindata tra di loro. È possibile ?
Sahil Singh

L'applicazione non supporta la condivisione dei dati; visto il fatto che si è già detto ...datadir already used by another process.. Hai bisogno di controllare il manuale di applicazione, se possibile, in primo luogo.
gohm'c
0

Stessa directory non può essere riutilizzato da più istanze di ethereum, così si hanno le seguenti opzioni:

  1. Utilizzare la stessa persistente di volume per ogni contenitore e utilizzare una sottodirectory per ogni pod

  2. In un persistente di volume per ogni pod, poi ognuno può usare la stessa /data percorso

2021-11-24 09:28:51

In altre lingue

Questa pagina è in altre lingue

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