K8S容器访问kafka报“Error connecting to node xxx:9092”

490 阅读1分钟

K8S容器访问kafka报“Error connecting to node xxx:9092”,本文介绍几种解决方法。

报错如下

image.png

原因参考下文的分析

# 为什么kafka客户端需要配置 /etc/hosts文件

解决方法

  1. 使能pod和node节点同一网络
hostNetwork: truednsPolicy: ClusterFirstWithHostNet
  1. 添加HostAliases字段

  2. 集群的coredns加映射

上面两种方法都是通过修改deployment.yaml,但是我是通过提交FlinkCluster来让Flink Operator来生成Flink集群(taskManager的pod实例报错“Error connecting to node xxx:9092”),我无法配置pod的yaml。

我通过修改K8S集群coredns配置,添加kafka的broker的hostname和IP之间的关系,实测有效!

kubectl get cm -n kube-system

kubectl edit cm coredns -n kube-system

image.png

然后重启kube-system下的coredns的实例。