【发布时间】:2019-03-30 11:09:11
【问题描述】:
- 我在 OSX 本地工作。
- 我在本地模式下使用 Kafka 和 zookeeper。意思是我的 Kafka 安装中的 zookeeper。一个节点集群。
- 两者都在环回本地主机上工作
zookeeper.connect=localhost:2181
- 我的
/etc/host如下:
127.0.0.1 localhost MaatPro.local 255.255.255.255 broadcasthost ::1 localhost MaatPro.local fe80::1%lo0 localhost MaatPro.local
- 我的机器上设置了 docker for Mac,带有 Kubernetes 扩展。
我的场景
- 我有一个 dockerized 的 Akka-stream 微服务,它从外部数据库读取数据并将其写入 Kafka 主题。它用作引导服务器:
"localhost:9092"
问题
- 当我直接在我的机器上运行我的服务(例如命令行或从 Intellij 中)时,一切正常。当我在本地 Docker 或 Kubernetes 上运行它时,我收到以下错误:
(o.a.k.clients.NetworkClient) [Producer clientId=producer-1] Connection to node 0 could not be established. The broker may not be available.
使用 Kubernetes,我构建了以下 YAML 文件来部署我的 pod:
apiVersion: v1
kind: Pod
metadata:
name: fetcher
spec:
hostNetwork: true
containers:
- image: entellectextractorsfetchers:0.1.0-SNAPSHOT
name: fetcher
我采取预防措施设置 hostNetwork: true
直接使用 Docker 守护程序我最初也尝试将网络设置为主机,但发现这不适用于 docker for mac。因此,我放弃了那条路线。我知道这与虚拟化有关。
1) docker 出现的虚拟化问题和我本地的 kubernetes 一样吗?基本上,主机网络是虚拟机而不是我的mac?
2) 我尝试更改我的代码并将以下地址添加为引导服务器:host.docker.internal 根据文档。但问题仍然存在。根本问题是我正在处理环回地址吗?我真的应该在我的网络地址上工作吗? host.docker.internal 指向哪个地址?我怎样才能使它与环回地址一起工作?如果我完全关闭,知道我需要实施什么才能使其正常工作吗?
非常感谢您对此提供的任何帮助。
【问题讨论】:
-
看看这对您的用例是否有意义。 rmoff.net/2018/08/02/kafka-listeners-explained。那就先试试不带 k8s 的 Kafka
-
非常感谢您的博文
标签: docker kubernetes apache-kafka docker-for-mac