如何防止 kube-dns 将请求转发到 Google 的名称服务器(8.8.8.8:53 和 8.8.4.4:53)?我只想启动 pod 仅供内部使用,这意味着 pod 中的容器根本不应该连接到外部。当 Zookeeper 客户端使用主机名(例如 zkCli.sh -server zk-1.zk-headless)连接到 Zookeeper 服务器时,客户端需要 10 秒才能将其状态从 [Connecting] 更改为 [Connected]。我怀疑 kube-dns 的原因是,使用 pod 的 IP 地址,客户端会立即连接。当我查看 kube-dns 的日志时,发现以下两行:
07:25:35:170773 1 logs.go:41] skydns: failure to forward request "read udp 10.244.0.13:43455->8.8.8.8:53: i/o timeout"
07:25:39:172847 1 logs.go:41] skydns: failure to forward request "read udp 10.244.0.13:42388->8.8.8.8:53: i/o timeout"
客户端开始连接服务器的时间大约是 07:25:30。
我在私有集群上运行 Kubernetes,内部服务器通过 http_proxy/https_proxy 与 Internet 通信,这意味着我无法连接到 8.8.8.8 进行名称解析,AFAIK。
我从https://github.com/skynetservices/skydns找到以下内容:
- 名为SKYDNS_NAMESERVERS的环境变量的默认值为“ 8.8.8.8:53,8.8.4.4:53”
- 我可以通过将no_rec设置为true来实现我的目的
我一直在使用 kubeadm 启动 Kubernetes,但找不到修改环境变量和设置 skydns 属性值的方法。
如何防止 kube-dns 将请求转发到由 kubeadm 部署的内部 Kubernetes 集群的外部?