Skip to content

Commit b297c99

Browse files
committed
kubelet: Set --config to avoid using legacy defaults
Fixes #12310 It also help avoid similar issues as #12164 in the future. I.e. we do not need to explicity override defaults by using cli flags. Signed-off-by: Boleyn Su <[email protected]>
1 parent 925726c commit b297c99

File tree

5 files changed

+17
-14
lines changed

5 files changed

+17
-14
lines changed

pkg/agent/config/config.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -601,6 +601,7 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N
601601
return nil, err
602602
}
603603

604+
kubeletConfig := filepath.Join(envInfo.DataDir, "agent", "etc", "kubelet.conf")
604605
// Ensure kubelet config dir exists
605606
kubeletConfigDir := filepath.Join(envInfo.DataDir, "agent", "etc", "kubelet.conf.d")
606607
if err := os.MkdirAll(kubeletConfigDir, 0700); err != nil {
@@ -635,6 +636,7 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N
635636
nodeConfig.AgentConfig.ClusterDomain = controlConfig.ClusterDomain
636637
nodeConfig.AgentConfig.ResolvConf = locateOrGenerateResolvConf(envInfo)
637638
nodeConfig.AgentConfig.ClientCA = clientCAFile
639+
nodeConfig.AgentConfig.KubeletConfig = kubeletConfig
638640
nodeConfig.AgentConfig.KubeletConfigDir = kubeletConfigDir
639641
nodeConfig.AgentConfig.KubeConfigKubelet = kubeconfigKubelet
640642
nodeConfig.AgentConfig.KubeConfigKubeProxy = kubeconfigKubeproxy

pkg/daemons/agent/agent.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -64,16 +64,20 @@ func startKubeProxy(ctx context.Context, cfg *daemonconfig.Agent) error {
6464
func startKubelet(ctx context.Context, cfg *daemonconfig.Agent) error {
6565
argsMap, defaultConfig, err := kubeletArgsAndConfig(cfg)
6666
if err != nil {
67-
return pkgerrors.WithMessage(err, "prepare default configuration drop-in")
67+
return pkgerrors.WithMessage(err, "prepare default kubelet configuration")
6868
}
6969

70-
extraArgs, err := extractConfigArgs(cfg.KubeletConfigDir, cfg.ExtraKubeletArgs, defaultConfig)
71-
if err != nil {
72-
return pkgerrors.WithMessage(err, "prepare user configuration drop-ins")
70+
if err := writeKubeletConfig(cfg.KubeletConfig, defaultConfig); err != nil {
71+
return pkgerrors.WithMessage(err, "generate default kubelet configuration")
7372
}
7473

75-
if err := writeKubeletConfig(cfg.KubeletConfigDir, defaultConfig); err != nil {
76-
return pkgerrors.WithMessage(err, "generate default kubelet configuration drop-in")
74+
// Remove default kubelet configuration generated in drop-in directory
75+
// TODO: Clean this up some time after k3s with version <=1.33 is EOL.
76+
os.Remove(filepath.Join(cfg.KubeletConfigDir, "00-"+version.Program+"-defaults.conf"))
77+
78+
extraArgs, err := extractConfigArgs(cfg.KubeletConfigDir, cfg.ExtraKubeletArgs)
79+
if err != nil {
80+
return pkgerrors.WithMessage(err, "prepare user kubelet configuration drop-ins")
7781
}
7882

7983
args := util.GetArgs(argsMap, extraArgs)
@@ -99,7 +103,7 @@ func ImageCredProvAvailable(cfg *daemonconfig.Agent) bool {
99103
// extractConfigArgs strips out any --config or --config-dir flags from the
100104
// provided args list, and if set, copies the content of the file or dir into
101105
// the target drop-in directory.
102-
func extractConfigArgs(path string, extraArgs []string, config *kubeletconfig.KubeletConfiguration) ([]string, error) {
106+
func extractConfigArgs(path string, extraArgs []string) ([]string, error) {
103107
args := make([]string, 0, len(extraArgs))
104108
strippedArgs := map[string]string{}
105109
var skipVal bool
@@ -158,7 +162,7 @@ func writeKubeletConfig(path string, config *kubeletconfig.KubeletConfiguration)
158162
if err != nil {
159163
return err
160164
}
161-
return os.WriteFile(filepath.Join(path, "00-"+version.Program+"-defaults.conf"), b, 0600)
165+
return os.WriteFile(path, b, 0600)
162166
}
163167

164168
func defaultKubeletConfig(cfg *daemonconfig.Agent) (*kubeletconfig.KubeletConfiguration, error) {

pkg/daemons/agent/agent_linux.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -75,11 +75,9 @@ func kubeletArgsAndConfig(cfg *config.Agent) (map[string]string, *kubeletconfig.
7575
return nil, nil, err
7676
}
7777
argsMap := map[string]string{
78+
"config": cfg.KubeletConfig,
7879
"config-dir": cfg.KubeletConfigDir,
7980
"kubeconfig": cfg.KubeConfigKubelet,
80-
// note: KubeletConfiguration will omit this field when marshalling if it is set to 0, so we set it via CLI
81-
// https://github.com/k3s-io/k3s/issues/12164
82-
"read-only-port": "0",
8381
}
8482

8583
if cfg.RootDir != "" {

pkg/daemons/agent/agent_windows.go

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,9 @@ func kubeletArgsAndConfig(cfg *config.Agent) (map[string]string, *kubeletconfig.
4848
return nil, nil, err
4949
}
5050
argsMap := map[string]string{
51+
"config": cfg.KubeletConfig,
5152
"config-dir": cfg.KubeletConfigDir,
5253
"kubeconfig": cfg.KubeConfigKubelet,
53-
// note: KubeletConfiguration will omit this field when marshalling if it is set to 0, so we set it via CLI
54-
// https://github.com/k3s-io/k3s/issues/12164
55-
"read-only-port": "0",
5654
}
5755
if cfg.RootDir != "" {
5856
argsMap["root-dir"] = cfg.RootDir

pkg/daemons/config/types.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ type Agent struct {
119119
ClusterDomain string
120120
ResolvConf string
121121
RootDir string
122+
KubeletConfig string
122123
KubeletConfigDir string
123124
KubeConfigKubelet string
124125
KubeConfigKubeProxy string

0 commit comments

Comments
 (0)