Skip to content

Commit b7df5cd

Browse files
committed
kubeadm: Set the kubelet --resolv-conf flag conditionally on init
Fixes kubernetes/kubeadm#845
1 parent 0ecfd34 commit b7df5cd

File tree

4 files changed

+8
-32
lines changed

4 files changed

+8
-32
lines changed

cmd/kubeadm/app/phases/kubelet/BUILD

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ go_library(
1919
"//pkg/apis/rbac/v1:go_default_library",
2020
"//pkg/kubelet/apis/kubeletconfig/scheme:go_default_library",
2121
"//pkg/kubelet/apis/kubeletconfig/v1beta1:go_default_library",
22+
"//pkg/util/procfs:go_default_library",
2223
"//pkg/util/version:go_default_library",
2324
"//vendor/github.com/golang/glog:go_default_library",
2425
"//vendor/k8s.io/api/core/v1:go_default_library",

cmd/kubeadm/app/phases/kubelet/flags.go

+6-1
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ import (
2828
kubeadmapiv1alpha2 "k8s.io/kubernetes/cmd/kubeadm/app/apis/kubeadm/v1alpha2"
2929
"k8s.io/kubernetes/cmd/kubeadm/app/constants"
3030
kubeadmutil "k8s.io/kubernetes/cmd/kubeadm/app/util"
31+
"k8s.io/kubernetes/pkg/util/procfs"
3132
utilsexec "k8s.io/utils/exec"
3233
)
3334

@@ -72,8 +73,12 @@ func buildKubeletArgMap(nodeRegOpts *kubeadmapi.NodeRegistrationOptions, registe
7273
kubeletFlags["register-with-taints"] = strings.Join(taintStrs, ",")
7374
}
7475

76+
if pids, _ := procfs.PidOf("systemd-resolved"); len(pids) > 0 {
77+
// procfs.PidOf only returns an error if the regex is empty or doesn't compile, so we can ignore it
78+
kubeletFlags["resolv-conf"] = "/run/systemd/resolve/resolv.conf"
79+
}
80+
7581
// TODO: Pass through --hostname-override if a custom name is used?
76-
// TODO: Check if `systemd-resolved` is running, and set `--resolv-conf` based on that
7782
// TODO: Conditionally set `--cgroup-driver` to either `systemd` or `cgroupfs` for CRI other than Docker
7883

7984
return kubeletFlags

cmd/kubeadm/app/preflight/BUILD

-1
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,6 @@ go_library(
5757
"//pkg/registry/core/service/ipallocator:go_default_library",
5858
"//pkg/util/initsystem:go_default_library",
5959
"//pkg/util/ipvs:go_default_library",
60-
"//pkg/util/procfs:go_default_library",
6160
"//pkg/util/version:go_default_library",
6261
"//pkg/version:go_default_library",
6362
"//test/e2e_node/system:go_default_library",

cmd/kubeadm/app/preflight/checks.go

+1-30
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,6 @@ import (
5151
"k8s.io/kubernetes/pkg/registry/core/service/ipallocator"
5252
"k8s.io/kubernetes/pkg/util/initsystem"
5353
ipvsutil "k8s.io/kubernetes/pkg/util/ipvs"
54-
"k8s.io/kubernetes/pkg/util/procfs"
5554
versionutil "k8s.io/kubernetes/pkg/util/version"
5655
kubeadmversion "k8s.io/kubernetes/pkg/version"
5756
"k8s.io/kubernetes/test/e2e_node/system"
@@ -830,33 +829,6 @@ func getEtcdVersionResponse(client *http.Client, url string, target interface{})
830829
return err
831830
}
832831

833-
// ResolveCheck tests for potential issues related to the system resolver configuration
834-
type ResolveCheck struct{}
835-
836-
// Name returns label for ResolveCheck
837-
func (ResolveCheck) Name() string {
838-
return "Resolve"
839-
}
840-
841-
// Check validates the system resolver configuration
842-
func (ResolveCheck) Check() (warnings, errors []error) {
843-
glog.V(1).Infoln("validating the system resolver configuration")
844-
845-
warnings = []error{}
846-
847-
// procfs.PidOf only returns an error if the string passed is empty
848-
// or there is an issue compiling the regex, so we can ignore it here
849-
pids, _ := procfs.PidOf("systemd-resolved")
850-
if len(pids) > 0 {
851-
warnings = append(warnings, fmt.Errorf(
852-
"systemd-resolved was detected, for cluster dns resolution to work "+
853-
"properly --resolv-conf=/run/systemd/resolve/resolv.conf must be set "+
854-
"for the kubelet. (/etc/systemd/system/kubelet.service.d/10-kubeadm.conf should be edited for this purpose)\n"))
855-
}
856-
857-
return warnings, errors
858-
}
859-
860832
// ImagePullCheck will pull container images used by kubeadm
861833
type ImagePullCheck struct {
862834
Images images.Images
@@ -1011,8 +983,7 @@ func addCommonChecks(execer utilsexec.Interface, cfg kubeadmapi.CommonConfigurat
1011983
InPathCheck{executable: "ethtool", mandatory: false, exec: execer},
1012984
InPathCheck{executable: "socat", mandatory: false, exec: execer},
1013985
InPathCheck{executable: "tc", mandatory: false, exec: execer},
1014-
InPathCheck{executable: "touch", mandatory: false, exec: execer},
1015-
ResolveCheck{})
986+
InPathCheck{executable: "touch", mandatory: false, exec: execer})
1016987
}
1017988
checks = append(checks,
1018989
SystemVerificationCheck{CRISocket: cfg.GetCRISocket()},

0 commit comments

Comments
 (0)