概括
我只能为default
命名空间解析主机名。来自和针对其他名称空间的请求,例如kube-system
,从 coredns 返回 NXDOMAIN。是否需要进行一些授权?
细节
除了使用 VirtualBox 而不是 GCP 之外,我已经通过艰难的方式遵循 Kubernetes来建立一个学习集群。除了非默认命名空间中的 DNS 查询外,其他所有方法似乎都有效。更具体地说:
- 作品(从默认命名空间运行):kubernetes.default
- 不起作用(从 kube-system 命名空间运行,获取 NXDOMAIN):kubernetes.kube-system
配置
我已升级到 Coredns 1.12,因为 1.2.2 大约 50% 的时间都无法解决任何问题。对于 1.12 请求,100% 的时间解析(如果在default
命名空间中)。
我必须通过删除“循环”和“代理”(用转发替换代理)插件来编辑配置(在配置映射中)以使其正常工作。我的配置如下:
.:53 {
forward . 192.168.99.254:53 # dnsmasq on host machine
log
errors
health
kubernetes cluster.local in-addr.arpa ip6.arpa {
pods insecure
upstream
fallthrough in-addr.arpa ip6.arpa
}
prometheus :9153
cache 30
reload
loadbalance
故障排除
按照本指南,我看到:
豆荚运行正常
$ kubectl get pods --namespace=kube-system -l k8s-app=kube-dns
NAME READY STATUS RESTARTS AGE
coredns-6f8fb48d88-dz9cd 1/1 Running 0 14m
coredns-6f8fb48d88-s5rvp 1/1 Running 0 14m
检查控制台我看到了健康的日志记录
2019-05-24T04:41:13.990Z [INFO] plugin/reload: Running configuration MD5 = 7c717fabd578b2514cf60fee426fabc6
2019-05-24T04:41:13.992Z [INFO] CoreDNS-1.5.0
2019-05-24T04:41:13.992Z [INFO] linux/amd64, go1.12.2, e3f9a80
DNS 服务可用:
$ kubectl get svc --namespace=kube-system
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kube-dns ClusterIP 10.32.0.10 <none> 53/UDP,53/TCP 18d
端点暴露:
$ kubectl get ep kube-dns --namespace=kube-system
NAME ENDPOINTS AGE
kube-dns 10.200.21.33:53,10.200.22.17:53,10.200.21.33:53 + 1 more... 18d
如上所述,DNS 可以工作,但只能来自default
命名空间。
看来这是busybox图像的问题-如果我使用通用Ubuntu,则记录可以解决,并且需要记录的服务能够获取它们。例如,metrics-server 可以解析节点。