0

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の内容を設定しても動作しないようです。

答えて

1

私たちは通常、3つのkube-dnポッドを持っていますので、何か問題があると思われます。

これは何と言っています:kybectl describe rc kube-dns-v20 --namespace=kube-system

あなたはKUBE-DNSポッドを殺したときにどうなりますか? (rcは自動的にそれらを再起動するはずです)

特定のネームサーバーでnslookupを実行するとどうなりますか? nslookup nodejs.org 8.8.8.8

関連する問題