如何阻止kube-dns将请求转发到Google的名称服务器(8.8.8.8:53和8.8.4.4:53)? 我只想发布pod仅供内部使用,这意味着pod中的容器根本不应该连接到外部。 当Zookeeper客户端使用主机名连接到Zookeeper服务器时(例如zkCli.sh -server zk-1.zk-headless),客户端需要10秒钟将其状态从[正在连接]更改为[已连接]。 我怀疑kube-dns的原因是,使用pods的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找到了以下内容:
我一直在使用kubeadm启动Kubernete,我找不到修改环境变量的方法并设置skydns的属性值。
如何阻止kube-dns将请求转发到kubeadm部署的内部Kubernetes集群外部?
答案 0 :(得分:1)
我认为没有一个选项可以完全阻止kube-dns
插件转发请求。肯定没有kubeadm
中的选项。
您最好的选择是在kubeadmin启动群集后自行编辑kube-dns
Deployment
(例如kubectl edit -n kube-system deploy kube-dns
)并更改适合您的内容。
您可能希望尝试将上游名称服务器更改为8.8.8.8以外的其他内容, 可由群集访问。您应该可以通过将--nameservers=x.x.x.x
添加到args
容器的kubedns
来实现这一目标。