kubeadm: updated DNS deployment.
This commit is contained in:
		@@ -31,19 +31,17 @@ const (
 | 
				
			|||||||
	KubeSchedulerImage         = "scheduler"
 | 
						KubeSchedulerImage         = "scheduler"
 | 
				
			||||||
	KubeProxyImage             = "proxy"
 | 
						KubeProxyImage             = "proxy"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	KubeDNSImage            = "kubedns"
 | 
						KubeDNSImage        = "k8s-dns-kube-dns"
 | 
				
			||||||
	KubeDNSmasqImage        = "kube-dnsmasq"
 | 
						KubeDNSmasqImage    = "k8s-dns-dnsmasq"
 | 
				
			||||||
	KubeDNSmasqMetricsImage = "dnsmasq-metrics"
 | 
						KubeDNSSidecarImage = "k8s-dns-sidecar"
 | 
				
			||||||
	KubeExechealthzImage    = "exechealthz"
 | 
						Pause               = "pause"
 | 
				
			||||||
	Pause                   = "pause"
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	gcrPrefix   = "gcr.io/google_containers"
 | 
						gcrPrefix   = "gcr.io/google_containers"
 | 
				
			||||||
	etcdVersion = "3.0.14-kubeadm"
 | 
						etcdVersion = "3.0.14-kubeadm"
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	kubeDNSVersion        = "1.9"
 | 
						kubeDNSVersion        = "1.10.1"
 | 
				
			||||||
	dnsmasqVersion        = "1.4"
 | 
						dnsmasqVersion        = "1.10.1"
 | 
				
			||||||
	exechealthzVersion    = "1.2"
 | 
						kubeDNSSidecarVersion = "1.10.1"
 | 
				
			||||||
	dnsmasqMetricsVersion = "1.0"
 | 
					 | 
				
			||||||
	pauseVersion          = "3.0"
 | 
						pauseVersion          = "3.0"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -64,10 +62,9 @@ func GetCoreImage(image string, cfg *kubeadmapi.MasterConfiguration, overrideIma
 | 
				
			|||||||
func GetAddonImage(image string) string {
 | 
					func GetAddonImage(image string) string {
 | 
				
			||||||
	repoPrefix := kubeadmapi.GlobalEnvParams.RepositoryPrefix
 | 
						repoPrefix := kubeadmapi.GlobalEnvParams.RepositoryPrefix
 | 
				
			||||||
	return map[string]string{
 | 
						return map[string]string{
 | 
				
			||||||
		KubeDNSImage:            fmt.Sprintf("%s/%s-%s:%s", repoPrefix, "kubedns", runtime.GOARCH, kubeDNSVersion),
 | 
							KubeDNSImage:        fmt.Sprintf("%s/%s-%s:%s", repoPrefix, KubeDNSImage, runtime.GOARCH, kubeDNSVersion),
 | 
				
			||||||
		KubeDNSmasqImage:        fmt.Sprintf("%s/%s-%s:%s", repoPrefix, "kube-dnsmasq", runtime.GOARCH, dnsmasqVersion),
 | 
							KubeDNSmasqImage:    fmt.Sprintf("%s/%s-%s:%s", repoPrefix, KubeDNSmasqImage, runtime.GOARCH, dnsmasqVersion),
 | 
				
			||||||
		KubeDNSmasqMetricsImage: fmt.Sprintf("%s/%s-%s:%s", repoPrefix, "dnsmasq-metrics", runtime.GOARCH, dnsmasqMetricsVersion),
 | 
							KubeDNSSidecarImage: fmt.Sprintf("%s/%s-%s:%s", repoPrefix, KubeDNSSidecarImage, runtime.GOARCH, kubeDNSSidecarVersion),
 | 
				
			||||||
		KubeExechealthzImage:    fmt.Sprintf("%s/%s-%s:%s", repoPrefix, "exechealthz", runtime.GOARCH, exechealthzVersion),
 | 
							Pause:               fmt.Sprintf("%s/%s-%s:%s", repoPrefix, Pause, runtime.GOARCH, pauseVersion),
 | 
				
			||||||
		Pause:                   fmt.Sprintf("%s/%s-%s:%s", repoPrefix, "pause", runtime.GOARCH, pauseVersion),
 | 
					 | 
				
			||||||
	}[image]
 | 
						}[image]
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,19 +84,19 @@ func TestGetAddonImage(t *testing.T) {
 | 
				
			|||||||
		{"matches nothing", ""},
 | 
							{"matches nothing", ""},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			KubeDNSImage,
 | 
								KubeDNSImage,
 | 
				
			||||||
			fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, "kubedns", runtime.GOARCH, kubeDNSVersion),
 | 
								fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, KubeDNSImage, runtime.GOARCH, kubeDNSVersion),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			KubeDNSmasqImage,
 | 
								KubeDNSmasqImage,
 | 
				
			||||||
			fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, "kube-dnsmasq", runtime.GOARCH, dnsmasqVersion),
 | 
								fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, KubeDNSmasqImage, runtime.GOARCH, dnsmasqVersion),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			KubeExechealthzImage,
 | 
								KubeDNSSidecarImage,
 | 
				
			||||||
			fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, "exechealthz", runtime.GOARCH, exechealthzVersion),
 | 
								fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, KubeDNSSidecarImage, runtime.GOARCH, kubeDNSSidecarVersion),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		{
 | 
							{
 | 
				
			||||||
			Pause,
 | 
								Pause,
 | 
				
			||||||
			fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, "pause", runtime.GOARCH, pauseVersion),
 | 
								fmt.Sprintf("%s/%s-%s:%s", gcrPrefix, Pause, runtime.GOARCH, pauseVersion),
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	for _, rt := range tokenTest {
 | 
						for _, rt := range tokenTest {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -26,7 +26,7 @@ import (
 | 
				
			|||||||
	"k8s.io/kubernetes/pkg/api"
 | 
						"k8s.io/kubernetes/pkg/api"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/resource"
 | 
						"k8s.io/kubernetes/pkg/api/resource"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/api/v1"
 | 
						"k8s.io/kubernetes/pkg/api/v1"
 | 
				
			||||||
	clientset "k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
 | 
						"k8s.io/kubernetes/pkg/client/clientset_generated/clientset"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
 | 
						"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
 | 
				
			||||||
	"k8s.io/kubernetes/pkg/util/intstr"
 | 
						"k8s.io/kubernetes/pkg/util/intstr"
 | 
				
			||||||
)
 | 
					)
 | 
				
			||||||
@@ -82,16 +82,14 @@ func createKubeProxyPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
				
			|||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
func createKubeDNSPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
					func createKubeDNSPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
				
			||||||
 | 
					 | 
				
			||||||
	kubeDNSPort := int32(10053)
 | 
						kubeDNSPort := int32(10053)
 | 
				
			||||||
	dnsmasqPort := int32(53)
 | 
						dnsmasqPort := int32(53)
 | 
				
			||||||
	dnsMasqMetricsUser := int64(0)
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return v1.PodSpec{
 | 
						return v1.PodSpec{
 | 
				
			||||||
		Containers: []v1.Container{
 | 
							Containers: []v1.Container{
 | 
				
			||||||
			// DNS server
 | 
								// DNS server
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				Name:  "kube-dns",
 | 
									Name:  "kubedns",
 | 
				
			||||||
				Image: images.GetAddonImage(images.KubeDNSImage),
 | 
									Image: images.GetAddonImage(images.KubeDNSImage),
 | 
				
			||||||
				Resources: v1.ResourceRequirements{
 | 
									Resources: v1.ResourceRequirements{
 | 
				
			||||||
					Limits: v1.ResourceList{
 | 
										Limits: v1.ResourceList{
 | 
				
			||||||
@@ -105,8 +103,8 @@ func createKubeDNSPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
				
			|||||||
				LivenessProbe: &v1.Probe{
 | 
									LivenessProbe: &v1.Probe{
 | 
				
			||||||
					Handler: v1.Handler{
 | 
										Handler: v1.Handler{
 | 
				
			||||||
						HTTPGet: &v1.HTTPGetAction{
 | 
											HTTPGet: &v1.HTTPGetAction{
 | 
				
			||||||
							Path:   "/healthz-kubedns",
 | 
												Path:   "/healthcheck/kubedns",
 | 
				
			||||||
							Port:   intstr.FromInt(8080),
 | 
												Port:   intstr.FromInt(10054),
 | 
				
			||||||
							Scheme: v1.URISchemeHTTP,
 | 
												Scheme: v1.URISchemeHTTP,
 | 
				
			||||||
						},
 | 
											},
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
@@ -165,8 +163,8 @@ func createKubeDNSPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
				
			|||||||
				LivenessProbe: &v1.Probe{
 | 
									LivenessProbe: &v1.Probe{
 | 
				
			||||||
					Handler: v1.Handler{
 | 
										Handler: v1.Handler{
 | 
				
			||||||
						HTTPGet: &v1.HTTPGetAction{
 | 
											HTTPGet: &v1.HTTPGetAction{
 | 
				
			||||||
							Path:   "/healthz-dnsmasq",
 | 
												Path:   "/healthcheck/dnsmasq",
 | 
				
			||||||
							Port:   intstr.FromInt(8080),
 | 
												Port:   intstr.FromInt(10054),
 | 
				
			||||||
							Scheme: v1.URISchemeHTTP,
 | 
												Scheme: v1.URISchemeHTTP,
 | 
				
			||||||
						},
 | 
											},
 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
@@ -201,8 +199,8 @@ func createKubeDNSPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
				
			|||||||
				},
 | 
									},
 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
			{
 | 
								{
 | 
				
			||||||
				Name:  "dnsmasq-metrics",
 | 
									Name:  "sidecar",
 | 
				
			||||||
				Image: images.GetAddonImage(images.KubeDNSmasqMetricsImage),
 | 
									Image: images.GetAddonImage(images.KubeDNSSidecarImage),
 | 
				
			||||||
				LivenessProbe: &v1.Probe{
 | 
									LivenessProbe: &v1.Probe{
 | 
				
			||||||
					Handler: v1.Handler{
 | 
										Handler: v1.Handler{
 | 
				
			||||||
						HTTPGet: &v1.HTTPGetAction{
 | 
											HTTPGet: &v1.HTTPGetAction{
 | 
				
			||||||
@@ -216,16 +214,11 @@ func createKubeDNSPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
				
			|||||||
					SuccessThreshold:    1,
 | 
										SuccessThreshold:    1,
 | 
				
			||||||
					FailureThreshold:    5,
 | 
										FailureThreshold:    5,
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				// The code below is a workaround for https://github.com/kubernetes/contrib/blob/master/dnsmasq-metrics/Dockerfile.in#L21
 | 
					 | 
				
			||||||
				// This is just the normal mode (to run with user 0), all other containers do it except for this one, which may lead to
 | 
					 | 
				
			||||||
				// that the DNS pod fails if the "nobody" _group_ doesn't exist. I think it's a typo in the Dockerfile manifest and
 | 
					 | 
				
			||||||
				// that it should be "USER nobody:nogroup" instead of "USER nobody:nobody". However, this fixes the problem.
 | 
					 | 
				
			||||||
				SecurityContext: &v1.SecurityContext{
 | 
					 | 
				
			||||||
					RunAsUser: &dnsMasqMetricsUser,
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				Args: []string{
 | 
									Args: []string{
 | 
				
			||||||
					"--v=2",
 | 
										"--v=2",
 | 
				
			||||||
					"--logtostderr",
 | 
										"--logtostderr",
 | 
				
			||||||
 | 
										fmt.Sprintf("--probe=kubedns,127.0.0.1:10053,kubernetes.default.svc.%s,5,A", cfg.Networking.DNSDomain),
 | 
				
			||||||
 | 
										fmt.Sprintf("--probe=dnsmasq,127.0.0.1:53,kubernetes.default.svc.%s,5,A", cfg.Networking.DNSDomain),
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				Ports: []v1.ContainerPort{
 | 
									Ports: []v1.ContainerPort{
 | 
				
			||||||
					{
 | 
										{
 | 
				
			||||||
@@ -236,35 +229,10 @@ func createKubeDNSPodSpec(cfg *kubeadmapi.MasterConfiguration) v1.PodSpec {
 | 
				
			|||||||
				},
 | 
									},
 | 
				
			||||||
				Resources: v1.ResourceRequirements{
 | 
									Resources: v1.ResourceRequirements{
 | 
				
			||||||
					Requests: v1.ResourceList{
 | 
										Requests: v1.ResourceList{
 | 
				
			||||||
						v1.ResourceName(v1.ResourceMemory): resource.MustParse("10Mi"),
 | 
											v1.ResourceName(v1.ResourceMemory): resource.MustParse("20Mi"),
 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
			},
 | 
					 | 
				
			||||||
			// healthz
 | 
					 | 
				
			||||||
			{
 | 
					 | 
				
			||||||
				Name:  "healthz",
 | 
					 | 
				
			||||||
				Image: images.GetAddonImage(images.KubeExechealthzImage),
 | 
					 | 
				
			||||||
				Resources: v1.ResourceRequirements{
 | 
					 | 
				
			||||||
					Limits: v1.ResourceList{
 | 
					 | 
				
			||||||
						v1.ResourceName(v1.ResourceMemory): resource.MustParse("50Mi"),
 | 
					 | 
				
			||||||
					},
 | 
					 | 
				
			||||||
					Requests: v1.ResourceList{
 | 
					 | 
				
			||||||
						v1.ResourceName(v1.ResourceCPU):    resource.MustParse("10m"),
 | 
											v1.ResourceName(v1.ResourceCPU):    resource.MustParse("10m"),
 | 
				
			||||||
						v1.ResourceName(v1.ResourceMemory): resource.MustParse("50Mi"),
 | 
					 | 
				
			||||||
					},
 | 
										},
 | 
				
			||||||
				},
 | 
									},
 | 
				
			||||||
				Args: []string{
 | 
					 | 
				
			||||||
					fmt.Sprintf("--cmd=nslookup kubernetes.default.svc.%s 127.0.0.1 >/dev/null", cfg.Networking.DNSDomain),
 | 
					 | 
				
			||||||
					"--url=/healthz-dnsmasq",
 | 
					 | 
				
			||||||
					fmt.Sprintf("--cmd=nslookup kubernetes.default.svc.%s 127.0.0.1:%d >/dev/null", cfg.Networking.DNSDomain, kubeDNSPort),
 | 
					 | 
				
			||||||
					"--url=/healthz-kubedns",
 | 
					 | 
				
			||||||
					"--port=8080",
 | 
					 | 
				
			||||||
					"--quiet",
 | 
					 | 
				
			||||||
				},
 | 
					 | 
				
			||||||
				Ports: []v1.ContainerPort{{
 | 
					 | 
				
			||||||
					ContainerPort: 8080,
 | 
					 | 
				
			||||||
					Protocol:      v1.ProtocolTCP,
 | 
					 | 
				
			||||||
				}},
 | 
					 | 
				
			||||||
			},
 | 
								},
 | 
				
			||||||
		},
 | 
							},
 | 
				
			||||||
		DNSPolicy: v1.DNSDefault,
 | 
							DNSPolicy: v1.DNSDefault,
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user