"kube-dns"サービスがKubernetesクラスタの外で照会できるように公開しようとしています。これを行うために、 "Service"定義を編集して "type"を "ClusterIP"から "NodePort"に変更しました。クラスタ外のクエリに対してkube-dnsサービスを公開するにはどうすればよいですか?
しかし、ノードポートでクエリを実行しようとすると、TCPセッション(Telnetでテスト)を取得できますが、DNSサーバから応答が得られないようです(digでテスト)。
「kube-dns」ポッドにある各コンテナのログを見てきましたが、何か不都合なものは表示されません。さらに、(実行中のコンテナからの)クラスタ内からDNSを照会することは問題なく動作するように見えます。
誰もが以前にkube-dnsサービスを公開しようとしましたか?もしそうなら、追加のセットアップ手順はありますか、私のためのデバッグアドバイスはありますか?次のように
サービス定義は次のとおりです。
$ kubectl get service kube-dns -o yaml --namespace kube-system
apiVersion: v1
kind: Service
metadata:
...
spec:
clusterIP: 10.0.0.10
ports:
- name: dns
nodePort: 31257
port: 53
protocol: UDP
targetPort: 53
- name: dns-tcp
nodePort: 31605
port: 53
protocol: TCP
targetPort: 53
selector:
k8s-app: kube-dns
sessionAffinity: None
type: NodePort
status:
loadBalancer: {}
実際、UDPポートの照会は期待どおりに機能します。有難うございます!興味深いバグ。 – srkiNZ84
NodePortサービスが設計された際に見落とされたケース。それはあなたのために働いてうれしい。 –
Kubernetes 1.3でバグが修正されました。 – iTayb