...
1
16
17 package fuzzer
18
19 import (
20 "math/rand"
21 "time"
22
23 fuzz "github.com/google/gofuzz"
24
25 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
26 runtimeserializer "k8s.io/apimachinery/pkg/runtime/serializer"
27 "k8s.io/kubelet/config/v1beta1"
28 "k8s.io/kubernetes/pkg/cluster/ports"
29 kubeletconfig "k8s.io/kubernetes/pkg/kubelet/apis/config"
30 kubeletconfigv1beta1 "k8s.io/kubernetes/pkg/kubelet/apis/config/v1beta1"
31 "k8s.io/kubernetes/pkg/kubelet/eviction"
32 "k8s.io/kubernetes/pkg/kubelet/qos"
33 kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
34 utilpointer "k8s.io/utils/pointer"
35 )
36
37
38 func Funcs(codecs runtimeserializer.CodecFactory) []interface{} {
39 return []interface{}{
40
41 func(obj *kubeletconfig.KubeletConfiguration, c fuzz.Continue) {
42 c.FuzzNoCustom(obj)
43 obj.EnableServer = true
44 obj.Authentication.Anonymous.Enabled = true
45 obj.Authentication.Webhook.Enabled = false
46 obj.Authentication.Webhook.CacheTTL = metav1.Duration{Duration: 2 * time.Minute}
47 obj.Authorization.Mode = kubeletconfig.KubeletAuthorizationModeAlwaysAllow
48 obj.Authorization.Webhook.CacheAuthorizedTTL = metav1.Duration{Duration: 5 * time.Minute}
49 obj.Authorization.Webhook.CacheUnauthorizedTTL = metav1.Duration{Duration: 30 * time.Second}
50 obj.Address = "0.0.0.0"
51 obj.VolumeStatsAggPeriod = metav1.Duration{Duration: time.Minute}
52 obj.RuntimeRequestTimeout = metav1.Duration{Duration: 2 * time.Minute}
53 obj.CPUCFSQuota = true
54 obj.EventBurst = 10
55 obj.EventRecordQPS = 5
56 obj.EnableControllerAttachDetach = true
57 obj.EnableDebuggingHandlers = true
58 obj.EnableSystemLogQuery = false
59 obj.FileCheckFrequency = metav1.Duration{Duration: 20 * time.Second}
60 obj.HealthzBindAddress = "127.0.0.1"
61 obj.HealthzPort = 10248
62 obj.HTTPCheckFrequency = metav1.Duration{Duration: 20 * time.Second}
63 obj.ImageMinimumGCAge = metav1.Duration{Duration: 2 * time.Minute}
64 obj.ImageMaximumGCAge = metav1.Duration{}
65 obj.ImageGCHighThresholdPercent = 85
66 obj.ImageGCLowThresholdPercent = 80
67 obj.KernelMemcgNotification = false
68 obj.MaxOpenFiles = 1000000
69 obj.MaxPods = 110
70 obj.MemoryManagerPolicy = v1beta1.NoneMemoryManagerPolicy
71 obj.PodPidsLimit = -1
72 obj.NodeStatusUpdateFrequency = metav1.Duration{Duration: 10 * time.Second}
73 obj.NodeStatusReportFrequency = metav1.Duration{Duration: time.Minute}
74 obj.NodeLeaseDurationSeconds = 40
75 obj.CPUManagerPolicy = "none"
76 obj.CPUManagerPolicyOptions = make(map[string]string)
77 obj.CPUManagerReconcilePeriod = obj.NodeStatusUpdateFrequency
78 obj.NodeStatusMaxImages = 50
79 obj.TopologyManagerPolicy = kubeletconfig.NoneTopologyManagerPolicy
80 obj.TopologyManagerScope = kubeletconfig.ContainerTopologyManagerScope
81 obj.TopologyManagerPolicyOptions = make(map[string]string)
82 obj.QOSReserved = map[string]string{
83 "memory": "50%",
84 }
85 obj.OOMScoreAdj = int32(qos.KubeletOOMScoreAdj)
86 obj.PodLogsDir = "/var/log/pods"
87 obj.Port = ports.KubeletPort
88 obj.ReadOnlyPort = ports.KubeletReadOnlyPort
89 obj.RegistryBurst = 10
90 obj.RegistryPullQPS = 5
91 obj.ResolverConfig = kubetypes.ResolvConfDefault
92 obj.SerializeImagePulls = true
93 obj.StreamingConnectionIdleTimeout = metav1.Duration{Duration: 4 * time.Hour}
94 obj.SyncFrequency = metav1.Duration{Duration: 1 * time.Minute}
95 obj.ContentType = "application/vnd.kubernetes.protobuf"
96 obj.KubeAPIQPS = 50
97 obj.KubeAPIBurst = 100
98 obj.HairpinMode = v1beta1.PromiscuousBridge
99 obj.EvictionHard = eviction.DefaultEvictionHard
100 obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute}
101 obj.MakeIPTablesUtilChains = true
102 obj.IPTablesMasqueradeBit = kubeletconfigv1beta1.DefaultIPTablesMasqueradeBit
103 obj.IPTablesDropBit = kubeletconfigv1beta1.DefaultIPTablesDropBit
104 obj.CgroupsPerQOS = true
105 obj.CgroupDriver = "cgroupfs"
106 obj.EnforceNodeAllocatable = kubeletconfigv1beta1.DefaultNodeAllocatableEnforcement
107 obj.StaticPodURLHeader = make(map[string][]string)
108 obj.ContainerLogMaxFiles = 5
109 obj.ContainerLogMaxSize = "10Mi"
110 obj.ContainerLogMaxWorkers = 1
111 obj.ContainerLogMonitorInterval = metav1.Duration{Duration: 10 * time.Second}
112 obj.ConfigMapAndSecretChangeDetectionStrategy = "Watch"
113 obj.AllowedUnsafeSysctls = []string{}
114 obj.VolumePluginDir = kubeletconfigv1beta1.DefaultVolumePluginDir
115 obj.ContainerRuntimeEndpoint = "unix:///run/containerd/containerd.sock"
116
117 if obj.Logging.Format == "" {
118 obj.Logging.Format = "text"
119 }
120 obj.EnableSystemLogHandler = true
121 obj.MemoryThrottlingFactor = utilpointer.Float64(rand.Float64())
122 obj.LocalStorageCapacityIsolation = true
123 },
124 }
125 }
126
View as plain text