Strimzi Kafka外部侦听器VM上的入口错误[关闭]
Posted
技术标签:
【中文标题】Strimzi Kafka外部侦听器VM上的入口错误[关闭]【英文标题】:Strimzi Kafka external listeners Ingress error on VM [closed] 【发布时间】:2021-11-12 02:30:45 【问题描述】:我正在尝试使用 kubeadm、kubelet、containerd、Calico、MetalLb 在 VM 上运行的 Kubernetes 集群上部署带有 Strimzi 的 Kafka(VMWare Workstation 15 和 Ubuntu 20.04)。
我可以使用我指定的范围内的 IP 创建负载均衡器类型的入口 nginx 控制器服务,但是当我创建 Kafka 集群及其入口类型的外部侦听器并尝试关联 DNS 时,它会崩溃并出现错误:
等待命名空间默认可寻址的 Ingress 资源 my-cluster-kafka-bootstrap 时超时超过 300000 毫秒
这是整个堆栈跟踪(来自 Strimzi 集群操作员日志)
2021-09-16 16:59:21 WARN AbstractOperator:481 - Reconciliation #100(timer) Kafka(default/my-cluster): 无法协调 io.strimzi.operator.common.operator.resource.TimeoutException: 等待命名空间中的 Ingress 资源 my-cluster-kafka-bootstrap 时超时超过 300000 毫秒,默认可寻址 在 io.strimzi.operator.common.Util$1.lambda$handle$1(Util.java:139) ~[io.strimzi.operator-common-0.25.0.jar:0.25.0] 在 io.vertx.core.impl.future.FutureImpl$3.onFailure(FutureImpl.java:128) ~[io.vertx.vertx-core-4.1.2.jar:4.1.2] 在 io.vertx.core.impl.future.FutureBase.lambda$emitFailure$1(FutureBase.java:71) ~[io.vertx.vertx-core-4.1.2.jar:4.1.2] 在 io.netty.util.concurrent.AbstractEventExecutor.safeExecute(AbstractEventExecutor.java:164) [io.netty.netty-common-4.1.66.Final.jar:4.1.66.Final] 在 io.netty.util.concurrent.SingleThreadEventExecutor.runAllTasks(SingleThreadEventExecutor.java:469) [io.netty.netty-common-4.1.66.Final.jar:4.1.66.Final] 在 io.netty.channel.nio.NioEventLoop.run(NioEventLoop.java:500) [io.netty.netty-transport-4.1.66.Final.jar:4.1.66.Final] 在 io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:986) [io.netty.netty-common-4.1.66.Final.jar:4.1.66.Final] 在 io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74) [io.netty.netty-common-4.1.66.Final.jar:4.1.66.Final] 在 io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30) [io.netty.netty-common-4.1.66.Final.jar:4.1.66.Final] 在 java.lang.Thread.run(Thread.java:829) [?:?]
这是我的 Kafka 集群清单
api版本:kafka.strimzi.io/v1beta2 种类:卡夫卡 元数据: 名称:我的集群 规格: 卡夫卡: 版本:2.8.0 复制品:1 听众: - 名称:平原 端口:9092 类型:内部 tls: 假的 验证: 类型:scram-sha-512 - 名称:外部 端口:9094 类型:入口 tls: 真的 验证: 类型:scram-sha-512 配置: 引导程序: 主机:localb.kafka.xxx.com 经纪人: - 经纪人:0 主机:local.kafka.xxx.com这是我的入口控制器服务
名称 类型 CLUSTER-IP EXTERNAL-IP PORT(S) 年龄选择器 ingress-nginx-controller LoadBalancer 10.111.221.8 10.104.187.226 80:30856/TCP,443:31698/TCP 14h app.kubernetes.io/component=controller,app.kubernetes.io/instance=ingress-nginx,app.kubernetes. io/name=ingress-nginx您能帮帮我吗,您是如何在 Prem 上使用 Strimzi 欺骗 Kafka 的?
【问题讨论】:
看来这是关键点:Exceeded timeout of 300000ms while waiting for Ingress resource my-cluster-kafka-bootstrap in namespace default to be addressable
。 default
namespace
中是否有任何 Ingress
称为 my-cluster-kafka-bootstrap
?看起来它应该存在。 kubectl get ingress -n default my-cluster-kafka-bootstrap
返回什么?
【参考方案1】:
来自 Strimzi 的错误意味着 Ingress
资源缺少 .status
部分。当 Nginx Ingress 控制器注册它们时,它通常会将状态设置为如下所示:
status:
loadBalancer:
ingress:
- ip: 192.168.1.245
其中 IP 地址是 Ingress IP 地址(因此在您的情况下为10.104.187.226
)。 Strimzi 正在等待这个,如果没有它,将不会看到 Ingresses 准备就绪。
但这在我们的案例中并没有发生。根据我的经验,这主要意味着 Ingress 控制器没有找到 Ingress 实例。它们可能在 Ingres .spec
或注释中缺少正确的 class 名称,它们可能位于 Ingress 控制器未监视的命名空间中等。检查 Ingress 控制器的日志可能会有所帮助.
【讨论】:
谢谢@Jakub!你完全正确!你已经结束了我的问题,我不能投票给你的答案,但每一个字都是正确的;这是缺少入口类...以上是关于Strimzi Kafka外部侦听器VM上的入口错误[关闭]的主要内容,如果未能解决你的问题,请参考以下文章
srimzi - 无法从外部 m/c 访问 Kafka 代理