Skip to content

Commit 46caa87

Browse files
Add support for specifying logging configuration for kubelet (#1173)
* chore: add container logs maxsize with tests * Add support for configuring logging configuration for kubelet Signed-off-by: Waleed Malik <[email protected]> * Refactored code Signed-off-by: Waleed Malik <[email protected]> * Use const for ContainerLogMaxSize default value Signed-off-by: Waleed Malik <[email protected]> * Use const for ContainerLogMaxSize default value Signed-off-by: Waleed Malik <[email protected]> Co-authored-by: Waleed Malik <[email protected]>
1 parent 429d653 commit 46caa87

File tree

78 files changed

+273
-116
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

78 files changed

+273
-116
lines changed

pkg/apis/cluster/common/consts.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -135,9 +135,11 @@ const (
135135
)
136136

137137
const (
138-
SystemReservedKubeletConfig = "SystemReserved"
139-
KubeReservedKubeletConfig = "KubeReserved"
140-
EvictionHardKubeletConfig = "EvictionHard"
138+
SystemReservedKubeletConfig = "SystemReserved"
139+
KubeReservedKubeletConfig = "KubeReserved"
140+
EvictionHardKubeletConfig = "EvictionHard"
141+
ContainerLogMaxSizeKubeletConfig = "ContainerLogMaxSize"
142+
ContainerLogMaxFilesKubeletConfig = "ContainerLogMaxFiles"
141143
)
142144

143145
const (

pkg/containerruntime/containerruntime.go

Lines changed: 12 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -78,12 +78,14 @@ func get(containerRuntimeName string, opts ...Opt) Config {
7878
}
7979

8080
type Config struct {
81-
Docker *Docker `json:",omitempty"`
82-
Containerd *Containerd `json:",omitempty"`
83-
InsecureRegistries []string `json:",omitempty"`
84-
RegistryMirrors map[string][]string `json:",omitempty"`
85-
RegistryCredentials map[string]AuthConfig `json:",omitempty"`
86-
SandboxImage string `json:",omitempty"`
81+
Docker *Docker `json:",omitempty"`
82+
Containerd *Containerd `json:",omitempty"`
83+
InsecureRegistries []string `json:",omitempty"`
84+
RegistryMirrors map[string][]string `json:",omitempty"`
85+
RegistryCredentials map[string]AuthConfig `json:",omitempty"`
86+
SandboxImage string `json:",omitempty"`
87+
ContainerLogMaxFiles string `json:",omitempty"`
88+
ContainerLogMaxSize string `json:",omitempty"`
8789
}
8890

8991
func (cfg Config) String() string {
@@ -99,8 +101,10 @@ func (cfg Config) String() string {
99101

100102
func (cfg Config) Engine(kubeletVersion *semver.Version) Engine {
101103
docker := &Docker{
102-
insecureRegistries: cfg.InsecureRegistries,
103-
registryMirrors: cfg.RegistryMirrors["docker.io"],
104+
insecureRegistries: cfg.InsecureRegistries,
105+
registryMirrors: cfg.RegistryMirrors["docker.io"],
106+
containerLogMaxFiles: cfg.ContainerLogMaxFiles,
107+
containerLogMaxSize: cfg.ContainerLogMaxSize,
104108
}
105109

106110
containerd := &Containerd{

pkg/containerruntime/docker.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,12 +31,14 @@ const (
3131
)
3232

3333
type Docker struct {
34-
insecureRegistries []string
35-
registryMirrors []string
34+
insecureRegistries []string
35+
registryMirrors []string
36+
containerLogMaxFiles string
37+
containerLogMaxSize string
3638
}
3739

3840
func (eng *Docker) Config() (string, error) {
39-
return helper.DockerConfig(eng.insecureRegistries, eng.registryMirrors)
41+
return helper.DockerConfig(eng.insecureRegistries, eng.registryMirrors, eng.containerLogMaxFiles, eng.containerLogMaxSize)
4042
}
4143

4244
func (eng *Docker) ConfigFileName() string {

pkg/controller/machine/machine_controller.go

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -717,7 +717,7 @@ func (r *Reconciler) ensureInstanceExistsForMachine(
717717

718718
// grab kubelet general options from the annotations
719719
kubeletFlags := common.GetKubeletFlags(machine.GetAnnotations())
720-
KubeletConfigs := common.GetKubeletConfigs(machine.GetAnnotations())
720+
kubeletConfigs := common.GetKubeletConfigs(machine.GetAnnotations())
721721

722722
// look up for ExternalCloudProvider feature, with fallback to command-line input
723723
externalCloudProvider := r.nodeSettings.ExternalCloudProvider
@@ -733,6 +733,14 @@ func (r *Reconciler) ensureInstanceExistsForMachine(
733733
crRuntime := r.nodeSettings.ContainerRuntime
734734
crRuntime.RegistryCredentials = registryCredentials
735735

736+
if val, ok := kubeletConfigs[common.ContainerLogMaxSizeKubeletConfig]; ok {
737+
crRuntime.ContainerLogMaxSize = val
738+
}
739+
740+
if val, ok := kubeletConfigs[common.ContainerLogMaxFilesKubeletConfig]; ok {
741+
crRuntime.ContainerLogMaxFiles = val
742+
}
743+
736744
req := plugin.UserDataRequest{
737745
MachineSpec: machine.Spec,
738746
Kubeconfig: kubeconfig,
@@ -743,7 +751,7 @@ func (r *Reconciler) ensureInstanceExistsForMachine(
743751
PauseImage: r.nodeSettings.PauseImage,
744752
KubeletCloudProviderName: kubeletCloudProviderName,
745753
KubeletFeatureGates: kubeletFeatureGates,
746-
KubeletConfigs: KubeletConfigs,
754+
KubeletConfigs: kubeletConfigs,
747755
NoProxy: r.nodeSettings.NoProxy,
748756
HTTPProxy: r.nodeSettings.HTTPProxy,
749757
ContainerRuntime: crRuntime,
@@ -760,8 +768,9 @@ func (r *Reconciler) ensureInstanceExistsForMachine(
760768
return nil, fmt.Errorf("failed to find machine's MachineDployment: %v", err)
761769
}
762770

763-
cloudConfigSecretName := fmt.Sprintf("%s-%s",
771+
cloudConfigSecretName := fmt.Sprintf("%s-%s-%s",
764772
referencedMachineDeployment,
773+
machine.Namespace,
765774
provisioningSuffix)
766775

767776
// It is important to check if the secret holding cloud-config exists

pkg/userdata/amzn2/provider.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -265,7 +265,7 @@ write_files:
265265
266266
- path: "/etc/kubernetes/kubelet.conf"
267267
content: |
268-
{{ kubeletConfiguration "cluster.local" .DNSIPs .KubeletFeatureGates .KubeletConfigs | indent 4 }}
268+
{{ kubeletConfiguration "cluster.local" .DNSIPs .KubeletFeatureGates .KubeletConfigs .ContainerRuntimeName | indent 4 }}
269269
270270
- path: "/etc/kubernetes/pki/ca.crt"
271271
content: |

pkg/userdata/amzn2/testdata/containerd-kubelet-v1.20-aws.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -299,6 +299,7 @@ write_files:
299299
cacheUnauthorizedTTL: 0s
300300
cgroupDriver: systemd
301301
clusterDomain: cluster.local
302+
containerLogMaxSize: 100Mi
302303
cpuManagerReconcilePeriod: 0s
303304
evictionHard:
304305
imagefs.available: 15%

pkg/userdata/amzn2/testdata/kubelet-v1.20-aws.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ write_files:
296296
cacheUnauthorizedTTL: 0s
297297
cgroupDriver: systemd
298298
clusterDomain: cluster.local
299+
containerLogMaxSize: 100Mi
299300
cpuManagerReconcilePeriod: 0s
300301
evictionHard:
301302
imagefs.available: 15%
@@ -397,7 +398,7 @@ write_files:
397398
- path: /etc/docker/daemon.json
398399
permissions: "0644"
399400
content: |
400-
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"10m"}}
401+
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"100m"}}
401402
402403
- path: /etc/systemd/system/kubelet-healthcheck.service
403404
permissions: "0644"

pkg/userdata/amzn2/testdata/kubelet-v1.21-aws-external.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ write_files:
296296
cacheUnauthorizedTTL: 0s
297297
cgroupDriver: systemd
298298
clusterDomain: cluster.local
299+
containerLogMaxSize: 100Mi
299300
cpuManagerReconcilePeriod: 0s
300301
evictionHard:
301302
imagefs.available: 15%
@@ -397,7 +398,7 @@ write_files:
397398
- path: /etc/docker/daemon.json
398399
permissions: "0644"
399400
content: |
400-
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"10m"}}
401+
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"100m"}}
401402
402403
- path: /etc/systemd/system/kubelet-healthcheck.service
403404
permissions: "0644"

pkg/userdata/amzn2/testdata/kubelet-v1.21-aws.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -296,6 +296,7 @@ write_files:
296296
cacheUnauthorizedTTL: 0s
297297
cgroupDriver: systemd
298298
clusterDomain: cluster.local
299+
containerLogMaxSize: 100Mi
299300
cpuManagerReconcilePeriod: 0s
300301
evictionHard:
301302
imagefs.available: 15%
@@ -397,7 +398,7 @@ write_files:
397398
- path: /etc/docker/daemon.json
398399
permissions: "0644"
399400
content: |
400-
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"10m"}}
401+
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"100m"}}
401402
402403
- path: /etc/systemd/system/kubelet-healthcheck.service
403404
permissions: "0644"

pkg/userdata/amzn2/testdata/kubelet-v1.21-vsphere-mirrors.yaml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -313,6 +313,7 @@ write_files:
313313
cacheUnauthorizedTTL: 0s
314314
cgroupDriver: systemd
315315
clusterDomain: cluster.local
316+
containerLogMaxSize: 100Mi
316317
cpuManagerReconcilePeriod: 0s
317318
evictionHard:
318319
imagefs.available: 15%
@@ -414,7 +415,7 @@ write_files:
414415
- path: /etc/docker/daemon.json
415416
permissions: "0644"
416417
content: |
417-
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"10m"},"registry-mirrors":["https://registry.docker-cn.com"]}
418+
{"exec-opts":["native.cgroupdriver=systemd"],"storage-driver":"overlay2","log-driver":"json-file","log-opts":{"max-file":"5","max-size":"100m"},"registry-mirrors":["https://registry.docker-cn.com"]}
418419
419420
- path: /etc/systemd/system/kubelet-healthcheck.service
420421
permissions: "0644"

0 commit comments

Comments
 (0)