首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将erigon mainnet存档节点部署到GKE集群

将erigon mainnet存档节点部署到GKE集群
EN

Stack Overflow用户
提问于 2022-06-16 02:05:23
回答 1查看 359关注 0票数 2

我目前正在尝试将带有erigon停靠映像的mainnet存档节点部署到GKE集群(thorax/erigon)。我已经成功地部署了一个具有类似配置的Geth节点,但当尝试对erigon使用相同的方法时,我没有成功。

下面是我的YAML部署文件:

代码语言:javascript
运行
复制
---
apiVersion: apps/v1
kind: StatefulSet
metadata:
  name: erigon-mainnet
  namespace: erigon-mainnet
spec:
  selector:
    matchLabels:
      app: erigon-mainnet
  replicas: 2
  serviceName: erigon-mainnet
  updateStrategy:
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: erigon-mainnet
    spec:
      terminationGracePeriodSeconds: 300
      containers:
        - name: erigon
          image: docker.io/thorax/erigon
          ports:
            - containerPort: 8545
            - containerPort: 8546
            - { containerPort: 30303, protocol: TCP }
            - { containerPort: 30303, protocol: UDP }
          args:
            [
              "--datadir=/mainnet",
              "--chain=mainnet",
              "--http",
              "--http.addr=0.0.0.0",
              "--http.api=eth,net,web3",
              "--http.vhosts=*",
             " --http.corsdomain=*",
              "--ws",
              "--ws.addr=0.0.0.0",
              "--ws.api=eth,net,web3",
              "--ws.origins=*",
            ]
          resources:
            requests:
              memory: 2G
              cpu: 1000m
            limits:
              memory: 16G
              cpu: 8000m
          livenessProbe:
            initialDelaySeconds: 10
            timeoutSeconds: 10
            httpGet:
              path: /
              port: 8545
          readinessProbe:
            httpGet:
              path: /
              port: 8545
          volumeMounts:
            - name: mainnet
              mountPath: /mainnet
      nodeSelector:
        chain: mainnet
  volumeClaimTemplates:
    - metadata:
        name: "mainnet"
      spec:
        storageClassName: premium-rwo
        accessModes: ["ReadWriteOnce"]
        resources:
          requests:
            storage: 4Ti

---
apiVersion: v1
kind: Service
metadata:
  name: erigon-mainnet
  namespace: erigon-mainnet
spec:
  ports:
    - protocol: TCP
      targetPort: 8545
      port: 8545
      name: http
    - protocol: TCP
      targetPort: 8546
      port: 8546
      name: websoket
  clusterIP: None
  selector:
    app: erigon-mainnet

kubectl describe pod产生的结果如下:

代码语言:javascript
运行
复制
Events:
  Type     Reason     Age                From               Message
  ----     ------     ----               ----               -------
  Normal   Scheduled  53s                default-scheduler  Successfully assigned erigon-mainnet/erigon-mainnet-0 to gke-node-cluster-polygon-a017195b-fwhs
  Normal   Pulled     49s                kubelet            Successfully pulled image "docker.io/thorax/erigon" in 430.462783ms
  Normal   Pulled     48s                kubelet            Successfully pulled image "docker.io/thorax/erigon" in 399.71813ms
  Normal   Pulling    30s (x3 over 50s)  kubelet            Pulling image "docker.io/thorax/erigon"
  Normal   Created    29s (x3 over 49s)  kubelet            Created container erigon-mainnet
  Warning  Failed     29s (x3 over 49s)  kubelet            Error: failed to create containerd task: failed to create shim: OCI runtime create failed: container_linux.go:380: starting container process caused: exec: "--datadir=/mainnet": stat --datadir=/mainnet: no such file or directory: unknown
  Normal   Pulled     29s                kubelet            Successfully pulled image "docker.io/thorax/erigon" in 417.260296ms
  Warning  BackOff    10s (x8 over 48s)  kubelet            Back-off restarting failed container

因此,我在这里的假设是,我可能正在将SSD安装到错误的目录。我尝试将--datadir标志保留为空白,并将其挂载到默认的datadir erigon目录中,但仍然会遇到崩溃循环。使用我的Geth节点,我将完全相同的逻辑挂载到/chaindata,并且节点运行良好。如果有人知道这里的问题可能是什么,任何帮助都是值得感激的。我对GKE和erigon相当陌生,所以它可能是我忽略的一个简单的分辨率。

EN

回答 1

Stack Overflow用户

发布于 2022-06-18 23:04:10

它失败了,因为:

代码语言:javascript
运行
复制
 exec: "--datadir=/mainnet"
     : stat --datadir=/mainnet: no such file or directory

erigon文档内容如下:

使用--datadir选择存储数据的位置。

因此,您可以任意使用,但是目录/卷必须存在,这样命令stat /mainnet就不会失败。我假设您还没有创建一个要挂载的gcepersistentdisk

https://cloud.google.com/sdk/gcloud/reference/compute/disks/create

代码语言:javascript
运行
复制
gcloud compute disks create --size=1TB --zone=us-central1-a mainnet-data

然后声明为PD,持久磁盘:

代码语言:javascript
运行
复制
gcePersistentDisk:
  pdName: mainnet-data
  fsType: ext4

Config volumeClaimTemplates的意思是kind: StatefulSet;使用kind: Deployment。这个示例还对所有东西都使用Deployment;它可以将整个区块链下载到--datadir中。

当您查看Ethereum链全同步数据大小时,这意味着--size=1TB2TB

2022年6月18日759.03 GB

与之相比,expedition只使用Ethereum端点。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72639678

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档