Executando vários pods de ir-ethereum comuns EFS de armazenamento da AWS EKS/kubernetes

0

Pergunta

Eu estou tentando executar um go-ethereum nó na AWS EKS, para que eu tenha usado statefulsets com a configuração abaixo. statefulset.arquivo yaml

Execuçãokubectl apply -f statefulset.yaml cria 2 vagens, das quais 1 é executado e 1 está em CrashLoopBackOff estado. Vagens de estado Depois de verificar os logs para o segundo pod o erro que eu estou ficando é Fatal: Failed to create the protocol stack: datadir already used by another process. Logs de erro que eu estou chegando

O problema é devido, principalmente, para as vagens usando o mesmo diretório para escrever(geth de dados) na persistência de volume(eu.e as vagens são a escrever para "/dados"). Se eu usar um subcaminho de expressão e de montagem da carcaça do diretório para um sub-diretório com o pod nome(por exemplo: '/dados/geth-0') ele funciona muito bem. statefulset.yaml com montagem de volume para um sub-diretório com podname Mas a minha exigência é que todas as três pod de dados é escrito em '/dados de diretório. Abaixo está o meu volume de arquivo de configuração. configuração de volume

2

Melhor resposta

1

Você precisa dinamicamente disposição o ponto de acesso para cada um dos seus stateful pod. Primeiro crie um EFS de classe de armazenamento em que o suporte dinâmico de fornecimento:

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>

Atualizar seu equipamento para suporte de reclamação modelo:

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

Todos os pods agora escrever seus próprios dados.

2021-11-24 16:23:38

Eu acho que vai armazenar cada pod dados em local diferente. Cada módulo terá a sua própria chaindata e que vai consumir uma grande quantidade de armazenamento. O que eu preciso é que as vagens compartilhar chaindata entre eles. É possível ?
Sahil Singh

O aplicativo não oferece suporte a compartilhamento de dados; dado o fato de que ele já disse a você ...datadir already used by another process.. Você precisa verificar o manual da sua aplicação, se possível em primeiro lugar.
gohm'c
0

Mesmo diretório não pode ser reutilizado por várias instâncias do ir-ethereum, então, você terá as seguintes opções:

  1. Utilize os mesmos persistente de volume para cada um dos núcleos e usa uma subpasta para cada pod

  2. Utilizar um persistente de volume para cada um dos núcleos, em seguida, cada um pode usar o mesmo /data caminho

2021-11-24 09:28:51

Em outros idiomas

Esta página está em outros idiomas

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