kubernetes pods 回复 DNS 查询的意外来源
kubernetes pods replying with unexpected source for DNS queries
我有一个 kubernetes + flannel 设置。 Flannel 配置为 {"Network": "10.200.0.0/16", "SubnetLen":24, "Backend": {"Type": "vxlan"}}
.
我用 --service-cluster-ip-range=10.32.0.0/24
启动了 apiserver。据我了解,pods 地址由 flannel 管理,service-cluster-ip-运行ge 由 iptables 管理。我 运行 kubedns 并尝试从 kubernetes 工作节点执行挖掘以进行部署,我 运行ning.
$ dig phonebook.default.svc.cluster.local @10.32.0.10 +short
10.32.0.7
但是,当我 运行 从 pod 中的容器之一 运行ning 执行相同的命令时,我得到:
$ dig phonebook.default.svc.cluster.local
;; reply from unexpected source: 10.200.16.10#53, expected 10.32.0.10#53
;; reply from unexpected source: 10.200.16.10#53, expected 10.32.0.10#53
;; reply from unexpected source: 10.200.16.10#53, expected 10.32.0.10#53
; <<>> DiG 9.9.5-9+deb8u8-Debian <<>> phonebook.default.svc.cluster.local
;; global options: +cmd
;; connection timed out; no servers could be reached
知道这里可能出了什么问题吗?
向 kube-proxy 添加 --masquerade-all
标志,为我解决了这个问题。似乎 iptables 没有在没有此标志的情况下伪装请求,这导致 dns 查找失败。
我有一个 kubernetes + flannel 设置。 Flannel 配置为 {"Network": "10.200.0.0/16", "SubnetLen":24, "Backend": {"Type": "vxlan"}}
.
我用 --service-cluster-ip-range=10.32.0.0/24
启动了 apiserver。据我了解,pods 地址由 flannel 管理,service-cluster-ip-运行ge 由 iptables 管理。我 运行 kubedns 并尝试从 kubernetes 工作节点执行挖掘以进行部署,我 运行ning.
$ dig phonebook.default.svc.cluster.local @10.32.0.10 +short
10.32.0.7
但是,当我 运行 从 pod 中的容器之一 运行ning 执行相同的命令时,我得到:
$ dig phonebook.default.svc.cluster.local
;; reply from unexpected source: 10.200.16.10#53, expected 10.32.0.10#53
;; reply from unexpected source: 10.200.16.10#53, expected 10.32.0.10#53
;; reply from unexpected source: 10.200.16.10#53, expected 10.32.0.10#53
; <<>> DiG 9.9.5-9+deb8u8-Debian <<>> phonebook.default.svc.cluster.local
;; global options: +cmd
;; connection timed out; no servers could be reached
知道这里可能出了什么问题吗?
向 kube-proxy 添加 --masquerade-all
标志,为我解决了这个问题。似乎 iptables 没有在没有此标志的情况下伪装请求,这导致 dns 查找失败。