Skip to content

Commit ad7f5c8

Browse files
committed
[nodeconfig] set log flush in kubeletconfig
this commit configures kubelet's logging flush frequency to 5 seconds to ensure log entries are written to disk in near real-time, matching the flush interval used for other Windows services (kube-proxy, csi-proxy) that use kube-log-runner. This provides consistent log behavior across all Windows node services and ensures recent log entries are available for debugging without excessive I/O overhead.
1 parent 6dd1630 commit ad7f5c8

File tree

2 files changed

+16
-9
lines changed

2 files changed

+16
-9
lines changed

pkg/nodeconfig/nodeconfig.go

Lines changed: 15 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ import (
2222
"k8s.io/apimachinery/pkg/util/wait"
2323
"k8s.io/client-go/kubernetes"
2424
clientcmdv1 "k8s.io/client-go/tools/clientcmd/api/v1"
25+
logsapi "k8s.io/component-base/logs/api/v1"
2526
"k8s.io/kubectl/pkg/drain"
2627
kubeletconfigv1 "k8s.io/kubelet/config/v1"
2728
kubeletconfig "k8s.io/kubelet/config/v1beta1"
@@ -743,14 +744,20 @@ func generateKubeletConfiguration(clusterDNS string) kubeletconfig.KubeletConfig
743744
Enabled: &falseBool,
744745
},
745746
},
746-
ClusterDomain: "cluster.local",
747-
ClusterDNS: []string{clusterDNS},
748-
CgroupsPerQOS: &falseBool,
749-
RuntimeRequestTimeout: meta.Duration{Duration: 10 * time.Minute},
750-
MaxPods: 250,
751-
KubeAPIQPS: &kubeAPIQPS,
752-
KubeAPIBurst: 100,
753-
SerializeImagePulls: &falseBool,
747+
ClusterDomain: "cluster.local",
748+
ClusterDNS: []string{clusterDNS},
749+
CgroupsPerQOS: &falseBool,
750+
RuntimeRequestTimeout: meta.Duration{Duration: 10 * time.Minute},
751+
MaxPods: 250,
752+
KubeAPIQPS: &kubeAPIQPS,
753+
KubeAPIBurst: 100,
754+
SerializeImagePulls: &falseBool,
755+
Logging: logsapi.LoggingConfiguration{
756+
FlushFrequency: logsapi.TimeOrMetaDuration{
757+
Duration: meta.Duration{Duration: 5 * time.Second},
758+
SerializeAsString: true,
759+
},
760+
},
754761
EnableSystemLogHandler: &trueBool,
755762
EnableSystemLogQuery: &trueBool,
756763
FeatureGates: map[string]bool{

pkg/nodeconfig/nodeconfig_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ func TestCreateKubeletConf(t *testing.T) {
8484
{
8585
name: "valid cidr",
8686
cidr: "10.0.128.8/24",
87-
expectedSpec: "{\"kind\":\"KubeletConfiguration\",\"apiVersion\":\"kubelet.config.k8s.io/v1beta1\",\"syncFrequency\":\"0s\",\"fileCheckFrequency\":\"0s\",\"httpCheckFrequency\":\"0s\",\"rotateCertificates\":true,\"serverTLSBootstrap\":true,\"authentication\":{\"x509\":{\"clientCAFile\":\"C:\\\\k\\\\kubelet-ca.crt\"},\"webhook\":{\"cacheTTL\":\"0s\"},\"anonymous\":{\"enabled\":false}},\"authorization\":{\"webhook\":{\"cacheAuthorizedTTL\":\"0s\",\"cacheUnauthorizedTTL\":\"0s\"}},\"clusterDomain\":\"cluster.local\",\"clusterDNS\":[\"10.0.128.10\"],\"streamingConnectionIdleTimeout\":\"0s\",\"nodeStatusUpdateFrequency\":\"0s\",\"nodeStatusReportFrequency\":\"0s\",\"imageMinimumGCAge\":\"0s\",\"imageMaximumGCAge\":\"0s\",\"volumeStatsAggPeriod\":\"0s\",\"cgroupsPerQOS\":false,\"cpuManagerReconcilePeriod\":\"0s\",\"runtimeRequestTimeout\":\"10m0s\",\"maxPods\":250,\"resolvConf\":\"\",\"kubeAPIQPS\":50,\"kubeAPIBurst\":100,\"serializeImagePulls\":false,\"evictionHard\":{\"imagefs.available\":\"15%\",\"nodefs.available\":\"10%\"},\"evictionPressureTransitionPeriod\":\"0s\",\"featureGates\":{\"NodeLogQuery\":true,\"RotateKubeletServerCertificate\":true},\"memorySwap\":{},\"containerLogMaxSize\":\"50Mi\",\"systemReserved\":{\"cpu\":\"500m\",\"ephemeral-storage\":\"1Gi\",\"memory\":\"2Gi\"},\"enforceNodeAllocatable\":[\"none\"],\"logging\":{\"flushFrequency\":0,\"verbosity\":0,\"options\":{\"text\":{\"infoBufferSize\":\"0\"},\"json\":{\"infoBufferSize\":\"0\"}}},\"enableSystemLogHandler\":true,\"enableSystemLogQuery\":true,\"shutdownGracePeriod\":\"0s\",\"shutdownGracePeriodCriticalPods\":\"0s\",\"crashLoopBackOff\":{},\"registerWithTaints\":[{\"key\":\"os\",\"value\":\"Windows\",\"effect\":\"NoSchedule\"}],\"registerNode\":true,\"containerRuntimeEndpoint\":\"npipe://./pipe/containerd-containerd\"}",
87+
expectedSpec: "{\"kind\":\"KubeletConfiguration\",\"apiVersion\":\"kubelet.config.k8s.io/v1beta1\",\"syncFrequency\":\"0s\",\"fileCheckFrequency\":\"0s\",\"httpCheckFrequency\":\"0s\",\"rotateCertificates\":true,\"serverTLSBootstrap\":true,\"authentication\":{\"x509\":{\"clientCAFile\":\"C:\\\\k\\\\kubelet-ca.crt\"},\"webhook\":{\"cacheTTL\":\"0s\"},\"anonymous\":{\"enabled\":false}},\"authorization\":{\"webhook\":{\"cacheAuthorizedTTL\":\"0s\",\"cacheUnauthorizedTTL\":\"0s\"}},\"clusterDomain\":\"cluster.local\",\"clusterDNS\":[\"10.0.128.10\"],\"streamingConnectionIdleTimeout\":\"0s\",\"nodeStatusUpdateFrequency\":\"0s\",\"nodeStatusReportFrequency\":\"0s\",\"imageMinimumGCAge\":\"0s\",\"imageMaximumGCAge\":\"0s\",\"volumeStatsAggPeriod\":\"0s\",\"cgroupsPerQOS\":false,\"cpuManagerReconcilePeriod\":\"0s\",\"runtimeRequestTimeout\":\"10m0s\",\"maxPods\":250,\"resolvConf\":\"\",\"kubeAPIQPS\":50,\"kubeAPIBurst\":100,\"serializeImagePulls\":false,\"evictionHard\":{\"imagefs.available\":\"15%\",\"nodefs.available\":\"10%\"},\"evictionPressureTransitionPeriod\":\"0s\",\"featureGates\":{\"NodeLogQuery\":true,\"RotateKubeletServerCertificate\":true},\"memorySwap\":{},\"containerLogMaxSize\":\"50Mi\",\"systemReserved\":{\"cpu\":\"500m\",\"ephemeral-storage\":\"1Gi\",\"memory\":\"2Gi\"},\"enforceNodeAllocatable\":[\"none\"],\"logging\":{\"flushFrequency\":\"5s\",\"verbosity\":0,\"options\":{\"text\":{\"infoBufferSize\":\"0\"},\"json\":{\"infoBufferSize\":\"0\"}}},\"enableSystemLogHandler\":true,\"enableSystemLogQuery\":true,\"shutdownGracePeriod\":\"0s\",\"shutdownGracePeriodCriticalPods\":\"0s\",\"crashLoopBackOff\":{},\"registerWithTaints\":[{\"key\":\"os\",\"value\":\"Windows\",\"effect\":\"NoSchedule\"}],\"registerNode\":true,\"containerRuntimeEndpoint\":\"npipe://./pipe/containerd-containerd\"}",
8888
expectedErr: false,
8989
},
9090
{

0 commit comments

Comments
 (0)