You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

升级Kafka后Milvus DataNode无法连接,回滚仍异常求助

问题排查:Milvus DataNode无法解析Kafka Headless Service域名

问题背景

运行Milvus 2.3.11,使用Bitnami Kafka作为日志代理,将Kafka从bitnami/kafka:3.1.0-debian-10-r52升级到3.7.0-debian-12-r6后,DataNode持续抛出以下错误:

FAIL|rdkafka#consumer-6| [thrd:GroupCoordinator]: GroupCoordinator: milvus-kafka-0.milvus-kafka-headless.milvus-database.svc.cluster.local:9092: Failed to resolve 'milvus-kafka-0.milvus-kafka-headless.milvus-database.svc.cluster.local:9092': Name or service not known (after 2ms in state CONNECT, 1 identical error(s) suppressed)

同一命名空间内的其他Pod执行nslookup可正常解析该域名,回滚Kafka版本、重启Kafka和DataNode Pod后问题仍存在。

排查步骤

  • 检查DataNode Pod的DNS配置
    进入DataNode Pod,查看DNS配置文件,确认nameserver指向集群CoreDNS,且搜索域包含正确的后缀:

    cat /etc/resolv.conf
    

    正常配置应包含类似以下内容:

    nameserver 10.96.0.10
    search milvus-database.svc.cluster.local svc.cluster.local cluster.local
    options ndots:5
    
  • 在DataNode Pod内测试DNS解析
    直接在DataNode Pod内部执行解析命令,验证是否真的无法解析目标域名:

    nslookup milvus-kafka-0.milvus-kafka-headless.milvus-database.svc.cluster.local
    dig milvus-kafka-0.milvus-kafka-headless.milvus-database.svc.cluster.local
    

    如果解析失败,说明DataNode的DNS配置存在异常;如果解析成功,问题可能出在librdkafka的客户端配置上。

  • 调整librdkafka的DNS缓存策略
    Milvus依赖librdkafka连接Kafka,新版本Kafka可能触发了DNS缓存问题,尝试在Milvus配置中添加或修改以下参数:

    enable.dns.cache=false
    dns.ttl=0
    

    对应环境变量设置:

    KAFKA_CONSUMER_ENABLE_DNS_CACHE=false
    KAFKA_CONSUMER_DNS_TTL=0
    
  • 验证Kafka Headless Service的端点状态
    检查Kafka Headless Service是否正确关联到Kafka Pod:

    # 查看Service详情
    kubectl describe service milvus-kafka-headless -n milvus-database
    # 查看端点列表
    kubectl get endpoints milvus-kafka-headless -n milvus-database
    

    确认端点中包含milvus-kafka-0 Pod的IP,且Pod的就绪探针状态正常。

  • 检查Kafka的监听配置
    验证Kafka升级后的listeners和advertised.listeners配置是否正确,确保Headless Service域名被正确设置:

    kubectl exec -it milvus-kafka-0 -n milvus-database -- cat /opt/bitnami/kafka/config/server.properties | grep -E "(listeners|advertised.listeners)"
    

    正确配置应包含类似:

    listeners=PLAINTEXT://:9092
    advertised.listeners=PLAINTEXT://milvus-kafka-0.milvus-kafka-headless.milvus-database.svc.cluster.local:9092
    
  • 查看CoreDNS日志
    检查集群CoreDNS的日志,确认DataNode的DNS请求是否被正确处理:

    kubectl logs -n kube-system -l k8s-app=kube-dns
    

    搜索目标域名的请求记录,排查是否有解析失败的错误日志。

内容的提问来源于stack exchange,提问作者rachel song

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:40:59