Kubernetes.default nslookup 无法从不同的命名空间解析

标签 kubernetes centos weave coredns kube-apiserver

我在解决 kubernetes.default.svc.cluster.local 时遇到问题来自外部default命名空间

我在每个命名空间上运行两个busybox:1.30 pod,并且名称成功地从default 解析。仅命名空间

    [admin@devsvr3 ~]$ kubectl exec -n default -ti busybox -- nslookup kubernetes
    Server:    10.96.0.10
    Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local
    Name:      kubernetes
    Address 1: 10.96.0.1 kubernetes.default.svc.cluster.local
    [admin@devsvr3 ~]$ kubectl exec -n namespace-dev -ti busybox -- nslookup kubernetes
    Server:         10.96.0.10
    Address:        10.96.0.10:53
    ** server can't find kubernetes.namespace-dev.svc.cluster.local: NXDOMAIN
    *** Can't find kubernetes.svc.cluster.local: No answer
    *** Can't find kubernetes.cluster.local: No answer
    *** Can't find kubernetes.namespace-dev.svc.cluster.local: No answer
    *** Can't find kubernetes.svc.cluster.local: No answer
    *** Can't find kubernetes.cluster.local: No answer
    [admin@devsvr3 ~]$ 

我在气隙环境中运行 CentOS 7 kubernetes 集群并使用 weave net CNI 插件,这是我的 CoreDNS 配置
    apiVersion: v1
    data:
      Corefile: |
        .:53 {
            log
            errors
            health
            kubernetes cluster.local in-addr.arpa ip6.arpa {
              pods insecure
              upstream
              fallthrough in-addr.arpa ip6.arpa
            }
            prometheus :9153
            proxy . /etc/resolv.conf
            cache 30
            reload
            loadbalance
        }
    kind: ConfigMap
    metadata:
      creationTimestamp: "2019-01-28T10:59:25Z"
      name: coredns
      namespace: kube-system
      resourceVersion: "1177652"
      selfLink: /api/v1/namespaces/kube-system/configmaps/coredns
      uid: c6b5ddae-22eb-11e9-8689-0017a4770068

最佳答案

按照您的步骤,我确实遇到了同样的问题。但是,如果您使用此 yaml 创建 pod,则它可以正常工作。更改busybox 图像似乎最终会出现您描述的错误。将尝试找出原因。但目前这是解决方案。
apiVersion: v1 kind: Pod metadata: name: busybox namespace: namespace-dev spec: containers: - name: busybox image: busybox:1.28 command: - sleep - "3600" imagePullPolicy: IfNotPresent restartPolicy: Always
接着:kubectl exec -ti -n=namespace-dev busybox -- nslookup kubernetes.default它按预期工作并解释here .

/ # nslookup kubernetes
Server:    10.96.0.10
Address 1: 10.96.0.10 kube-dns.kube-system.svc.cluster.local

nslookup: can't resolve 'kubernetes'
/ # 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

关于Kubernetes.default nslookup 无法从不同的命名空间解析,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54582709/

相关文章:

kubernetes - 从集群中的容器更新部署

networking - Openshift/Kubernetes kube dns 最佳实践 (ndots = 5)

centos - 我在使用该功能时有一个问题。 `` `yum --仅下载 ```

kubernetes - kube-dns 和 weave-net 未启动

尽管 externalTrafficPolicy 设置为本地,但 Kubernetes 提供了内部源 IP

Kubernetes覆盖网络比较

kubernetes - 如何在 Stackdriver 日志中检测 GKE 自动升级节点

kubernetes - 在Azure Kubernetes Service(AKS)中使用Dask Kubernetes处理大数据

linux - 如何在启动时执行其他所有内容后执行命令?

php - 我需要 libphp7.so 模块来在 Centos 上配置 apache