我在使用kube-up.sh
部署的AWS上使用Kubernetes v1.0.6。
群集正在使用kube-dns
。
$ kubectl get svc kube-dns --namespace=kube-system
NAME LABELS SELECTOR IP(S) PORT(S)
kube-dns k8s-app=kube-dns,kubernetes.io/cluster-service=true,kubernetes.io/name=KubeDNS k8s-app=kube-dns 10.0.0.10 53/UDP
哪种方法正常。
$ kubectl exec busybox -- nslookup kubernetes.default
Server: 10.0.0.10
Address 1: 10.0.0.10 ip-10-0-0-10.eu-west-1.compute.internal
Name: kubernetes.default
Address 1: 10.0.0.1 ip-10-0-0-1.eu-west-1.compute.internal
这是广告连播的resolv.conf
。
$ kubectl exec busybox -- cat /etc/resolv.conf
nameserver 10.0.0.10
nameserver 172.20.0.2
search default.svc.cluster.local svc.cluster.local cluster.local eu-west-1.compute.internal
是否可以让容器使用额外的名称服务器?
我有一个基于DNS的辅助服务发现Oon让我们说192.168.0.1)我希望我的kubernetes容器能够用于dns解析。
PS。 kubernetes 1.1解决方案也是可以接受的:)
非常感谢您提前, 乔治
答案 0 :(得分:2)
DNS addon README有一些细节。基本上,pod将继承其运行的节点的resolv.conf
设置,因此您可以将额外的DNS服务器添加到节点' /etc/resolv.conf
。 kubelet
也需要--resolv-conf
argument,这可能为您提供更明确的方式来注入额外的DNS服务器。但是,我还没有在任何地方看到该标志。
答案 1 :(得分:1)
在Kuberenetes(可能)1.2中,我们将转向一个假设nameservers
可以互换的模型。当不同的名称服务器提供不同的DNS子集时,有太多的解析器会中断,这里没有我们可以指出的真实规范。
换句话说,我们将开始从容器的合并resolv.conf中删除主机的名称服务器记录,并使我们自己的DNS服务器成为唯一的nameserver
行。我们的DNS将能够将请求转发给上游名称服务器。
答案 2 :(得分:1)
对于那些使用Kubernetes airports <- read.csv("http://bl.ocks.org/mbostock/raw/7608400/airports.csv", stringsAsFactors=FALSE)
airportsUS <- airports
map <- borders("usa", colour="black", fill="white", size = .3) #map USA continent
airportsmap <- ggplot(airportsUS) + map
print(airportsmap + geom_point(aes(x=airportsUS$longitude,
y=airportsUS$latitude),
shape=3, size = .1, color = "red")+
theme(legend.position = "top")+
scale_x_continuous(limits = c(-125, -67))+
scale_y_continuous(limits = c(25, 50))+
ggtitle("Airports"))
的人来说,标记kube-dns
和环境变量-nameservers
不再可用。
SKYDNS_NAMESERVERS
现在,要么将名称服务器放在主机Usage of /kube-dns:
--alsologtostderr log to standard error as well as files
--config-map string config-map name. If empty, then the config-map will not used. Cannot be used in conjunction with federations flag. config-map contains dynamically adjustable configuration.
--config-map-namespace string namespace for the config-map (default "kube-system")
--dns-bind-address string address on which to serve DNS requests. (default "0.0.0.0")
--dns-port int port on which to serve DNS requests. (default 53)
--domain string domain under which to create names (default "cluster.local.")
--healthz-port int port on which to serve a kube-dns HTTP readiness probe. (default 8081)
--kube-master-url string URL to reach kubernetes master. Env variables in this flag will be expanded.
--kubecfg-file string Location of kubecfg file for access to kubernetes master service; --kube-master-url overrides the URL part of this; if neither this nor --kube-master-url are provided, defaults to service account tokens
--log-backtrace-at traceLocation when logging hits line file:N, emit a stack trace (default :0)
--log-dir string If non-empty, write log files in this directory
--log-flush-frequency duration Maximum number of seconds between log flushes (default 5s)
--logtostderr log to standard error instead of files (default true)
--stderrthreshold severity logs at or above this threshold go to stderr (default 2)
-v, --v Level log level for V logs
--version version[=true] Print version information and quit
--vmodule moduleSpec comma-separated list of pattern=N settings for file-filtered logging
上,要么从节点继承DNS,要么使用自定义resolv.conf
并将其添加到带有标记resolv.conf
的Kubelet正如here
答案 3 :(得分:0)
我最终设法通过配置SkyDNS添加额外的名称服务器来轻松解决这个问题,您只需添加SkyDNS复制控制器中SkyDNS docs中定义的环境变量SKYDNS_NAMESERVERS
即可。它影响最小,不依赖于节点更改等。
env:
- name: SKYDNS_NAMESERVERS
value: 10.0.0.254:53,10.0.64.254:53