当前位置: 首页 > 面试题库 >

Coredns无法访问主机名称服务器

狄凯
2023-03-14
问题内容

我已经按照Kelsey
Hightower的指示从头开始创建了一个kubernetes集群。经过检查,一切正常,没有任何错误,但是在部署了第一个应用程序之后,我发现我的应用程序无法解析DNS。

我检查了我的coredns日志,并看到以下条目:

.:53
2018/10/16 12:31:45 [INFO] CoreDNS-1.2.2
2018/10/16 12:31:45 [INFO] linux/amd64, go1.11, eb51e8b
CoreDNS-1.2.2
linux/amd64, go1.11, eb51e8b
2018/10/16 12:31:45 [INFO] plugin/reload: Running configuration MD5 = 06122de1a2d6c43092ab48d05478dc82
2018/10/16 12:44:27 [ERROR] 2 google.com. A: unreachable backend: read udp 192.168.65.142:51219->172.10.0.2:53: i/o timeout
2018/10/16 12:44:29 [ERROR] 2 google.com. A: unreachable backend: read udp 192.168.65.142:39967->172.10.0.2:53: i/o timeout
2018/10/16 12:44:31 [ERROR] 2 google.com. A: unreachable backend: read udp 192.168.65.142:40187->172.10.0.2:53: i/o timeout

加上Kelsey的文档,我已经在Docker之上安装了calico。

我的怀疑:

我已经在Docker之上安装了Calico,但是我的kubelet运行时已配置为可与Containerd一起使用。我要塞入印花布吊舱,并且好像它具有网络。但是没有一个带容器的豆荚。但是我找不到在Containered上运行印花布的方法。

我的Kubelet服务配置:

[Unit]
Description=Kubernetes Kubelet
Documentation=https://github.com/GoogleCloudPlatform/kubernetes
After=containerd.service
Requires=containerd.service

[Service]
ExecStart=/usr/bin/kubelet \
  --container-runtime=remote \
  --container-runtime-endpoint=unix:///var/run/containerd/containerd.sock \
  --image-pull-progress-deadline=2m \
  --config=/var/lib/kubelet/kubelet-config.yaml \
  --kubeconfig=/var/lib/kubelet/kubeconfig-kubelet \
  --network-plugin=cni \
  --cni-conf-dir=/etc/cni/net.d \
  --cni-bin-dir=/opt/cni/bin \
  --register-node=true \
  --cloud-provider=aws \
  --v=2

Restart=on-failure
RestartSec=5

[Install]
WantedBy=multi-user.target

和我的kubelet配置yaml文件

kind: KubeletConfiguration
apiVersion: kubelet.config.k8s.io/v1beta1
authentication:
  anonymous:
    enabled: false
  webhook:
    enabled: true
  x509:
    clientCAFile: "/etc/kubernetes/pki/ca.pem"
authorization:
  mode: Webhook
clusterDomain: "${cluster_domain}"
clusterDNS:
  - "172.10.0.10"
podCIDR: "172.10.0.0/16"
resolvConf: "/run/systemd/resolve/resolv.conf"
runtimeRequestTimeout: "15m"
tlsCertFile: "/etc/kubernetes/pki/worker.pem"
tlsPrivateKeyFile: "/etc/kubernetes/pki/worker-key.pem"

我在节点机器上的resolv.conf文件:

nameserver 172.10.0.2

我可以看到Pod可以连接到coredns
pod,但是coredns不能通过端口53连接到172.10.0.2。在主机上,我可以通过telnet到该端口并得到答案。

最好,


问题答案:

这是一个棘手的问题。我遇到了相同的问题,并通过以下方式解决了它,它也应该为您工作。要将Calico安装到您的群集,您需要修补Calico
YAML。依靠文档,如何安装Calico:

为了实现您的目标,您需要:为Calico创建RBAC:

kubectl apply -f \
https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/rbac-kdd.yaml

下载带有Calico配置的YAML:

curl \
https://docs.projectcalico.org/v3.2/getting-started/kubernetes/installation/hosted/kubernetes-datastore/calico-networking/1.7/calico.yaml -o

编辑文件calico.yaml

- name: CALICO_IPV4POOL_CIDR
   value: "10.200.0.0/16"

粘贴到该部分中value,然后10.200.0.0/16保存。并应用:

kubectl apply -f calico.yaml


 类似资料:
  • 问题内容: 我在Mac OS X上使用自制软件设置了jenkins,它 可以通过主机正常工作,或者无法通过主机名/ ipaddress访问jenkins实例: 即使从本地计算机(詹金斯主机本身)也无法访问这两个链接。同时执行命令并正常工作。 问题答案: 事实证明,启动代理配置为仅侦听127.0.0.1(或localhost)。要修复该詹金斯经纪人的plist: 并修改为而不是

  • 我正在尝试安装带有2个节点的kubernetes集群(1.7.2版)。并使用weave作为cni。当加入另一个节点时,kubeadm会报错主机名 我使用的是 centos 7.3 已安装的yum包 步骤: 跑步的时候 我在weave-kube pod中看到以下错误:

  • 问题内容: 当我尝试将网页加载到终端时,它给出了错误。 我的PC上有互联网,并尝试通过家庭互联网连接。因此,我这里没有任何代理人参与。 并再次尝试,但并不幸运。 但是,如果我使用IP代替域名,则可以正常工作。 有什么线索吗? 问题答案: 问题是: 启用IPV6 DNS服务器错误 这是我的解决方法: IPV6禁用 开放终端 键入并输入登录为超级用户 输入root密码 键入将目录更改为 键入以在那里创

  • 问题内容: 我刚刚使用自制软件在Mac上使用Docker- Toolbox安装了Docker:使用自制软件安装了Docker 在使用Rails创建并配置了容器之后,Postgres并启动了docker-compose,一切看起来都很好,但是我无法从主机访问Web服务器。 输出 当我输入谷歌浏览器的网址http://0.0.0.0:8000/我得到 所以我尝试了 具有以下输出: 当我尝试使用Chro

  • 工作节点1上的Curl对群集IP来说是最合适的(这是运行pod的节点) Curl在其他工作节点上也失败:

  • 我有一个问题,基本上是关于OpenShift Origin路线的澄清。 我设法在本地VMWare安装的CentOS上设置OpenShift Origin版本1.4.0-rc1。我还能够为 nginx 拉取和设置映像,pod 状态显示正在运行。也能够在服务endpoint上访问nginx。现在,根据文档,如果我想在托管系统之外访问此nginx实例,我需要创建一个路由,我也这样做了。 混乱出现在Ope