Skip to content

Commit dc3f5ec

Browse files
authored
Merge pull request kubernetes#112957 from mxpv/log-dir
Allow changing pod log directory
2 parents 50f4b1e + 8375163 commit dc3f5ec

34 files changed

+185
-67
lines changed

cmd/kubelet/app/server.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ import (
7777
logsapi "k8s.io/component-base/logs/api/v1"
7878
"k8s.io/component-base/metrics"
7979
"k8s.io/component-base/metrics/legacyregistry"
80-
tracing "k8s.io/component-base/tracing"
80+
"k8s.io/component-base/tracing"
8181
"k8s.io/component-base/version"
8282
"k8s.io/component-base/version/verflag"
8383
nodeutil "k8s.io/component-helpers/node/util"
@@ -1292,6 +1292,7 @@ func createAndInitKubelet(kubeServer *options.KubeletServer,
12921292
kubeServer.CloudProvider,
12931293
kubeServer.CertDirectory,
12941294
kubeServer.RootDirectory,
1295+
kubeServer.PodLogsDir,
12951296
kubeServer.ImageCredentialProviderConfigFile,
12961297
kubeServer.ImageCredentialProviderBinDir,
12971298
kubeServer.RegisterNode,

pkg/generated/openapi/zz_generated.openapi.go

Lines changed: 7 additions & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pkg/kubelet/apis/config/fuzzer/fuzzer.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,7 @@ func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
8383
"memory": "50%",
8484
}
8585
obj.OOMScoreAdj = int32(qos.KubeletOOMScoreAdj)
86+
obj.PodLogsDir = "/var/log/pods"
8687
obj.Port = ports.KubeletPort
8788
obj.ReadOnlyPort = ports.KubeletReadOnlyPort
8889
obj.RegistryBurst = 10

pkg/kubelet/apis/config/helpers.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,5 +27,6 @@ func KubeletConfigurationPathRefs(kc *KubeletConfiguration) []*string {
2727
paths = append(paths, &kc.TLSPrivateKeyFile)
2828
paths = append(paths, &kc.ResolverConfig)
2929
paths = append(paths, &kc.VolumePluginDir)
30+
paths = append(paths, &kc.PodLogsDir)
3031
return paths
3132
}

pkg/kubelet/apis/config/helpers_test.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ var (
156156
"TLSCertFile",
157157
"TLSPrivateKeyFile",
158158
"ResolverConfig",
159+
"PodLogsDir",
159160
)
160161

161162
// KubeletConfiguration fields that do not contain file paths.

pkg/kubelet/apis/config/scheme/testdata/KubeletConfiguration/after/v1beta1.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ nodeStatusMaxImages: 50
7373
nodeStatusReportFrequency: 5m0s
7474
nodeStatusUpdateFrequency: 10s
7575
oomScoreAdj: -999
76+
podLogsDir: /var/log/pods
7677
podPidsLimit: -1
7778
port: 10250
7879
registerNode: true

pkg/kubelet/apis/config/scheme/testdata/KubeletConfiguration/roundtrip/default/v1beta1.yaml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ nodeStatusMaxImages: 50
7373
nodeStatusReportFrequency: 5m0s
7474
nodeStatusUpdateFrequency: 10s
7575
oomScoreAdj: -999
76+
podLogsDir: /var/log/pods
7677
podPidsLimit: -1
7778
port: 10250
7879
registerNode: true

pkg/kubelet/apis/config/types.go

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,6 +88,11 @@ type KubeletConfiguration struct {
8888
// staticPodPath is the path to the directory containing local (static) pods to
8989
// run, or the path to a single static pod file.
9090
StaticPodPath string
91+
// podLogsDir is a custom root directory path kubelet will use to place pod's log files.
92+
// Default: "/var/log/pods/"
93+
// Note: it is not recommended to use the temp folder as a log directory as it may cause
94+
// unexpected behavior in many places.
95+
PodLogsDir string
9196
// syncFrequency is the max period between synchronizing running
9297
// containers and config
9398
SyncFrequency metav1.Duration

pkg/kubelet/apis/config/v1beta1/defaults.go

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ const (
3636
DefaultIPTablesMasqueradeBit = 14
3737
DefaultIPTablesDropBit = 15
3838
DefaultVolumePluginDir = "/usr/libexec/kubernetes/kubelet-plugins/volume/exec/"
39-
39+
DefaultPodLogsDir = "/var/log/pods"
4040
// See https://github.com/kubernetes/enhancements/tree/master/keps/sig-node/2570-memory-qos
4141
DefaultMemoryThrottlingFactor = 0.9
4242
)
@@ -280,4 +280,7 @@ func SetDefaults_KubeletConfiguration(obj *kubeletconfigv1beta1.KubeletConfigura
280280
if obj.ContainerRuntimeEndpoint == "" {
281281
obj.ContainerRuntimeEndpoint = "unix:///run/containerd/containerd.sock"
282282
}
283+
if obj.PodLogsDir == "" {
284+
obj.PodLogsDir = DefaultPodLogsDir
285+
}
283286
}

pkg/kubelet/apis/config/v1beta1/defaults_test.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
128128
MemoryThrottlingFactor: utilpointer.Float64(DefaultMemoryThrottlingFactor),
129129
RegisterNode: utilpointer.Bool(true),
130130
LocalStorageCapacityIsolation: utilpointer.Bool(true),
131+
PodLogsDir: DefaultPodLogsDir,
131132
},
132133
},
133134
{
@@ -257,6 +258,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
257258
MemoryThrottlingFactor: utilpointer.Float64(0),
258259
RegisterNode: utilpointer.Bool(false),
259260
LocalStorageCapacityIsolation: utilpointer.Bool(false),
261+
PodLogsDir: "",
260262
},
261263
&v1beta1.KubeletConfiguration{
262264
EnableServer: utilpointer.Bool(false),
@@ -357,6 +359,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
357359
MemoryThrottlingFactor: utilpointer.Float64(0),
358360
RegisterNode: utilpointer.Bool(false),
359361
LocalStorageCapacityIsolation: utilpointer.Bool(false),
362+
PodLogsDir: DefaultPodLogsDir,
360363
},
361364
},
362365
{
@@ -508,6 +511,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
508511
MemoryThrottlingFactor: utilpointer.Float64(1),
509512
RegisterNode: utilpointer.Bool(true),
510513
LocalStorageCapacityIsolation: utilpointer.Bool(true),
514+
PodLogsDir: "/custom/path",
511515
},
512516
&v1beta1.KubeletConfiguration{
513517
EnableServer: utilpointer.Bool(true),
@@ -656,6 +660,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
656660
MemoryThrottlingFactor: utilpointer.Float64(1),
657661
RegisterNode: utilpointer.Bool(true),
658662
LocalStorageCapacityIsolation: utilpointer.Bool(true),
663+
PodLogsDir: "/custom/path",
659664
},
660665
},
661666
{
@@ -747,6 +752,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
747752
MemoryThrottlingFactor: utilpointer.Float64Ptr(DefaultMemoryThrottlingFactor),
748753
RegisterNode: utilpointer.Bool(true),
749754
LocalStorageCapacityIsolation: utilpointer.Bool(true),
755+
PodLogsDir: DefaultPodLogsDir,
750756
},
751757
},
752758
{
@@ -838,6 +844,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
838844
MemoryThrottlingFactor: utilpointer.Float64Ptr(DefaultMemoryThrottlingFactor),
839845
RegisterNode: utilpointer.Bool(true),
840846
LocalStorageCapacityIsolation: utilpointer.Bool(true),
847+
PodLogsDir: DefaultPodLogsDir,
841848
},
842849
},
843850
{
@@ -929,6 +936,7 @@ func TestSetDefaultsKubeletConfiguration(t *testing.T) {
929936
MemoryThrottlingFactor: utilpointer.Float64(DefaultMemoryThrottlingFactor),
930937
RegisterNode: utilpointer.Bool(true),
931938
LocalStorageCapacityIsolation: utilpointer.Bool(true),
939+
PodLogsDir: DefaultPodLogsDir,
932940
},
933941
},
934942
}

0 commit comments

Comments
 (0)