标签: coredns

coredns 无法正确解析服务名称

我使用 Kubernetes v1.11.3,它使用 coredns 来解析主机或服务名称,但我发现在 pod 中,解析无法正常工作,

# kubectl get services --all-namespaces -o wide
NAMESPACE     NAME          TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)          AGE       SELECTOR
default       kubernetes    ClusterIP   10.96.0.1       <none>        443/TCP          50d       <none>
kube-system   calico-etcd   ClusterIP   10.96.232.136   <none>        6666/TCP         50d       k8s-app=calico-etcd
kube-system   kube-dns      ClusterIP   10.96.0.10      <none>        53/UDP,53/TCP    50d       k8s-app=kube-dns
kube-system   kubelet       ClusterIP   None            <none>        10250/TCP        32d       <none>
testalex      grafana       NodePort    10.96.51.173    <none>        3000:30002/TCP   2d        app=grafana
testalex      k8s-alert     NodePort    10.108.150.47   <none>        9093:30093/TCP   13m       app=alertmanager
testalex      prometheus    NodePort    10.96.182.108   <none>        9090:30090/TCP   16m       app=prometheus
Run Code Online (Sandbox Code Playgroud)

以下命令无响应

# …
Run Code Online (Sandbox Code Playgroud)

kubernetes coredns

5
推荐指数
1
解决办法
1万
查看次数

如何将 Cloudflare 1.1.1.1 与 Kubernetes DNS 结合使用

我想在 Kubernetes 中使用 Cloudflare 的1.1.1.1 和 1.0.0.1名称服务器,以及DNS over TLS。它看起来像我可以用做核心的DNS。我需要以某种方式设置以下内容:

  • IPv4:1.1.1.11.0.0.1
  • IPv6:2606:4700:4700::11112606:4700:4700::1001
  • TLS 服务器名称: tls.cloudflare-dns.com

我应该是什么ConfigMap样子?我已经在下面开始了:

apiVersion: v1
kind: ConfigMap
data:
  upstreamNameservers: |
    ["1.1.1.1", "1.0.0.1"]
Run Code Online (Sandbox Code Playgroud)

dns nameservers cloudflare kubernetes coredns

5
推荐指数
1
解决办法
730
查看次数

在Kubernetes中调试DNS解析

我已经Ubuntu 16.04使用以下命令初始化了kubernetes v1.13.1集群:

sudo kubeadm init --token-ttl=0 --apiserver-advertise-address=192.168.88.142
Run Code Online (Sandbox Code Playgroud)

weave使用以下方式安装:

kubectl apply -f "https://cloud.weave.works/k8s/net?k8s-version=$(kubectl version | base64 | tr -d '\n')"
Run Code Online (Sandbox Code Playgroud)

我有10个raspberry pi充当工作程序节点并连接到集群。所有这些都运行良好的部署。这些节点正在运行Pod,这些Pod尝试连接到物联网中心visdwk-azure-devices.net并发布一些数据。在10个节点中,只有少数几个节点可以连接,其他节点则抛出错误unable to connect to iot hub。我进行了ping测试,发现他们在ping google的公共IP地址时无法ping google。

这使我认为coredns吊舱有问题。我按照此文档进行了以下测试。

Pod中包含以下内容 /etc/resolv.conf

nameserver 10.96.0.10
search visdwk.svc.cluster.local svc.cluster.local cluster.local
options ndots:5
Run Code Online (Sandbox Code Playgroud)

在我看来这很正常。所有coredns pod都运行良好。

coredns-86c58d9df4-42xqc               1/1     Running   8         1d11h
coredns-86c58d9df4-p6d98               1/1     Running   7         1d6h
Run Code Online (Sandbox Code Playgroud)

我也nslookup kubernetes.default从busybox容器中完成了操作,并获得了正确的响应。以下是的日志coredns-86c58d9df4-42xqc

.:53
2019-02-08T08:40:10.038Z [INFO] CoreDNS-1.2.6
2019-02-08T08:40:10.039Z [INFO] linux/amd64, go1.11.2, 756749c …
Run Code Online (Sandbox Code Playgroud)

dns ubuntu docker kubernetes coredns

5
推荐指数
1
解决办法
1056
查看次数

getaddrinfo:名称解析 kubernetes + coredns 暂时失败

我们有一项可以批量发送大量事件的服务。它基本上打开多个 http POST 连接。

自从我们将服务转移到 kubernetes 以来,我们getaddrinfo: Temporary failure in name resolution时不时就会出错。(大多数呼叫都有效,但有些失败,这很奇怪。

谁能解释为什么以及如何解决?

kubernetes coredns

5
推荐指数
1
解决办法
1万
查看次数

Kubernetes - 如何编辑 CoreDNS 核心文件配置映射?

我有一个非常标准的 Kubernetes 安装,在 Ubuntu 上作为单节点集群运行。我正在尝试配置 CoreDNS 以解析我的 Kubernetes 集群中的所有内部服务和一些外部域名。到目前为止,我只是在试验。我首先创建了一个 busybox pod,如下所示:https : //kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/

在我对核心文件进行更改之前,一切都按照指南中的描述工作。我看到几个问题:

  1. 我编辑了默认的核心文件kubectl -n kube-system edit configmap coredns并替换.:53cluster.local:53. 等待之后,事情看起来很有希望。 google.com决议开始失败,而kubernetes.default.svc.cluster.local继续成功。然而,kubernetes.default决议也开始失败。这是为什么?在busybody pod 中仍然有一个搜索条目。所有改变的是核心文件。svc.cluster.local/etc/resolv.conf
  2. 我尝试向核心文件添加额外的节/块(同样,通过编辑配置映射)。我添加了一个简单的块:

    .:53{
        log
    }
    
    Run Code Online (Sandbox Code Playgroud)

    似乎核心文件无法编译或什么的。Pod 看起来很健康,不会向日志报告任何错误,但请求都挂起并失败。

我曾尝试添加日志插件,但这不起作用,因为该插件仅适用于与插件匹配的域,并且域名不匹配或核心文件已损坏。

为了透明,这是我的新核心文件:

cluster.local:53 {
    errors
    log
    health
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       upstream
       fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    forward . /etc/resolv.conf
    cache 30
    loop
    reload
    loadbalance
}
Run Code Online (Sandbox Code Playgroud)

dns kubernetes kube-dns coredns

5
推荐指数
1
解决办法
7891
查看次数

Kubernetes DNS 查找问题和 /etc/resolv.conf 文件中的“无效”

我已经部署了一个由一个主节点和两个工作节点组成的 Kubernetes 集群,使用kubeadmFlannel 网络驱动程序(所以我将--pod-network-cidr=10.244.0.0/16标志传递给kubeadm init)。

这些节点使用 VPN 进行通信,以便:

  • 主节点IP地址为10.0.0.170
  • 工人 1 IP 地址是 10.0.0.247
  • 工人 2 IP 地址是 10.0.0.35

当我创建一个新的 pod 并尝试 ping google 时,出现以下错误:

/ # ping google.com
ping: bad address 'google.com'
Run Code Online (Sandbox Code Playgroud)

我按照Kubernetes DNS 调试解析文档页面中的说明进行操作:

$ kubectl exec -ti busybox -- nslookup kubernetes.default
Server:    10.96.0.10
Address 1: 10.96.0.10

nslookup: can't resolve 'kubernetes.default'
command terminated with exit code 1
Run Code Online (Sandbox Code Playgroud)

首先检查本地DNS配置

$ kubectl exec busybox cat /etc/resolv.conf
nameserver 10.96.0.10
search default.svc.cluster.local svc.cluster.local cluster.local …
Run Code Online (Sandbox Code Playgroud)

kubernetes kube-dns kubeadm coredns

5
推荐指数
1
解决办法
4731
查看次数

从 pod 内解析外部域不起作用

发生了什么

从 pod 内解析外部域失败并显示SERVFAIL消息。在日志中,提到了i/o 超时错误。

我期望发生的事情

应该从 pod 成功解析外部域。

如何重现它

apiVersion: v1
kind: Pod
metadata:
  name: dnsutils
  namespace: default
spec:
  containers:
  - name: dnsutils
    image: gcr.io/kubernetes-e2e-test-images/dnsutils:1.3
    command:
      - sleep
      - "3600"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always
Run Code Online (Sandbox Code Playgroud)
  1. 创建上面的 pod(来自调试 DNS 解析帮助页面)。

  2. kubectl exec dnsutils -it -- nslookup google.com

    pig@pig202:~$ kubectl exec dnsutils -it -- nslookup google.com
    Server:      10.152.183.10
    Address: 10.152.183.10#53
    
    ** server can't find google.com.mshome.net: SERVFAIL
    
    command terminated with exit code 1
    
    Run Code Online (Sandbox Code Playgroud)
  3. 还运行 kubectl exec …

dns kubernetes coredns

5
推荐指数
1
解决办法
3277
查看次数

MySQL 与 kubernetes 集群集成时出现 DNS 错误

发生了什么:
我尝试使用externalName规范创建一个服务端点,以允许在 Pod 内运行的微服务访问本地主机上的本地 MySQL 服务器。

这是 yaml 文件的相关部分:

apiVersion: v1 
kind: Service 
metadata: 
  name: mysql 
  namespace: default 
spec: 
  type: ExternalName 
  externalName: host.minikube.internal
Run Code Online (Sandbox Code Playgroud)

您期望发生的情况:
我希望能够连接,但我的 SpringBoot 容器显示 mysql 连接不起作用。我已经测试了微服务,它可以在 Docker 中使用相同的 MySQL 数据库运行。

如何重现它(尽可能少且精确):
正常安装 minikube 和 kubernetes,使用上面给出的 mysql 服务运行https://k8s.io/examples/admin/dns/dnsutils.yamldnsutils中的映像。

我们还需要知道什么吗?:
我已经测试了此处详细的故障排除(https://kubernetes.io/docs/tasks/administer-cluster/dns-debugging-resolution/),但它没有解决问题。运行时:

kubectl exec -i -t dnsutils -- nslookup mysql.default
Run Code Online (Sandbox Code Playgroud)

我收到以下消息:

Server: 10.96.0.10
Address: 10.96.0.10#53

mysql.default.svc.cluster.local canonical name = host.minikube.internal.
** server can't find host.minikube.internal: SERVFAIL

command terminated with exit code 1
Run Code Online (Sandbox Code Playgroud)

我已经验证它 …

kubernetes minikube coredns

5
推荐指数
1
解决办法
1287
查看次数

更改后,如何强制Kubernetes CoreDNS重新加载其配置映射?

我正在运行Kubernetes 1.11,并尝试配置Kubernetes集群以首先检查本地名称服务器。我阅读了Kubernetes网站上有关自定义CoreDNS的说明,并使用仪表板为CoreDNS编辑了系统ConfigMap。得到的corefile值为:

.:53 {
    errors
    health
    kubernetes cluster.local in-addr.arpa ip6.arpa {
       pods insecure
       upstream    192.168.1.3 209.18.47.61
       fallthrough in-addr.arpa ip6.arpa
    }
    prometheus :9153
    proxy . /etc/resolv.conf
    cache 30
    reload
}
Run Code Online (Sandbox Code Playgroud)

您可以将本地地址视为第一个上游名称服务器。我的问题是,这似乎没有产生任何影响。我有一个运行ping&nslookup的容器,它们都无法解析本地名称服务器中的名称。

我暂时通过在一些需要的Pod规范中指定名称服务器配置来解决此问题,但我不喜欢这种解决方法。

如何强制CoreDNS根据更改后的ConfigMap更新?我可以看到它是kube-system名称空间中的Deployment,但是我还没有找到有关如何重新加载它或以其他方式响应已更改的配置的文档。

kubernetes coredns

4
推荐指数
2
解决办法
3838
查看次数

CrashLoopBackOff中的Kubernetes CoreDNS

我知道这个问题被问了十遍,但没有任何帮助通过互联网搜索。

我的设置:

CentOS Linux release 7.5.1804 (Core)
Docker Version: 18.06.1-ce
Kubernetes: v1.12.3
Run Code Online (Sandbox Code Playgroud)

由官方指南和本指南安装:https : //www.techrepublic.com/article/how-to-install-a-kubernetes-cluster-on-centos-7/

CoreDNS窗格处于Error / CrashLoopBackOff状态。

kube-system   coredns-576cbf47c7-8phwt                 0/1     CrashLoopBackOff   8          31m
kube-system   coredns-576cbf47c7-rn2qc                 0/1     CrashLoopBackOff   8          31m
Run Code Online (Sandbox Code Playgroud)

我的/etc/resolv.conf:

nameserver 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

还尝试了我的本地dns-resolver(router)

nameserver 10.10.10.1
Run Code Online (Sandbox Code Playgroud)

设置和初始化:

kubeadm init --apiserver-advertise-address=10.10.10.3 --pod-network-cidr=192.168.1.0/16
kubectl apply -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml
Run Code Online (Sandbox Code Playgroud)

我尝试通过以下方法解决此问题:编辑coredns:root @ kub〜]#kubectl编辑cm coredns -n kube-system并进行更改

proxy . /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

直接到

proxy . 10.10.10.1
Run Code Online (Sandbox Code Playgroud)

或代理。8.8.8.8

还试图:

kubectl -n kube-system get deployment coredns -o yaml |   sed 's/allowPrivilegeEscalation: false/allowPrivilegeEscalation: true/g' |   kubectl apply -f -
Run Code Online (Sandbox Code Playgroud)

仍然没有任何帮助。 …

docker kubernetes centos7 coredns

4
推荐指数
2
解决办法
4216
查看次数