123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227 |
- /*
- Copyright 2015 The Kubernetes Authors.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
- */
- package v1beta1
- import (
- "time"
- metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
- kruntime "k8s.io/apimachinery/pkg/runtime"
- kubeletconfigv1beta1 "k8s.io/kubelet/config/v1beta1"
- // TODO: Cut references to k8s.io/kubernetes, eventually there should be none from this package
- "k8s.io/kubernetes/pkg/kubelet/qos"
- kubetypes "k8s.io/kubernetes/pkg/kubelet/types"
- "k8s.io/kubernetes/pkg/master/ports"
- utilpointer "k8s.io/utils/pointer"
- )
- const (
- // TODO: Move these constants to k8s.io/kubelet/config/v1beta1 instead?
- DefaultIPTablesMasqueradeBit = 14
- DefaultIPTablesDropBit = 15
- )
- var (
- zeroDuration = metav1.Duration{}
- // TODO: Move these constants to k8s.io/kubelet/config/v1beta1 instead?
- // Refer to [Node Allocatable](https://git.k8s.io/community/contributors/design-proposals/node/node-allocatable.md) doc for more information.
- DefaultNodeAllocatableEnforcement = []string{"pods"}
- )
- func addDefaultingFuncs(scheme *kruntime.Scheme) error {
- return RegisterDefaults(scheme)
- }
- func SetDefaults_KubeletConfiguration(obj *kubeletconfigv1beta1.KubeletConfiguration) {
- if obj.SyncFrequency == zeroDuration {
- obj.SyncFrequency = metav1.Duration{Duration: 1 * time.Minute}
- }
- if obj.FileCheckFrequency == zeroDuration {
- obj.FileCheckFrequency = metav1.Duration{Duration: 20 * time.Second}
- }
- if obj.HTTPCheckFrequency == zeroDuration {
- obj.HTTPCheckFrequency = metav1.Duration{Duration: 20 * time.Second}
- }
- if obj.Address == "" {
- obj.Address = "0.0.0.0"
- }
- if obj.Port == 0 {
- obj.Port = ports.KubeletPort
- }
- if obj.Authentication.Anonymous.Enabled == nil {
- obj.Authentication.Anonymous.Enabled = utilpointer.BoolPtr(false)
- }
- if obj.Authentication.Webhook.Enabled == nil {
- obj.Authentication.Webhook.Enabled = utilpointer.BoolPtr(true)
- }
- if obj.Authentication.Webhook.CacheTTL == zeroDuration {
- obj.Authentication.Webhook.CacheTTL = metav1.Duration{Duration: 2 * time.Minute}
- }
- if obj.Authorization.Mode == "" {
- obj.Authorization.Mode = kubeletconfigv1beta1.KubeletAuthorizationModeWebhook
- }
- if obj.Authorization.Webhook.CacheAuthorizedTTL == zeroDuration {
- obj.Authorization.Webhook.CacheAuthorizedTTL = metav1.Duration{Duration: 5 * time.Minute}
- }
- if obj.Authorization.Webhook.CacheUnauthorizedTTL == zeroDuration {
- obj.Authorization.Webhook.CacheUnauthorizedTTL = metav1.Duration{Duration: 30 * time.Second}
- }
- if obj.RegistryPullQPS == nil {
- obj.RegistryPullQPS = utilpointer.Int32Ptr(5)
- }
- if obj.RegistryBurst == 0 {
- obj.RegistryBurst = 10
- }
- if obj.EventRecordQPS == nil {
- obj.EventRecordQPS = utilpointer.Int32Ptr(5)
- }
- if obj.EventBurst == 0 {
- obj.EventBurst = 10
- }
- if obj.EnableDebuggingHandlers == nil {
- obj.EnableDebuggingHandlers = utilpointer.BoolPtr(true)
- }
- if obj.HealthzPort == nil {
- obj.HealthzPort = utilpointer.Int32Ptr(10248)
- }
- if obj.HealthzBindAddress == "" {
- obj.HealthzBindAddress = "127.0.0.1"
- }
- if obj.OOMScoreAdj == nil {
- obj.OOMScoreAdj = utilpointer.Int32Ptr(int32(qos.KubeletOOMScoreAdj))
- }
- if obj.StreamingConnectionIdleTimeout == zeroDuration {
- obj.StreamingConnectionIdleTimeout = metav1.Duration{Duration: 4 * time.Hour}
- }
- if obj.NodeStatusReportFrequency == zeroDuration {
- // For backward compatibility, NodeStatusReportFrequency's default value is
- // set to NodeStatusUpdateFrequency if NodeStatusUpdateFrequency is set
- // explicitly.
- if obj.NodeStatusUpdateFrequency == zeroDuration {
- obj.NodeStatusReportFrequency = metav1.Duration{Duration: 5 * time.Minute}
- } else {
- obj.NodeStatusReportFrequency = obj.NodeStatusUpdateFrequency
- }
- }
- if obj.NodeStatusUpdateFrequency == zeroDuration {
- obj.NodeStatusUpdateFrequency = metav1.Duration{Duration: 10 * time.Second}
- }
- if obj.NodeLeaseDurationSeconds == 0 {
- obj.NodeLeaseDurationSeconds = 40
- }
- if obj.ImageMinimumGCAge == zeroDuration {
- obj.ImageMinimumGCAge = metav1.Duration{Duration: 2 * time.Minute}
- }
- if obj.ImageGCHighThresholdPercent == nil {
- // default is below docker's default dm.min_free_space of 90%
- obj.ImageGCHighThresholdPercent = utilpointer.Int32Ptr(85)
- }
- if obj.ImageGCLowThresholdPercent == nil {
- obj.ImageGCLowThresholdPercent = utilpointer.Int32Ptr(80)
- }
- if obj.VolumeStatsAggPeriod == zeroDuration {
- obj.VolumeStatsAggPeriod = metav1.Duration{Duration: time.Minute}
- }
- if obj.CgroupsPerQOS == nil {
- obj.CgroupsPerQOS = utilpointer.BoolPtr(true)
- }
- if obj.CgroupDriver == "" {
- obj.CgroupDriver = "cgroupfs"
- }
- if obj.CPUManagerPolicy == "" {
- obj.CPUManagerPolicy = "none"
- }
- if obj.CPUManagerReconcilePeriod == zeroDuration {
- // Keep the same as default NodeStatusUpdateFrequency
- obj.CPUManagerReconcilePeriod = metav1.Duration{Duration: 10 * time.Second}
- }
- if obj.TopologyManagerPolicy == "" {
- obj.TopologyManagerPolicy = kubeletconfigv1beta1.NoneTopologyManagerPolicy
- }
- if obj.RuntimeRequestTimeout == zeroDuration {
- obj.RuntimeRequestTimeout = metav1.Duration{Duration: 2 * time.Minute}
- }
- if obj.HairpinMode == "" {
- obj.HairpinMode = kubeletconfigv1beta1.PromiscuousBridge
- }
- if obj.MaxPods == 0 {
- obj.MaxPods = 110
- }
- // default nil or negative value to -1 (implies node allocatable pid limit)
- if obj.PodPidsLimit == nil || *obj.PodPidsLimit < int64(0) {
- temp := int64(-1)
- obj.PodPidsLimit = &temp
- }
- if obj.ResolverConfig == "" {
- obj.ResolverConfig = kubetypes.ResolvConfDefault
- }
- if obj.CPUCFSQuota == nil {
- obj.CPUCFSQuota = utilpointer.BoolPtr(true)
- }
- if obj.CPUCFSQuotaPeriod == nil {
- obj.CPUCFSQuotaPeriod = &metav1.Duration{Duration: 100 * time.Millisecond}
- }
- if obj.MaxOpenFiles == 0 {
- obj.MaxOpenFiles = 1000000
- }
- if obj.ContentType == "" {
- obj.ContentType = "application/vnd.kubernetes.protobuf"
- }
- if obj.KubeAPIQPS == nil {
- obj.KubeAPIQPS = utilpointer.Int32Ptr(5)
- }
- if obj.KubeAPIBurst == 0 {
- obj.KubeAPIBurst = 10
- }
- if obj.SerializeImagePulls == nil {
- obj.SerializeImagePulls = utilpointer.BoolPtr(true)
- }
- if obj.EvictionHard == nil {
- obj.EvictionHard = DefaultEvictionHard
- }
- if obj.EvictionPressureTransitionPeriod == zeroDuration {
- obj.EvictionPressureTransitionPeriod = metav1.Duration{Duration: 5 * time.Minute}
- }
- if obj.EnableControllerAttachDetach == nil {
- obj.EnableControllerAttachDetach = utilpointer.BoolPtr(true)
- }
- if obj.MakeIPTablesUtilChains == nil {
- obj.MakeIPTablesUtilChains = utilpointer.BoolPtr(true)
- }
- if obj.IPTablesMasqueradeBit == nil {
- obj.IPTablesMasqueradeBit = utilpointer.Int32Ptr(DefaultIPTablesMasqueradeBit)
- }
- if obj.IPTablesDropBit == nil {
- obj.IPTablesDropBit = utilpointer.Int32Ptr(DefaultIPTablesDropBit)
- }
- if obj.FailSwapOn == nil {
- obj.FailSwapOn = utilpointer.BoolPtr(true)
- }
- if obj.ContainerLogMaxSize == "" {
- obj.ContainerLogMaxSize = "10Mi"
- }
- if obj.ContainerLogMaxFiles == nil {
- obj.ContainerLogMaxFiles = utilpointer.Int32Ptr(5)
- }
- if obj.ConfigMapAndSecretChangeDetectionStrategy == "" {
- obj.ConfigMapAndSecretChangeDetectionStrategy = kubeletconfigv1beta1.WatchChangeDetectionStrategy
- }
- if obj.EnforceNodeAllocatable == nil {
- obj.EnforceNodeAllocatable = DefaultNodeAllocatableEnforcement
- }
- }
|