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

我已经按照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

以上是 Coredns无法访问主机名称服务器 的全部内容, 来源链接: utcz.com/qa/426686.html

回到顶部