K8S容器访问kafka报“Error connecting to node xxx:9092”,本文介绍几种解决方法。
报错如下
原因参考下文的分析
# 为什么kafka客户端需要配置 /etc/hosts文件
解决方法
- 使能pod和node节点同一网络
hostNetwork: true,
dnsPolicy: ClusterFirstWithHostNet
-
添加HostAliases字段
-
集群的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
然后重启kube-system下的coredns的实例。