Zookeeper 为什么Kafka没有开始部署在本地k8上?

0sgqnhkj  于 5个月前  发布在  Apache
关注(0)|答案(2)|浏览(69)

我有一台安装了docker + k8s(从docker启用)的windows机器为了在k8s中创建Kafka示例,我选择了here
要部署Kafka,请使用以下命令:

kubectl create namespace kafka
kubectl create -f 'https://strimzi.io/install/latest?namespace=kafka' -n kafka
kubectl apply -f https://strimzi.io/examples/latest/kafka/kafka-persistent-single.yaml -n kafka

字符串
一切顺利,但当我重新启动笔记本电脑,Kafka豆荚开始与错误(屏幕从透镜)
x1c 0d1x的数据
当我打开日志,我看到zookeeper连接错误当打开zookeeper pod日志,我看到这样的错误

2023-12-09 18:06:49,991 INFO Created server with tickTime 2000 ms minSessionTimeout 4000 ms maxSessionTimeout 40000 ms clientPortListenBacklog -1 datadir /var/lib/zookeeper/data/version-2 snapdir /var/lib/zookeeper/data/version-2 (org.apache.zookeeper.server.ZooKeeperServer) [QuorumPeer[myid=1](plain=127.0.0.1:12181)(secure=0.0.0.0:2181)]
2023-12-09 18:06:49,991 ERROR Couldn't bind to my-cluster-zookeeper-0.my-cluster-zookeeper-nodes.kafka.svc/<unresolved>:2888 (org.apache.zookeeper.server.quorum.Leader) [QuorumPeer[myid=1](plain=127.0.0.1:12181)(secure=0.0.0.0:2181)]
java.net.SocketException: Unresolved address
    at java.base/java.net.ServerSocket.bind(ServerSocket.java:380)
    at java.base/java.net.ServerSocket.bind(ServerSocket.java:342)
    at org.apache.zookeeper.server.quorum.Leader.createServerSocket(Leader.java:322)
    at org.apache.zookeeper.server.quorum.Leader.lambda$new$0(Leader.java:301)
    at java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
    at java.base/java.util.concurrent.ConcurrentHashMap$KeySpliterator.forEachRemaining(ConcurrentHashMap.java:3573)
    at java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
    at java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
    at java.base/java.util.stream.ForEachOps$ForEachOp.evaluateSequential(ForEachOps.java:150)
    at java.base/java.util.stream.ForEachOps$ForEachOp$OfRef.evaluateSequential(ForEachOps.java:173)


我尝试将k8s和docker重置为出厂设置,尝试更改docker的资源(增加内存空间),但错误是相同的
更新:
列表权限

dns日志

这意味着coredns-5dd 5756 b68-qhp 5 q pod无法连接到192.168.65.7:53
重新启动k8s节点后,我看到在相同的dns日志错误

[ERROR] plugin/errors: 2 5593748469660065637.885187837306804871. HINFO: read udp 10.1.0.27:42685->192.168.65.7:53: i/o timeout
[ERROR] plugin/errors: 2 5593748469660065637.885187837306804871. HINFO: read udp 10.1.0.27:44025->192.168.65.7:53: i/o timeout

9nvpjoqh

9nvpjoqh1#

我的工作是在pc启动后重新启动节点,我使用了这样的bat文件

@echo OFF
echo start docker and k8s..
timeout 20

echo stop node k8s..
kubectl cordon docker-desktop
kubectl delete pod my-cluster-kafka-0 -n kafka
kubectl drain docker-desktop --delete-emptydir-data  --ignore-daemonsets --delete-local-data --force
timeout 20

kubectl uncordon docker-desktop
echo start k8s node..
echo pod status
kubectl get pods -n kafka
timeout 60

echo pod status
kubectl get pods -n kafka
timeout 60

字符串
然后我启动它使用gpedit.exe当开始在pc上工作

sq1bmfud

sq1bmfud2#

  • 注意事项:此回复部分使用GenAI技术构建,目前正在由我本人(该社区的新成员)审查其准确性和是否符合Stack Overflow的指导方针。我正在熟悉社区标准和行为准则。*

看起来你在使用Strimzi在Kubernetes上部署Kafka时遇到了两个不同的问题,我猜是:

  1. Kafka pod无法绑定到Zookeeper服务,因为出现“Unresolved address”错误。
  2. CoreDNS pod无法解析某些IP,这对于Kubernetes集群内的服务发现至关重要。
    要逐一解决这些潜在问题,请执行以下操作:

Issue 1:Kafka Pod绑定Zookeeper

错误消息“Couldn 't bind to my-cluster-zookeeper-0.my-cluster-zookeeper-headless.Kafka.svc”可能表示服务发现问题。这可能是因为Zookeeper headless服务未正确设置,或者Kafka代理试图绑定到无法解析的主机名。

解决方法:

  • 确保您的Zookeeper pod运行时没有问题。
  • 尝试使用kubectl get svc -n kafka检查Zookeeper无头服务,并确保它正确指向Zookeeper pod。
  • 确认Zookeeper的Kafka代理配置(server.properties中的zookeeper.connect)正确。

Issue 2:CoreDNS解析问题

DNS解析问题可能由CoreDNS pod无法连接到Kubernetes API表示。这通常是由于网络配置错误或资源限制。

解决步骤:

  • 详细检查CoreDNS pod日志以获取任何线索:kubectl logs -n kube-system -l k8s-app=kube-dns
  • 验证CoreDNS ConfigMap是否存在任何错误配置。
  • 确保没有网络策略阻止CoreDNS Pod的流量。
  • 确保您的Docker Desktop和Kubernetes分配了足够的资源,因为DNS问题有时可能是资源匮乏的症状。

其他故障排除步骤:

  • 使用kubectl describe pod <kafka-pod-name> -n kafka获取有关Kafka pod无法启动原因的详细日志。
  • 检查Kafka名称空间中的事件是否存在异常:kubectl get events -n kafka
  • 如果适用,请查看任何持久存储问题,因为Kafka需要一个持久卷才能正常工作。

还值得注意的是,Docker Desktop的Kubernetes集群是用于开发目的的,可能与生产集群的行为不同。请确保您使用的是Docker Desktop提供的兼容版本的Strimzi和Kubernetes。
如果这些步骤不能解决问题,请提供其他日志和配置详细信息以进行进一步诊断。

相关问题