Merge pull request #7822 from thockin/dns

DNS: expose 53/TCP
This commit is contained in:
Vish Kannan 2015-05-07 09:34:52 -07:00
commit e25210d367
5 changed files with 55 additions and 30 deletions

View File

@ -1,11 +1,11 @@
apiVersion: v1beta3 apiVersion: v1beta3
kind: ReplicationController kind: ReplicationController
metadata: metadata:
name: kube-dns
namespace: default
labels: labels:
k8s-app: kube-dns k8s-app: kube-dns
kubernetes.io/cluster-service: "true" kubernetes.io/cluster-service: "true"
name: kube-dns
namespace: default
spec: spec:
replicas: {{ pillar['dns_replicas'] }} replicas: {{ pillar['dns_replicas'] }}
selector: selector:
@ -15,7 +15,6 @@ spec:
labels: labels:
k8s-app: kube-dns k8s-app: kube-dns
kubernetes.io/cluster-service: "true" kubernetes.io/cluster-service: "true"
name: kube-dns
spec: spec:
containers: containers:
- name: etcd - name: etcd
@ -31,7 +30,7 @@ spec:
- name: kube2sky - name: kube2sky
image: gcr.io/google_containers/kube2sky:1.4 image: gcr.io/google_containers/kube2sky:1.4
args: args:
# entrypoint = "/kube2sky" # command = "/kube2sky"
- -domain={{ pillar['dns_domain'] }} - -domain={{ pillar['dns_domain'] }}
- -kubecfg_file=/etc/dns_token/kubeconfig - -kubecfg_file=/etc/dns_token/kubeconfig
volumeMounts: volumeMounts:
@ -41,7 +40,7 @@ spec:
- name: skydns - name: skydns
image: gcr.io/google_containers/skydns:2015-03-11-001 image: gcr.io/google_containers/skydns:2015-03-11-001
args: args:
# entrypoint = "/skydns" # command = "/skydns"
- -machines=http://localhost:4001 - -machines=http://localhost:4001
- -addr=0.0.0.0:53 - -addr=0.0.0.0:53
- -domain={{ pillar['dns_domain'] }}. - -domain={{ pillar['dns_domain'] }}.
@ -49,6 +48,9 @@ spec:
- containerPort: 53 - containerPort: 53
name: dns name: dns
protocol: UDP protocol: UDP
- containerPort: 53
name: dns-tcp
protocol: TCP
livenessProbe: livenessProbe:
exec: exec:
command: command:

View File

@ -1,14 +1,19 @@
apiVersion: v1beta3
kind: Service kind: Service
apiVersion: v1beta1 metadata:
id: kube-dns name: kube-dns
namespace: default namespace: default
protocol: UDP
port: 53
portalIP: {{ pillar['dns_server'] }}
containerPort: 53
labels: labels:
k8s-app: kube-dns k8s-app: kube-dns
name: kube-dns
kubernetes.io/cluster-service: "true" kubernetes.io/cluster-service: "true"
spec:
selector: selector:
k8s-app: kube-dns k8s-app: kube-dns
portalIP: {{ pillar['dns_server'] }}
ports:
- name: dns
port: 53
protocol: UDP
- name: dns-tcp
port: 53
protocol: TCP

View File

@ -0,0 +1,6 @@
FROM debian:wheezy
MAINTAINER Tim Hockin "thockin@google.com"
RUN apt-get -q update && \
apt-get install -y dnsutils && \
apt-get clean

View File

@ -0,0 +1,8 @@
all:
@echo "try 'make image' or 'make push'"
image:
docker build -t gcr.io/google_containers/dnsutils .
push:
gcloud preview docker push gcr.io/google_containers/dnsutils

View File

@ -67,7 +67,9 @@ var _ = Describe("Services", func() {
probeCmd := "for i in `seq 1 600`; do " probeCmd := "for i in `seq 1 600`; do "
for _, name := range namesToResolve { for _, name := range namesToResolve {
probeCmd += fmt.Sprintf("wget -O /dev/null %s && echo OK > /results/%s;", name, name) // Resolve by TCP and UDP DNS.
probeCmd += fmt.Sprintf(`test -n "$(dig +notcp +noall +answer +search %s)" && echo OK > /results/udp@%s;`, name, name)
probeCmd += fmt.Sprintf(`test -n "$(dig +tcp +noall +answer +search %s)" && echo OK > /results/tcp@%s;`, name, name)
} }
probeCmd += "sleep 1; done" probeCmd += "sleep 1; done"
@ -102,8 +104,8 @@ var _ = Describe("Services", func() {
}, },
}, },
{ {
Name: "pinger", Name: "querier",
Image: "gcr.io/google_containers/busybox", Image: "gcr.io/google_containers/dnsutils",
Command: []string{"sh", "-c", probeCmd}, Command: []string{"sh", "-c", probeCmd},
VolumeMounts: []api.VolumeMount{ VolumeMounts: []api.VolumeMount{
{ {
@ -141,16 +143,18 @@ var _ = Describe("Services", func() {
expectNoError(wait.Poll(time.Second*2, time.Second*60, func() (bool, error) { expectNoError(wait.Poll(time.Second*2, time.Second*60, func() (bool, error) {
failed = []string{} failed = []string{}
for _, name := range namesToResolve { for _, name := range namesToResolve {
for _, proto := range []string{"udp", "tcp"} {
testCase := fmt.Sprintf("%s@%s", proto, name)
_, err := c.Get(). _, err := c.Get().
Prefix("proxy"). Prefix("proxy").
Resource("pods"). Resource("pods").
Namespace(api.NamespaceDefault). Namespace(api.NamespaceDefault).
Name(pod.Name). Name(pod.Name).
Suffix("results", name). Suffix("results", testCase).
Do().Raw() Do().Raw()
if err != nil { if err != nil {
failed = append(failed, name) failed = append(failed, testCase)
Logf("Lookup using %s for %s failed: %v\n", pod.Name, name, err) }
} }
} }
if len(failed) == 0 { if len(failed) == 0 {