Googleコンテナエンジンに何ヶ月も問題なく動作している単純なコンテナがあります。突然、私は外部ドメインを解決できません。トラブルシューティングでは、何度もコンテナを再作成し、クラスタバージョンを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コールが同様に失敗します。KUBE-DNSポッドを取得するとき
# kubectl exec -ti busybox -- nslookup kubernetes.default
nslookup: can't resolve 'kubernetes.default'
二つは、チェックしようとすると
# 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ポッドのエラー:
# 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の内容を設定しても動作しないようです。