diff --git a/staging/src/k8s.io/apiserver/pkg/server/options/etcd.go b/staging/src/k8s.io/apiserver/pkg/server/options/etcd.go index 16e2626de4800..ef9883267495b 100644 --- a/staging/src/k8s.io/apiserver/pkg/server/options/etcd.go +++ b/staging/src/k8s.io/apiserver/pkg/server/options/etcd.go @@ -127,6 +127,10 @@ func (s *EtcdOptions) AddFlags(fs *pflag.FlagSet) { fs.StringVar(&s.EncryptionProviderConfigFilepath, "experimental-encryption-provider-config", s.EncryptionProviderConfigFilepath, "The file containing configuration for encryption providers to be used for storing secrets in etcd") + + fs.BoolVar(&s.StorageConfig.DisableCompaction, "etcd-disable-compaction", s.StorageConfig.DisableCompaction, + "If true, disable issuing compaction request from apiserver.") + } func (s *EtcdOptions) ApplyTo(c *server.Config) error { diff --git a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/config.go b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/config.go index 2a88ddf745302..0171b90ec4bf8 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/config.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/config.go @@ -50,6 +50,9 @@ type Config struct { Copier runtime.ObjectCopier // Transformer allows the value to be transformed prior to persisting into etcd. Transformer value.Transformer + + // DisableCompaction is a flag to turn off requesting compaction from apiserver. + DisableCompaction bool } func NewDefaultConfig(prefix string, copier runtime.ObjectCopier, codec runtime.Codec) *Config { @@ -58,7 +61,8 @@ func NewDefaultConfig(prefix string, copier runtime.ObjectCopier, codec runtime. // Default cache size to 0 - if unset, its size will be set based on target // memory usage. DeserializationCacheSize: 0, - Copier: copier, - Codec: codec, + Copier: copier, + Codec: codec, + DisableCompaction: false, } } diff --git a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go index 2c838a09ce746..460ef40d33e89 100644 --- a/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go +++ b/staging/src/k8s.io/apiserver/pkg/storage/storagebackend/factory/etcd3.go @@ -51,7 +51,9 @@ func newETCD3Storage(c storagebackend.Config) (storage.Interface, DestroyFunc, e return nil, nil, err } ctx, cancel := context.WithCancel(context.Background()) - etcd3.StartCompactor(ctx, client) + if !c.DisableCompaction { + etcd3.StartCompactor(ctx, client) + } destroyFunc := func() { cancel() client.Close()