mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-08-01 07:47:56 +00:00
kubeadm: updated DNS deployment.
This commit is contained in:
parent
de59ede6b2
commit
070f7d9d2d
@ -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,
|
||||||
|
Loading…
Reference in New Issue
Block a user