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

microk8s集群通过服务名访问报错Could not resolve host如何解决

问题原因

Kubernetes 内置的服务名DNS解析能力仅对集群内部Pod网络生效,你直接在宿主机节点执行curl访问服务名时,宿主机默认未配置K8s集群的CoreDNS作为解析服务器,因此无法解析httpenv这个服务域名。你的Deployment、Service创建逻辑均无问题,ClusterIP可正常访问也验证了服务本身运行正常。

排查&验证步骤
  • 第一步:确认microk8s DNS插件已开启
    执行以下命令检查DNS插件状态:

    microk8s status | grep dns
    

    若输出为dns: enabled则正常,若未开启执行以下命令启用:

    microk8s enable dns
    
  • 第二步:集群内部验证服务名解析
    启动一个临时测试Pod进入集群网络环境测试:

    microk8s kubectl run -it --rm --image busybox:1.28 test-dns -- sh
    

    在Pod终端内执行以下两个验证命令:

    1. 验证域名解析:
    nslookup httpenv.default.svc.cluster.local
    

    正常输出会返回你之前查到的httpenv服务的ClusterIP 10.152.183.91
    2. 验证服务访问:

    wget -qO- httpenv:8888
    

    正常会返回HTTP 200响应内容。

补充说明

Kubernetes服务名的完整域名格式为<服务名>.<命名空间>.svc.cluster.local,同一命名空间下的Pod可以省略后缀直接用服务名访问,跨命名空间访问需要加上对应命名空间后缀。
如果需要在宿主机临时使用服务名访问,可以将集群CoreDNS的IP添加到宿主机/etc/resolv.conf的nameserver列表最前面,CoreDNS的IP可通过microk8s kubectl get svc kube-dns -n kube-system查询。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:24:03