kubernetes - 虚拟机上的 Strimzi Kafka 外部侦听器入口错误
问题描述
我正在尝试使用 kubeadm、kubelet、containerd、Calico、MetalLb 在 VM 上运行的 Kubernetes 集群上部署带有 Strimzi 的 Kafka(VMWare Workstation 15 和 Ubuntu 20.04 在其上运行)。
我可以使用我指定的范围内的 IP 创建负载均衡器类型的入口 nginx 控制器服务,但是当我创建 Kafka 集群及其入口类型的外部侦听器并尝试关联 DNS 时,它会崩溃并出现错误:
等待命名空间中的入口资源 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 的?
解决方案
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
,它们可能位于 Ingress 控制器未监视的命名空间中等。检查 Ingress 控制器的日志可能会有所帮助。
推荐阅读
- distributed-computing - 协调器失败时的两阶段提交阻塞
- node.js - TypeError:无法读取未定义 Angular SSR 的属性“indexOf”
- java - 如何在 Intellij 中显示分支覆盖率?
- azure - 预测期间的 Azure 表单识别器一般错误
- python - 从 python 中的嵌套 URL 中抓取和解析表
- php - 为什么 apache 会像文件夹或虚拟 url 一样获取文件 php?
- python - 限制一定数量的请求的scrapy蜘蛛
- flutter - 带有 StreamBuilder 错误的 Flutter AlertDialog
- python - 如何使用python在我的数据中获取一定范围的数字
- azure-devops - Azure DevOps - 测试运行管理,恢复运行结果