「kube-dns」サービスを公開して、Kubernetes クラスターの外部で照会できるようにしようとしています。これを行うために、「サービス」定義を編集して「タイプ」を「ClusterIP」から「NodePort」に変更しましたが、これは正常に機能しているように見えました。
ただし、ノード ポートでクエリを実行しようとすると、TCP セッションを取得できます (Telnet でテスト) が、DNS サーバーから応答を取得できないようです (dig でテスト)。
「kube-dns」Pod の各コンテナのログを確認しましたが、問題はありません。さらに、クラスター内から (実行中のコンテナーから) 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: {}