我想在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不打印到日志,我无法打开其仪表板。另外,其他服务也无法连接到事件存储库:1113。没有错误, pod 也不会崩溃。
我在日志中看到的唯一是“所选容器尚未记录任何消息”。
我尝试了使用不同的vm驱动程序的干净的 Vanilla minukube节点,并且还配置了Ambassador + Linkerd。结果是一样的。
但是当我通过docker-compose在这个yaml文件中在Docker中运行Eventstore时
eventstore:
image: eventstore/eventstore
ports:
- '1113:1113'
- '2113:2113'
一切正常:Eventstore输出到日志,其他服务可以连接到它,我可以在2113端口上打开其仪表板。
更新:事件存储在部署大约30-40分钟后开始工作。我尝试了几次,不得不等待。部署后,其他Pod几乎立即开始工作(30秒-1分钟)。
最佳答案
正如@ligowsky在评论部分中确认的那样,问题是由于VM性能引起的。将其发布为社区Wiki以获得更好的可见性。
默认情况下,Minikube
与2 CPUs
和2048 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
资源为4CPU和8192内存的情况下,eventstore
没有任何问题。OP的解决方案
OP使用Kind运行
eventstore
部署。可以在here中找到
Kind
文档。关于docker - Eventstore在Kubernetes中不起作用(但在Docker中起作用),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58613793/