Strimzi Kafka Broker创建失败:IngressClass无效问题求助
Kafka Broker未创建:IngressClass验证失败问题解决
问题背景
通过Rancher Desktop创建禁用Traefik的本地k3s集群,尝试以Ingress方式搭建Kafka并暴露到外部。已安装开启SSL透传的ingress-nginx,部署Strimzi Kafka后Broker未启动,ingress-nginx日志持续出现以下错误:
W0415 05:07:19.264102 7 controller.go:279] ignoring ingress hm-kafka-kafka-bootstrap in hm-kafka based on annotation : ingress does not contain a valid IngressClass
Operator创建的Ingress资源因IngressClass验证不通过,无法等待控制器确认地址,最终导致Broker未创建。
解决方案
1. 确认集群中的IngressClass
先检查当前集群已存在的IngressClass资源:
kubectl get ingressclass
正常情况下,ingress-nginx安装后会自动创建名为nginx的IngressClass。
2. 让Strimzi使用正确的IngressClass
以下两种配置方式任选其一即可:
方式一:在Kafka自定义资源中指定
修改你的my-kafka-persistent.yaml,在外部监听的configuration字段中添加ingressClass配置:
apiVersion: kafka.strimzi.io/v1beta2 kind: Kafka metadata: name: hm-kafka spec: kafka: # 省略其他已有配置 listeners: # 省略其他监听配置 - name: external port: 9094 type: ingress tls: true configuration: ingressClass: nginx # 新增该行指定IngressClass bootstrap: host: kafka-bootstrap.192.168.1.149.nip.io brokers: - broker: 0 host: kafka-broker-0.192.168.1.149.nip.io - broker: 1 host: kafka-broker-1.192.168.1.149.nip.io - broker: 2 host: kafka-broker-2.192.168.1.149.nip.io # 省略其他已有配置
重新应用该配置:
kubectl apply -f my-kafka-persistent.yaml -n hm-kafka
方式二:全局配置Strimzi Operator
修改Strimzi Operator的订阅配置,设置全局默认IngressClass:
apiVersion: operators.coreos.com/v1alpha1 kind: Subscription metadata: name: strimzi-kafka-operator namespace: hm-kafka spec: config: env: - name: STRIMZI_DEFAULT_INGRESS_CLASS value: "nginx"
应用配置:
kubectl apply -f <上述yaml文件路径> -n hm-kafka
3. 验证修复效果
检查Ingress资源状态,确认控制器已识别:
kubectl get ingress -n hm-kafka
查看STATUS列是否有地址,同时再次检查ingress-nginx日志,确认IngressClass错误已消失。等待一段时间后,查看Kafka Broker是否正常启动:
kubectl get pods -n hm-kafka
4. 可选:设置默认IngressClass
如果希望集群中所有Ingress资源默认使用nginx控制器,可将其设为默认IngressClass:
kubectl annotate ingressclass nginx ingressclass.kubernetes.io/is-default-class="true"
内容的提问来源于stack exchange,提问作者Hongbo Miao
相关产品推荐
相关产品推荐

