Eventstore在Kubernetes中无效(但在Docker中有效)

时间:2019-10-29 18:58:35

标签: docker kubernetes containers kubernetes-pod event-store

我想在Kubernetes节点中运行Eventstore。我从minikube start开始该节点,然后应用了这个yaml文件:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: eventstore-deployment
spec:
  selector:
    matchLabels:
      app: eventstore
  replicas: 1
  template:
    metadata:
      labels:
        app: eventstore
    spec:
      containers:
      - name: eventstore
        image: eventstore/eventstore
        ports:
        - containerPort: 1113
          protocol: TCP
        - containerPort: 2113
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: eventstore
spec:
  selector:
    app: eventstore
  ports:
  - protocol: TCP
    port: 1113
    targetPort: 1113
---
apiVersion: v1
kind: Service
metadata:
  name: eventstore-dashboard
spec:
  selector:
    app: eventstore
  ports:
  - protocol: TCP
    port: 2113
    targetPort: 2113
    nodePort: 30113
  type: NodePort

部署,副本集和Pod启动,但是什么也没发生:Eventstore不打印到日志,我无法打开其仪表板。另外,其他服务也无法连接到 eventstore:1113 。没有错误,豆荚也不会崩溃。 我在日志中看到的唯一是“所选容器尚未记录任何消息”。

enter image description here enter image description here

我尝试了一个干净的香草minukube节点,该节点具有不同的vm驱动程序,并且还尝试了一个配置了Ambassador + Linkerd的节点。结果是一样的。

但是当我通过 docker-compose

在这个yaml文件中在Docker中运行Eventstore时
eventstore:
    image: eventstore/eventstore
    ports:
      - '1113:1113'
      - '2113:2113'

一切正常:Eventstore输出到日志,其他服务可以连接到它,我可以在2113端口上打开其仪表板。

更新:Eventstore在部署大约30-40分钟后开始工作。我尝试了几次,不得不等待。部署后,其他Pod几乎立即开始工作(30秒-1分钟)。

1 个答案:

答案 0 :(得分:1)

正如@ligowsky在评论部分中确认的那样,问题是由于VM性能引起的。将其发布为社区Wiki以获得更好的可见性。

Minikube默认与2 CPUs2048 Memory一起运行。可以在here中找到更多详细信息。

如果您的VM具有更多资源,则可以更改此设置。

-在Minikube启动期间

$ sudo minikube start --cpus 2 --memory 8192 --vm-driver=<driverType>

-在运行Minikube时,需要重新启动minikube

$ minikube config set memory 4096
⚠️  These changes will take effect upon a minikube delete and then a minikube start

更多命令可在Minikube docs中找到。

在我的情况下,当Minikube的资源为4个CPU和8192个内存时,eventstore没有任何问题。

OP的解决方案

OP使用Kind来运行eventstore部署。

  

Kind是使用Docker运行本地Kubernetes集群的工具   容器“节点”。一种主要用于测试Kubernetes   1.11 +

Kind文档可以在here中找到。