外部DNS解析在Container Engine中停止工作

时间:2017-01-17 00:01:02

标签: dns kubernetes google-cloud-platform google-kubernetes-engine

我在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的内容似乎不起作用。

1 个答案:

答案 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