Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes 库伯内特斯:卡夫卡吊舱可回收性问题来自另一个吊舱_Kubernetes_Apache Kafka_Kubectl_Amazon Eks_Kube Proxy - Fatal编程技术网

Kubernetes 库伯内特斯:卡夫卡吊舱可回收性问题来自另一个吊舱

Kubernetes 库伯内特斯:卡夫卡吊舱可回收性问题来自另一个吊舱,kubernetes,apache-kafka,kubectl,amazon-eks,kube-proxy,Kubernetes,Apache Kafka,Kubectl,Amazon Eks,Kube Proxy,我知道以下信息不足以追踪问题,但我仍然需要一些解决方案 我们有亚马逊EKS集群 目前,我们面临卡夫卡吊舱问题的可达性 环境: 共有10个节点,可用区为ap-south-1a、1b 我有一个卡夫卡星团掌舵图安装的三个副本 我有一个zookeeper Helm图表安装的三个副本 Kafka在端口19092上使用外部播发侦听器 Kafka使用内部网络负载平衡器提供服务 我已经部署了一个测试吊舱来检查卡夫卡吊舱的可达性。 我们正在使用基于云地图的DNS作为广告侦听器 工作: 当我从ec2运行telnet

我知道以下信息不足以追踪问题,但我仍然需要一些解决方案

我们有亚马逊EKS集群

目前,我们面临卡夫卡吊舱问题的可达性

环境:

共有10个节点,可用区为ap-south-1a、1b 我有一个卡夫卡星团掌舵图安装的三个副本 我有一个zookeeper Helm图表安装的三个副本 Kafka在端口19092上使用外部播发侦听器 Kafka使用内部网络负载平衡器提供服务 我已经部署了一个测试吊舱来检查卡夫卡吊舱的可达性。 我们正在使用基于云地图的DNS作为广告侦听器 工作:

当我从ec2运行telnet命令时,比如telnet10.0.1.4519092。它按预期工作。IP 10.0.1.45是负载平衡器IP。 当我从ec2运行telnet命令时,比如telnet 10.0.1.69 31899。它按预期工作。IP 10.0.1.69是实际节点的IP,31899是节点端口。 问题:

当我从测试舱运行相同的命令时。比如telnet 10.0.1.4519092。它有时会工作,有时会出现错误,如telnet:无法连接到远程主机:连接超时 这个问题与kube代理有关。我们需要帮助来解决这个问题

谁能帮我指点一下吗?
我可以重新启动kube代理吗?它会影响其他POD/部署吗?

我认为这个问题是由AWS在评论中提到的NLB TCP纯特性引起的

简言之

要确认这是根本原因,您可以验证当telnet工作时,kafka pod和客户端pod不在同一个EC2节点中。当它们在同一台EC2服务器上时,telnet就会失败

解决这一问题至少有两种方法:

使用K8s内部网络-参考K8s服务的URL 每个K8s服务都有内部使用的含义,即仅使用K8s网络,而无需到达负载均衡器并再次返回K8s。您可以通过LB将其远程登录,而不是节点端口。 也就是说,假设您的卡夫卡服务名为卡夫卡。然后,您可以在kafka服务公开的端口上telnet kafka.svc.cluster.local

用于确保客户端和kafka从不安排在同一节点中。
哦,如中所述,您可能需要使该服务无头。

您是否查看了server.properties中的广告_侦听器设置?您是否使用NLB而不是ALB或常规ELB?我使用NLB。所有卡夫卡配置在pod之外都可以正常工作。如果我使用kafkacat实用程序从EC2使用它,那么它工作得非常好。但只在吊舱内面对问题。因此,卡夫卡的部署没有问题。这是一件只有库伯内特西可以按照你的建议尝试的事情。希望它能有所帮助!请注意你的服务类型,以防你需要一个无头服务-见帖子的最后一行,我已经尝试了无头服务,它正在工作