我试图将"kube-dns"服务暴露给Kubernetes集群外部进行查询。为了做到这一点,我编辑了"Service"的定义,将"type"从"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: {}