【发布时间】:2019-03-18 18:44:32
【问题描述】:
我正在尝试在 Traefik 后面配置一个 Kafka 集群,但我的生产者和客户端(在 kubernetes 之外)没有连接到引导服务器。他们一直在说:
"在给定的 url 中没有可解析的 boostrap 服务器"
其实这里是 Traefik 入口:
{
"apiVersion": "extensions/v1beta1",
"kind": "Ingress",
"metadata": {
"name": "nppl-ingress",
"annotations": {
"kubernetes.io/ingress.class": "traefik",
"traefik.frontend.rule.type": "PathPrefixStrip"
}
},
"spec": {
"rules": [
{
"host": "" ,
"http": {
"paths": [
{
"path": "/zuul-gateway",
"backend": {
"serviceName": "zuul-gateway",
"servicePort": "zuul-port"
}
},
{
"path": "/kafka",
"backend": {
"serviceName": "kafka-broker",
"servicePort": "kafka-port"
}
[..]
}
我给 kafka 消费者/生产者的是 Traefik 的公共 IP。 流程如下:[Kafka 生产者/消费者] -> Traefik(暴露为负载均衡器)-> [Kafka-Cluster]
有什么解决办法吗?否则,我想在 Traefik 和 kafka 代理之间添加一个 kafka-rest 代理 (https://docs.confluent.io/current/kafka-rest/docs/index.html),但我认为这不是理想的解决方案。
【问题讨论】:
-
我对 Kafka 和 traefik 都不熟悉,但我想你想念负载均衡器。您将 traefik 用作将您的服务映射到 API http 请求的入口对象,但您还需要定义一个 LB 将流量转发到您的入口。这在 KVM 或裸机 k8s 集群中很常见。否则我的下一个猜测是 servicePort 应该是数字而不是字符串。
-
跟我做的不一样吗?我将 Traefik 暴露为负载均衡器,因此它就像集群的入口点。
-
我相信您正在公开一个 http 协议端点,但 kafka 没有使用 http,这可能是失败的原因。
标签: kubernetes apache-kafka load-balancing traefik