Kubernetes dns外部资源

时间:2017-09-18 11:26:46

标签: docker dns kubernetes kubectl kubelet

我按照tutorial安装了kubernetes。

我的一个容器尝试从外部域获取资源,例如google.com。但它失败了,因为kubernetes dns没有使用外部名称解析。

如何使用dns 8.8.8.8配置kubernetes?

3 个答案:

答案 0 :(得分:1)

容器和节点中nslookup google.com的结果是什么?

如果广告连播的dnsPolicy是ClusterFirst,则应将google.com DNS查询转发到该节点指定的上游DNS。

显示kube-dns容器配置和日志也很有用。

Default lookup flow

答案 1 :(得分:0)

我们正在研究这个怪癖。 silverfox已经提到了" dnsPolicy" - 默认情况下,pod配置为从托管节点继承dns配置。

我还没有尝试过(我们通过api控制我们的pod规范),但显然你可以通过将Pods dnsPolicy指定为" None"来覆盖它。在pod yaml。您需要使用dnsConfig自定义pod的配置。

yml中的

spec:
   dnsPolicy: None
   dnsConfig:
     nameservers:
       - 1.1.1.1
       - 8.8.8.8

该文档编写得非常好:https://kubernetes.io/docs/concepts/services-networking/dns-pod-service/

答案 2 :(得分:0)

kubernetes 无法访问您的本地节点 DNS 服务器。 您可以使用以下命令手动配置它以执行此操作。

编辑 CoreDNS 配置: kubectl -n kube-system edit configmap coredns

换行: forward . /etc/resolve.conf { 到: forward . 8.8.8.8 {

重启 CoreDNS pod: kubectl --namespace=kube-system delete pod -l k8s-app=kube-dns

查看更多详情: https://runkiss.blogspot.com/2021/01/kubernetes-coredns-external-resolving.html