我在Google容器引擎上有一个简单的容器,它已运行数月而没有任何问题。突然间,我无法解决任何外部域名。在故障排除中,我多次重新创建容器,并将群集版本升级到1.4.7,以尝试解决而无需更改。
要尽可能地规范应用代码,即使是基本的node.js代码也无法解析外部域:
const dns = require('dns');
dns.lookup('nodejs.org', function(err, addresses, family) {
console.log('addresses:', addresses);
});
/* logs 'undefined' */
在本地计算机或本地docker容器上运行的同样按预期工作。
此kubectl调用也失败了:
# kubectl exec -ti busybox -- nslookup kubernetes.default
nslookup: can't resolve 'kubernetes.default'
两个人在获取kube-dns pod时出现(当然不确定是否预期)
# kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME READY STATUS RESTARTS AGE
kube-dns-v20-v8pd6 3/3 Running 0 1h
kube-dns-v20-vtz4o 3/3 Running 0 1h
在尝试检查DNS pod中的错误时,两者都这样说:
# kubectl logs --namespace=kube-system pod/kube-dns-v20-v8pd6 -c kube-dns
Error from server: container kube-dns is not valid for pod kube-dns-v20-v8pd6
我希望内部创建的kube-dns没有正确地提取外部DNS结果或其他一些链接消失了。
我接受几乎所有的解决方法(如果存在),因为这是一个生产应用程序 - 也许可以在Kubernetes控制器YAML文件或其他地方手动设置名称服务器。在Dockerfile中设置/etc/resolv.conf的内容似乎不起作用。
答案 0 :(得分:1)
刚检查过,在我们自己的群集中,我们通常有3个kube-dns pod,所以有些东西似乎就在那里。
这是什么意思:kybectl describe rc kube-dns-v20 --namespace=kube-system
杀死kube-dns吊舱会发生什么? (rc应该自动重启它们)
使用特定名称服务器执行nslookup会发生什么? nslookup nodejs.org 8.8.8.8