我有 Windows 机器,安装了 docker + k8s(从 docker 启用)实例 为了在 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 pod 启动时出现错误(镜头屏幕)
当我打开日志时,我看到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的资源(增加内存空间)但错误是相同的
更新:
这意味着 coredns-5dd5756b68-qhp5q 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
注意:此回复部分是使用 GenAI 技术构建的,目前正在由我(该社区的新成员)审查其准确性和是否遵守 Stack Overflow 指南。我正在熟悉社区标准和行为准则。
一一解决这些潜在问题:
指示“无法绑定到 my-cluster-zookeeper-0.my-cluster-zookeeper-headless.kafka.svc”的错误消息可能表明存在服务发现问题。这可能是因为 Zookeeper 无头服务未正确设置,或者 Kafka 代理尝试绑定到不可解析的主机名。
解决方案要考虑的步骤:
kubectl get svc -n kafka
检查 Zookeeper 无头服务,并确保其正确指向 Zookeeper Pod。zookeeper.connect
中的server.properties
)正确。DNS 解析问题可能是因为 CoreDNS pod 无法连接到 Kubernetes API。这通常是由于网络配置错误或资源限制造成的。
解决步骤:
kubectl logs -n kube-system -l k8s-app=kube-dns
。kubectl describe pod <kafka-pod-name> -n kafka
获取有关 Kafka Pod 无法启动原因的更详细日志。kubectl get events -n kafka
。还值得注意的是,Docker Desktop 的 Kubernetes 集群用于开发目的,其行为可能与生产集群不同。确保您使用 Docker Desktop 提供的 Strimzi 和 Kubernetes 的兼容版本。
如果这些步骤无法解决问题,请提供其他日志和配置详细信息以供进一步诊断。