我在Google Container Engine上有一個簡單的容器,它已運行數月,沒有問題。突然,我無法解析任何外部域。在進行故障排除時,我已經多次重新創建容器,並將羣集版本升級到1.4.7,試圖解決問題而無需更改。外部DNS解析在容器引擎中停止工作
爲了排除應用程序代碼進行儘可能多的,甚至是基本的Node.js代碼無法解析外部域:
const dns = require('dns');
dns.lookup('nodejs.org', function(err, addresses, family) {
console.log('addresses:', addresses);
});
/* logs 'undefined' */
在本地機器或本地搬運工集裝箱作品上的同跑預期。
這kubectl調用失敗,以及:
# kubectl exec -ti busybox -- nslookup kubernetes.default
nslookup: can't resolve 'kubernetes.default'
兩個顯示越來越KUBE-DNS吊艙(當然不知道這是預期)
# 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的內容似乎不起作用。