Merge pull request #104624 from Haleygo/support-null-resolvConf-in-configFile

When resolvConf is "" in kubelet configuration, pod will be created with wrong dns policy
This commit is contained in:
Kubernetes Prow Robot 2021-09-14 14:18:59 -07:00 committed by GitHub
commit fa2657b8b2
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 21 additions and 11 deletions

View File

@ -209,11 +209,11 @@ func (kc *kubeletConfig) Default(cfg *kubeadmapi.ClusterConfiguration, _ *kubead
klog.Warningf("cannot determine if systemd-resolved is active: %v", err) klog.Warningf("cannot determine if systemd-resolved is active: %v", err)
} }
if ok { if ok {
if kc.config.ResolverConfig == "" { if kc.config.ResolverConfig == nil {
kc.config.ResolverConfig = kubeletSystemdResolverConfig kc.config.ResolverConfig = utilpointer.String(kubeletSystemdResolverConfig)
} else { } else {
if kc.config.ResolverConfig != kubeletSystemdResolverConfig { if kc.config.ResolverConfig != utilpointer.String(kubeletSystemdResolverConfig) {
warnDefaultComponentConfigValue(kind, "resolvConf", kubeletSystemdResolverConfig, kc.config.ResolverConfig) warnDefaultComponentConfigValue(kind, "resolvConf", kubeletSystemdResolverConfig, *kc.config.ResolverConfig)
} }
} }
} }

View File

@ -50,10 +50,10 @@ func testKubeletConfigMap(contents string) *v1.ConfigMap {
} }
func TestKubeletDefault(t *testing.T) { func TestKubeletDefault(t *testing.T) {
var resolverConfig string var resolverConfig *string
if isSystemdResolvedActive, _ := isServiceActive("systemd-resolved"); isSystemdResolvedActive { if isSystemdResolvedActive, _ := isServiceActive("systemd-resolved"); isSystemdResolvedActive {
// If systemd-resolved is active, we need to set the default resolver config // If systemd-resolved is active, we need to set the default resolver config
resolverConfig = kubeletSystemdResolverConfig resolverConfig = utilpointer.String(kubeletSystemdResolverConfig)
} }
tests := []struct { tests := []struct {

View File

@ -181,8 +181,8 @@ func SetDefaults_KubeletConfiguration(obj *kubeletconfigv1beta1.KubeletConfigura
temp := int64(-1) temp := int64(-1)
obj.PodPidsLimit = &temp obj.PodPidsLimit = &temp
} }
if obj.ResolverConfig == "" { if obj.ResolverConfig == nil {
obj.ResolverConfig = kubetypes.ResolvConfDefault obj.ResolverConfig = utilpointer.String(kubetypes.ResolvConfDefault)
} }
if obj.CPUCFSQuota == nil { if obj.CPUCFSQuota == nil {
obj.CPUCFSQuota = utilpointer.BoolPtr(true) obj.CPUCFSQuota = utilpointer.BoolPtr(true)

View File

@ -308,7 +308,9 @@ func autoConvert_v1beta1_KubeletConfiguration_To_config_KubeletConfiguration(in
if err := v1.Convert_Pointer_int64_To_int64(&in.PodPidsLimit, &out.PodPidsLimit, s); err != nil { if err := v1.Convert_Pointer_int64_To_int64(&in.PodPidsLimit, &out.PodPidsLimit, s); err != nil {
return err return err
} }
out.ResolverConfig = in.ResolverConfig if err := v1.Convert_Pointer_string_To_string(&in.ResolverConfig, &out.ResolverConfig, s); err != nil {
return err
}
out.RunOnce = in.RunOnce out.RunOnce = in.RunOnce
if err := v1.Convert_Pointer_bool_To_bool(&in.CPUCFSQuota, &out.CPUCFSQuota, s); err != nil { if err := v1.Convert_Pointer_bool_To_bool(&in.CPUCFSQuota, &out.CPUCFSQuota, s); err != nil {
return err return err
@ -479,7 +481,9 @@ func autoConvert_config_KubeletConfiguration_To_v1beta1_KubeletConfiguration(in
if err := v1.Convert_int64_To_Pointer_int64(&in.PodPidsLimit, &out.PodPidsLimit, s); err != nil { if err := v1.Convert_int64_To_Pointer_int64(&in.PodPidsLimit, &out.PodPidsLimit, s); err != nil {
return err return err
} }
out.ResolverConfig = in.ResolverConfig if err := v1.Convert_string_To_Pointer_string(&in.ResolverConfig, &out.ResolverConfig, s); err != nil {
return err
}
out.RunOnce = in.RunOnce out.RunOnce = in.RunOnce
if err := v1.Convert_bool_To_Pointer_bool(&in.CPUCFSQuota, &out.CPUCFSQuota, s); err != nil { if err := v1.Convert_bool_To_Pointer_bool(&in.CPUCFSQuota, &out.CPUCFSQuota, s); err != nil {
return err return err

View File

@ -599,9 +599,10 @@ type KubeletConfiguration struct {
// dynamically updating this field, consider that // dynamically updating this field, consider that
// changes will only take effect on Pods created after the update. Draining // changes will only take effect on Pods created after the update. Draining
// the node is recommended before changing this field. // the node is recommended before changing this field.
// If set to the empty string, will override the default and effectively disable DNS lookups.
// Default: "/etc/resolv.conf" // Default: "/etc/resolv.conf"
// +optional // +optional
ResolverConfig string `json:"resolvConf,omitempty"` ResolverConfig *string `json:"resolvConf,omitempty"`
// runOnce causes the Kubelet to check the API server once for pods, // runOnce causes the Kubelet to check the API server once for pods,
// run those in addition to the pods specified by static pod files, and exit. // run those in addition to the pods specified by static pod files, and exit.
// Default: false // Default: false

View File

@ -189,6 +189,11 @@ func (in *KubeletConfiguration) DeepCopyInto(out *KubeletConfiguration) {
*out = new(int64) *out = new(int64)
**out = **in **out = **in
} }
if in.ResolverConfig != nil {
in, out := &in.ResolverConfig, &out.ResolverConfig
*out = new(string)
**out = **in
}
if in.CPUCFSQuota != nil { if in.CPUCFSQuota != nil {
in, out := &in.CPUCFSQuota, &out.CPUCFSQuota in, out := &in.CPUCFSQuota, &out.CPUCFSQuota
*out = new(bool) *out = new(bool)