0

I'm trying to deploy Geth(ethereum/client-go) pod on k8s. But I can't deploy the pod with error "Fatal: Error starting protocol stack: listen tcp: lookup "192.168.1.10": no such host".

My deploy.yaml is here.

---
apiVersion: v1
kind: PersistentVolume
metadata:
  name: chaindatastorage
spec:
  capacity:
    storage: 1000Gi
  volumeMode: Filesystem
  accessModes:
  - ReadWriteOnce
  persistentVolumeReclaimPolicy: Retain
  storageClassName: local-ssd-storage
  local:
    path: /k8sNodeData/ethDataDir
  nodeAffinity:
    required:
      nodeSelectorTerms:
      - matchExpressions:
        - key: disktype
          operator: In
          values:
          - ssd
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: chaindatavolumeclaim
spec:
  accessModes:
    - ReadWriteOnce
  volumeMode: Filesystem
  resources:
    requests:
      storage: 1000Gi
  storageClassName: local-ssd-storage
---
apiVersion: v1
kind: Service
metadata:
  name: geth-port
spec:
  type: NodePort
  ports:
    - name: geth-sync-port
      port: 30303
      targetPort: 30303
      nodePort: 30303
    - name: geth-rpc-port
      port: 8545
      targetPort: 8545
      nodePort: 8545
  selector:
    name: gethnode
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: gethnodedeployment
spec:
  replicas: 1
  selector:
    matchLabels:
      name: gethnode
  template:
    metadata:
      labels:
        name: gethnode
    spec:
      containers:
      - name: gethnode
        image: ethereum/client-go
        args:
        - "--syncmode=full"
        - "--maxpeers=80"
        - "--cache=8192"
        - "--http"
        - "--http.addr=\"192.168.1.10\""
        - "--http.port=8545"
        volumeMounts:
          - name: gethchaindata
            mountPath: /root/.ethereum
        resources:
          limits:
            memory: 20480Mi
            cpu: 4000m
      volumes:
        - name: gethchaindata
          persistentVolumeClaim:
            claimName: chaindatavolumeclaim
---

The results of kubectl get service is here.

NAME                      TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                         AGE
geth-port                 NodePort    10.110.121.244   <none>        30303:30303/TCP,8545:8545/TCP   78s
kubernetes                ClusterIP   10.96.0.1        <none>        443/TCP                         29d

The results of kubectl get logs of the pod is here.

INFO [10-03|09:40:33.482] Starting Geth on Ethereum mainnet... 
INFO [10-03|09:40:33.483] Maximum peer count                       ETH=80 LES=0 total=80
INFO [10-03|09:40:33.483] Smartcard socket not found, disabling    err="stat /run/pcscd/pcscd.comm: no such file or directory"
ERROR[10-03|09:40:33.483] Failed to enumerate USB devices          hub=ledger vendor=11415 failcount=1 err="failed to initialize libusb: libusb: unknown error [code -99]"
ERROR[10-03|09:40:33.483] Failed to enumerate USB devices          hub=trezor vendor=21324 failcount=1 err="failed to initialize libusb: libusb: unknown error [code -99]"
ERROR[10-03|09:40:33.483] Failed to enumerate USB devices          hub=trezor vendor=4617  failcount=1 err="failed to initialize libusb: libusb: unknown error [code -99]"
ERROR[10-03|09:40:33.483] Failed to enumerate USB devices          hub=ledger vendor=11415 failcount=2 err="failed to initialize libusb: libusb: unknown error [code -99]"
ERROR[10-03|09:40:33.483] Failed to enumerate USB devices          hub=trezor vendor=21324 failcount=2 err="failed to initialize libusb: libusb: unknown error [code -99]"
ERROR[10-03|09:40:33.483] Failed to enumerate USB devices          hub=trezor vendor=4617  failcount=2 err="failed to initialize libusb: libusb: unknown error [code -99]"
INFO [10-03|09:40:33.483] Set global gas cap                       cap=25000000
INFO [10-03|09:40:33.483] Allocated trie memory caches             clean=2.00GiB dirty=2.00GiB
INFO [10-03|09:40:33.483] Allocated cache and file handles         database=/root/.ethereum/geth/chaindata cache=4.00GiB handles=524288
ERROR[10-03|09:40:34.483] Failed to enumerate USB devices          hub=trezor vendor=4617  failcount=3 err="failed to initialize libusb: libusb: unknown error [code -99]"
ERROR[10-03|09:40:34.483] Failed to enumerate USB devices          hub=trezor vendor=21324 failcount=3 err="failed to initialize libusb: libusb: unknown error [code -99]"
ERROR[10-03|09:40:34.483] Failed to enumerate USB devices          hub=ledger vendor=11415 failcount=3 err="failed to initialize libusb: libusb: unknown error [code -99]"
INFO [10-03|09:40:34.769] Opened ancient database                  database=/root/.ethereum/geth/chaindata/ancient
INFO [10-03|09:40:34.825] Initialised chain configuration          config="{ChainID: 1 Homestead: 1150000 DAO: 1920000 DAOSupport: true EIP150: 2463000 EIP155: 2675000 EIP158: 2675000 Byzantium: 4370000 Constantinople: 7280000 Petersburg: 7280000 Istanbul: 9069000, Muir Glacier: 9200000, YOLO v1: <nil>, Engine: ethash}"
INFO [10-03|09:40:34.825] Disk storage enabled for ethash caches   dir=/root/.ethereum/geth/ethash count=3
INFO [10-03|09:40:34.825] Disk storage enabled for ethash DAGs     dir=/root/.ethash               count=2
INFO [10-03|09:40:34.826] Initialising Ethereum protocol           versions="[65 64 63]" network=1 dbversion=8
INFO [10-03|09:40:37.518] Loaded most recent local header          number=10974617 hash="d28c04…5fe44a" td=17763879313328271327648 age=1d4h43m
INFO [10-03|09:40:37.519] Loaded most recent local full block      number=10973423 hash="92578b…ae09c1" td=17759925126330650308055 age=1d9h14m
INFO [10-03|09:40:37.519] Loaded most recent local fast block      number=10974617 hash="d28c04…5fe44a" td=17763879313328271327648 age=1d4h43m
INFO [10-03|09:40:37.521] Loaded local transaction journal         transactions=0 dropped=0
INFO [10-03|09:40:37.521] Regenerated local transaction journal    transactions=0 accounts=0
INFO [10-03|09:40:37.522] Starting peer-to-peer node               instance=Geth/v1.9.23-unstable-9d1e2027-20200930/linux-amd64/go1.15.2
INFO [10-03|09:40:37.576] New local node record                    seq=52227 id=78ab8e1d111e4ab5 ip=127.0.0.1 udp=30303 tcp=30303
INFO [10-03|09:40:37.577] Started P2P networking                   self=enode://0b9ee2182b4382638cd77fc8b4369d00b4c14cc6c46d4c71d84a9a9fc191cab75c6566b78a42ddcf4a4d00ba9057747588750f518133bf821cd09e69d769ba0b@127.0.0.1:30303
INFO [10-03|09:40:37.580] IPC endpoint opened                      url=/root/.ethereum/geth.ipc
INFO [10-03|09:40:37.581] IPC endpoint closed                      url=/root/.ethereum/geth.ipc
Fatal: Error starting protocol stack: listen tcp: lookup "192.168.1.10": no such host
Fatal: Error starting protocol stack: listen tcp: lookup "192.168.1.10": no such host

When I turned off the - "--http" - "--http.addr=\"192.168.1.10\"" - "--http.port=8545" settings, the pod works without any problems. The pod begins syncing. nping to 192.168.1.10:30303 works without any problems. So I think the format of NodePort setting is correct. I wonder why the pod can't be started only when I add the series of --http settings.

I have already changed the range of port of k8s. So I think the port 30303 and 8545 are not wrong.

I'd like to know where to fix it or the cause of the error.

10/05
The result of kubectl get pod -A

NAMESPACE     NAME                                       READY   STATUS    RESTARTS   AGE
default       gethnodedeployment-6f5cd5cf4b-wnqst        1/1     Running   1          20s
default       intelnuc-mysql-deployment-9685c849-q6c9j   1/1     Running   0          6d20h
kube-system   coredns-66bff467f8-gbf9r                   1/1     Running   0          30d
kube-system   coredns-66bff467f8-xg72w                   1/1     Running   0          30d
kube-system   etcd-k8smaster                             1/1     Running   0          30d
kube-system   kube-apiserver-k8smaster                   1/1     Running   1          40h
kube-system   kube-controller-manager-k8smaster          1/1     Running   3          30d
kube-system   kube-flannel-ds-amd64-gcg5c                1/1     Running   0          30d
kube-system   kube-flannel-ds-amd64-mn7zq                1/1     Running   0          17d
kube-system   kube-flannel-ds-amd64-p6lkz                1/1     Running   0          30d
kube-system   kube-proxy-ckfkm                           1/1     Running   0          30d
kube-system   kube-proxy-qhnbn                           1/1     Running   0          17d
kube-system   kube-proxy-rr6b8                           1/1     Running   0          30d
kube-system   kube-scheduler-k8smaster                   1/1     Running   3          30d
Pierogi
  • 341
  • 1
  • 3
  • 17

1 Answers1

1

Your deployment is missing a label:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gethnodedeployment

needs to become

apiVersion: apps/v1
kind: Deployment
metadata:
  name: gethnodedeployment
  labels:
    name: gethnode

The label is what the service selector uses to find matching pods.

Justin Tamblyn
  • 719
  • 8
  • 21
  • Thank you for your reply. And I fixed the deploy.yaml according to your comment. But it doesn't work. Same error still occurs. – Pierogi Oct 03 '20 at 12:51
  • @Pierogi sorry this could be a few things. Check if the pod is running? `kubectl get pods -A` – Justin Tamblyn Oct 04 '20 at 15:57
  • I've posted the result of ```kubectl get pods -A``` on the top post. – Pierogi Oct 05 '20 at 01:45
  • 1
    @Pierogi. Super. The pods are healthy and that is good news. I believe the http.addr issue is because the pod is getting it's own IP (`kubectl get pods -o wide -A`) address on startup and can't bind to the IP address of 192..... If it works without it then I would just leave it off. If it can't work without it, use `0.0.0.0` (this binds to all addresses on the virtual network card of the pod). – Justin Tamblyn Oct 05 '20 at 05:59
  • I left the series of ```--http``` options off then run ```admin.startRPC("0.0.0.0",8545)``` on geth's console. And it works. Thank you for your assistance. Do you know the way to run geth's RPC server automatically when deploy it's pod ? – Pierogi Oct 05 '20 at 11:08
  • Sorry I don't really know anything about that project. Couldn't find anything online. Consider logging an issue on the projects Github page? There should be an easy, documented way for everyone to do that and I can't see one. – Justin Tamblyn Oct 05 '20 at 13:10
  • Thank you for your reply kindly! Your reply was very helpful. I appreciate you! – Pierogi Oct 06 '20 at 00:01