首页 > 解决方案 > nslookup:无法解析 kubernetes.default

问题描述

我正在尝试使用https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/在 kubernetes 中学习 DNS

  1. 我部署了busybox

  2. kubectl get pods busybox -o wide

    NAME      READY     STATUS    RESTARTS   AGE       IP           NODE
    busybox   1/1       Running   0          16m       10.200.1.5   worker-1
    
  3. kubectl exec -ti busybox -- nslookup kubernetes.default

    Server:    10.32.0.10
    Address 1: 10.32.0.10 kube-dns.kube-system.svc.cluster.local
    
    nslookup: can't resolve 'kubernetes.default'
    command terminated with exit code 1
    
  4. 是否需要修改worker-1节点的/etc/resolv.conf文件。目前 /etc/resolv.conf 内容如下

    nameserver 169.254.169.254
    search c.k8s-project-193906.internal google.internal**
    
  5. worker-1 lsb_release -a 的版本也没有可用的 LSB 模块。发行商 ID:Ubuntu 描述:Ubuntu 18.04.1 LTS 版本:18.04 代号:仿生

请帮我找出导致解析错误的配置。我是否需要更改 resolve.conf 文件并基于什么?

标签: kuberneteskube-dns

解决方案


您在最新版本的 busybox docker 镜像中遇到了一个错误。使用标签busybox:1.28而不是latest. 这个错误链接在这里

"Nslookup does not work in latest busybox image"
"1.27/1.28 are working , 1.29/1.29.1 are not"

在这里,标签失败了。busybox:latest

$ kubectl run busybox --image busybox:latest --restart=Never --rm -it busybox -- sh
If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes.default
Server:         10.96.0.10
Address:        10.96.0.10:53

** server can't find kubernetes.default: NXDOMAIN

*** Can't find kubernetes.default: No answer
/ # exit
pod "busybox" deleted

这是与标签成功的相同命令。busybox:1.28

$ kubectl run busybox --image busybox:1.28 --restart=Never --rm -it busybox -- sh
If you don't see a command prompt, try pressing enter.
/ # nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

Name:      kubernetes.default
Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
/ # exit
pod "busybox" deleted

推荐阅读