我按照tutorial安装了kubernetes。
我的一个容器尝试从外部域获取资源,例如google.com。但它失败了,因为kubernetes dns没有使用外部名称解析。
如何使用dns 8.8.8.8配置kubernetes?
答案 0 :(得分:1)
容器和节点中nslookup google.com
的结果是什么?
如果广告连播的dnsPolicy是ClusterFirst,则应将google.com DNS查询转发到该节点指定的上游DNS。
显示kube-dns容器配置和日志也很有用。
答案 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