私はOpenshift Originのインストール(v.1.2.1、この問題を1.3.0で再現しました)、サービス名でDNSからポッドのIPを取得しようとしています。私のノードにIP 192.168.58.6があると仮定し、私はプロジェクト 'hz-test'でヘッドレスサービス 'hz'のポッドを探します。私は(ノードにインストールし、Kubernetes' SkyDNSに要求を転送している)UDP上でDNSMASQにDNS要求を送信しようとすると、すべてがうまくいく:DNSはポッドからTCPを介して動作しません
# dig +notcp +noall +answer hz.hz-test.svc.cluster.local @192.168.58.6
hz.hz-test.svc.cluster.local. 14 IN A 10.1.2.5
<and so on...>
をしかし、私はTCPへのトランスポートプロトコルを切り替えたときに、私が受け取ります次のエラーが:
# dig +tcp +noall +answer hz.hz-test.svc.cluster.local @192.168.58.6
;; communications error to 192.168.58.6#53: end of file
tcpdumpの出力に見た後、私は、発見したそのTCPコネクションを確立した後(SYN - SYN/ACK - ACK)dnsmasqのは、すぐにFIN/ACKを送り返し、そして時にDNSクライアントの試行この接続を使用して要求を送信するには、dnsmasqはDNS応答の代わりにRSTパケットを送り返します。私は自分自身のノードからTCPを介して同じDNSクエリを実行しようとしましたが、dnsmasqは通常の応答を返しました。つまり、TCP上で正常に動作し、ポッドから要求を実行しようとしたときに問題が発生しました。また、私はポッドからKubernetesのDNS(dnsmasqを避けて)に直接同じクエリを送信しようとしましたが、このクエリもOKでした。
なぜノード上のdnsmasqがポッドからのTCP要求を無視し、他の通信に問題がないのでしょうか?それは行動と思われますか?
ご意見やご感想をお寄せください。