2017-09-20 7 views
0

私は、一般的にうまく動作しているk8sを使用してACS Windowsクラスタセットアップを取得しました。私はASP.NET Core webapiとワーカーアプリケーションコンテナを導入しました。これらの2つのコンテナは、ACSでもローカルで正常に動作します。Windowsコンテナからの外部インターネットDNS解決失敗

これらは機能していても機能していますが、外部のインターネットリソースにアクセスしようとすると突然DNS解決エラーが発生することがあります。私は、例外を見ている:

System.Net.Http.WinHttpException:サーバー名またはアドレスは は突然、彼らは罰金解決にアクセスしようとしている

リソースを解決し、することができませんでした解決を止める。その後、不確定な時間(数分、20分、またはそれも数時間後)が再開し、間欠的にクリアされます。これらの外部リソースは、CosmosDB、Azure Queue、Logglyと呼ばれるサードパーティのロギングサービスです(これらはすべて大きなWebプロパティであり、ここでは問題はないことを指摘してください)。また、2つのコンテナが必ずしも同時にDNSを失うわけではないことに注意してください。

Iは、容器内のコマンドシェルを開いてみた:

kubectl EXEC -it {podname} - PowerShellの

そしてサイト要求するPowerShellを使用して:

invoke-webrequest -uri www.google.com -outfile test.txt

取得コンテンツテスト。 txt

...うまくいき、google.comにアクセスできます。だから私はこれをどのようにデバッグするのか分かりません。 ACSにk8の既知の問題がありますか?

単純なServer 2016ホストに同じコンテナを配備しても、問題はまったく見られません。だから、それはk8sかACSクラスター自体の周りを回っているようです。私は異なる地域(異なるk8バージョンを使用する)で4〜5回ACSクラスターを再構築して、まったく同じ問題を見ています。

これは私の主なブロッカーです。外部のインターネットアクセスは、明らかに非常に基本的でコアな機能です。私のwebapiとワーカーアプリは、それなしで完全に壊れています。

答えて

0

私はMicrosoftのWindows DNSチームと間接的に連絡しており、この問題の一時的な修正を提案しました。

Set-Service dnscache -StartupType disabled 
Stop-Service dnscache 

再配備を、あなたはより良い運を持っている必要があります。

は問題を呈するされているすべてのポッドのdockerfileに以下の2つのコマンドを追加します。私は今2日間稼働していて、ゼロの失敗を見てきましたが、以前は数時間で失敗を見ていました。キャッシングの不足のためにDNSの解決に時間がかかることに気付くかもしれませんが、私にとっては、これは完全な失敗よりも優れています。また、本番用の推奨戦略ではありません。

0

Windowsコンテナのネットワークコードに奇妙な疑いがありますが(過去に問題がありました)、dnsリゾルバを実行している小さなコンテナをセットアップし、kube-dns config mapのアップストリームサーバとして追加することができます。問題が外部ネームサーバに向かうkube-dnsに関連する場合、ローカルキャッシュが役立ちます。

別のオプションは、IPアドレスをハードコーディングすることで、どちらかのhttps://kubernetes.io/docs/concepts/services-networking/service/#services-without-selectors のようにまたはホストを使用してサービスを利用して

https://kubernetes.io/docs/concepts/services-networking/add-entries-to-pod-etc-hosts-with-host-aliases/で説明したように、HostsAliasesを持つファイルでしょうが、それがお役に立てば幸い - 断続的なDNSの問題は、時にはあなたがあなたのように感じることができます私の経験では解決されていないケースがどこかで壊れたと思っています。

+0

提案に感謝します。私は確かにIP(ハードのコード)をハードコーディングするつもりはないし、正直言って私は自分でDNSをホストするつもりはない。どちらも私をより大きな問題に悩まされています(また、私は入力を感謝します)。率直に言えば、ACSやWindowsコンテナの人が手助けをする必要があります。あるいは、ACSが私にとってあまりにも早すぎるかもしれません。 – BrettRobi