mirror of
https://github.com/k3s-io/kubernetes.git
synced 2025-07-21 19:01:49 +00:00
kubeadm: Add the option to cleanup the tmp
directory
The `tmp` is created by `kubeadm` but is never removed, the size is expected to be expanded as time goes by. Add one bool option to cleanup the `tmp` dir, the flag is off by default. Signed-off-by: Dave Chen <dave.chen@arm.com>
This commit is contained in:
parent
cba0dcecc9
commit
57551cc3d7
@ -148,4 +148,7 @@ const (
|
|||||||
|
|
||||||
// Print the addon manifests to STDOUT instead of installing them.
|
// Print the addon manifests to STDOUT instead of installing them.
|
||||||
PrintManifest = "print-manifest"
|
PrintManifest = "print-manifest"
|
||||||
|
|
||||||
|
// CleanupTmpDir flag indicates whether reset will cleanup the tmp dir
|
||||||
|
CleanupTmpDir = "cleanup-tmp-dir"
|
||||||
)
|
)
|
||||||
|
@ -20,6 +20,7 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
"os"
|
"os"
|
||||||
|
"path"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
"github.com/pkg/errors"
|
||||||
@ -47,6 +48,7 @@ func NewCleanupNodePhase() workflow.Phase {
|
|||||||
InheritFlags: []string{
|
InheritFlags: []string{
|
||||||
options.CertificatesDir,
|
options.CertificatesDir,
|
||||||
options.NodeCRISocket,
|
options.NodeCRISocket,
|
||||||
|
options.CleanupTmpDir,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -103,7 +105,12 @@ func runCleanupNode(c workflow.RunData) error {
|
|||||||
if certsDir != kubeadmapiv1.DefaultCertificatesDir {
|
if certsDir != kubeadmapiv1.DefaultCertificatesDir {
|
||||||
klog.Warningf("[reset] WARNING: Cleaning a non-default certificates directory: %q\n", certsDir)
|
klog.Warningf("[reset] WARNING: Cleaning a non-default certificates directory: %q\n", certsDir)
|
||||||
}
|
}
|
||||||
|
|
||||||
dirsToClean = append(dirsToClean, certsDir)
|
dirsToClean = append(dirsToClean, certsDir)
|
||||||
|
if r.CleanupTmpDir() {
|
||||||
|
tempDir := path.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.TempDirForKubeadm)
|
||||||
|
dirsToClean = append(dirsToClean, tempDir)
|
||||||
|
}
|
||||||
resetConfigDir(kubeadmconstants.KubernetesDir, dirsToClean, r.DryRun())
|
resetConfigDir(kubeadmconstants.KubernetesDir, dirsToClean, r.DryRun())
|
||||||
|
|
||||||
if r.Cfg() != nil && features.Enabled(r.Cfg().FeatureGates, features.RootlessControlPlane) {
|
if r.Cfg() != nil && features.Enabled(r.Cfg().FeatureGates, features.RootlessControlPlane) {
|
||||||
|
@ -142,6 +142,17 @@ func TestConfigDirCleaner(t *testing.T) {
|
|||||||
"test-path",
|
"test-path",
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
"cleanup temp directory": {
|
||||||
|
setupDirs: []string{
|
||||||
|
"tmp",
|
||||||
|
},
|
||||||
|
setupFiles: []string{
|
||||||
|
"tmp/kubeadm-init-dryrun2845575027",
|
||||||
|
},
|
||||||
|
verifyExists: []string{
|
||||||
|
"tmp",
|
||||||
|
},
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for name, test := range tests {
|
for name, test := range tests {
|
||||||
@ -176,6 +187,7 @@ func TestConfigDirCleaner(t *testing.T) {
|
|||||||
dirsToClean := []string{
|
dirsToClean := []string{
|
||||||
filepath.Join(tmpDir, test.resetDir),
|
filepath.Join(tmpDir, test.resetDir),
|
||||||
filepath.Join(tmpDir, kubeadmconstants.ManifestsSubDirName),
|
filepath.Join(tmpDir, kubeadmconstants.ManifestsSubDirName),
|
||||||
|
filepath.Join(tmpDir, kubeadmconstants.TempDirForKubeadm),
|
||||||
}
|
}
|
||||||
resetConfigDir(tmpDir, dirsToClean, false)
|
resetConfigDir(tmpDir, dirsToClean, false)
|
||||||
|
|
||||||
@ -185,6 +197,7 @@ func TestConfigDirCleaner(t *testing.T) {
|
|||||||
assertNotExists(t, filepath.Join(tmpDir, kubeadmconstants.KubeletKubeConfigFileName))
|
assertNotExists(t, filepath.Join(tmpDir, kubeadmconstants.KubeletKubeConfigFileName))
|
||||||
assertDirEmpty(t, filepath.Join(tmpDir, "manifests"))
|
assertDirEmpty(t, filepath.Join(tmpDir, "manifests"))
|
||||||
assertDirEmpty(t, filepath.Join(tmpDir, "pki"))
|
assertDirEmpty(t, filepath.Join(tmpDir, "pki"))
|
||||||
|
assertDirEmpty(t, filepath.Join(tmpDir, "tmp"))
|
||||||
|
|
||||||
// Verify the files as requested by the test:
|
// Verify the files as requested by the test:
|
||||||
for _, path := range test.verifyExists {
|
for _, path := range test.verifyExists {
|
||||||
|
@ -36,4 +36,5 @@ type resetData interface {
|
|||||||
Client() clientset.Interface
|
Client() clientset.Interface
|
||||||
CertificatesDir() string
|
CertificatesDir() string
|
||||||
CRISocketPath() string
|
CRISocketPath() string
|
||||||
|
CleanupTmpDir() bool
|
||||||
}
|
}
|
||||||
|
@ -39,3 +39,4 @@ func (t *testData) DryRun() bool { return false }
|
|||||||
func (t *testData) Client() clientset.Interface { return nil }
|
func (t *testData) Client() clientset.Interface { return nil }
|
||||||
func (t *testData) CertificatesDir() string { return "" }
|
func (t *testData) CertificatesDir() string { return "" }
|
||||||
func (t *testData) CRISocketPath() string { return "" }
|
func (t *testData) CRISocketPath() string { return "" }
|
||||||
|
func (t *testData) CleanupTmpDir() bool { return false }
|
||||||
|
@ -19,6 +19,7 @@ package cmd
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"io"
|
||||||
|
"path"
|
||||||
|
|
||||||
"github.com/lithammer/dedent"
|
"github.com/lithammer/dedent"
|
||||||
"github.com/spf13/cobra"
|
"github.com/spf13/cobra"
|
||||||
@ -65,6 +66,7 @@ type resetOptions struct {
|
|||||||
ignorePreflightErrors []string
|
ignorePreflightErrors []string
|
||||||
kubeconfigPath string
|
kubeconfigPath string
|
||||||
dryRun bool
|
dryRun bool
|
||||||
|
cleanupTmpDir bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// resetData defines all the runtime information used when running the kubeadm reset workflow;
|
// resetData defines all the runtime information used when running the kubeadm reset workflow;
|
||||||
@ -79,6 +81,7 @@ type resetData struct {
|
|||||||
outputWriter io.Writer
|
outputWriter io.Writer
|
||||||
cfg *kubeadmapi.InitConfiguration
|
cfg *kubeadmapi.InitConfiguration
|
||||||
dryRun bool
|
dryRun bool
|
||||||
|
cleanupTmpDir bool
|
||||||
}
|
}
|
||||||
|
|
||||||
// newResetOptions returns a struct ready for being used for creating cmd join flags.
|
// newResetOptions returns a struct ready for being used for creating cmd join flags.
|
||||||
@ -87,6 +90,7 @@ func newResetOptions() *resetOptions {
|
|||||||
certificatesDir: kubeadmapiv1.DefaultCertificatesDir,
|
certificatesDir: kubeadmapiv1.DefaultCertificatesDir,
|
||||||
forceReset: false,
|
forceReset: false,
|
||||||
kubeconfigPath: kubeadmconstants.GetAdminKubeConfigPath(),
|
kubeconfigPath: kubeadmconstants.GetAdminKubeConfigPath(),
|
||||||
|
cleanupTmpDir: false,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -136,6 +140,7 @@ func newResetData(cmd *cobra.Command, options *resetOptions, in io.Reader, out i
|
|||||||
outputWriter: out,
|
outputWriter: out,
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
dryRun: options.dryRun,
|
dryRun: options.dryRun,
|
||||||
|
cleanupTmpDir: options.cleanupTmpDir,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -160,6 +165,10 @@ func AddResetFlags(flagSet *flag.FlagSet, resetOptions *resetOptions) {
|
|||||||
&resetOptions.dryRun, options.DryRun, resetOptions.dryRun,
|
&resetOptions.dryRun, options.DryRun, resetOptions.dryRun,
|
||||||
"Don't apply any changes; just output what would be done.",
|
"Don't apply any changes; just output what would be done.",
|
||||||
)
|
)
|
||||||
|
flagSet.BoolVar(
|
||||||
|
&resetOptions.cleanupTmpDir, options.CleanupTmpDir, resetOptions.cleanupTmpDir,
|
||||||
|
fmt.Sprintf("Cleanup the %q directory", path.Join(kubeadmconstants.KubernetesDir, kubeadmconstants.TempDirForKubeadm)),
|
||||||
|
)
|
||||||
|
|
||||||
options.AddKubeConfigFlag(flagSet, &resetOptions.kubeconfigPath)
|
options.AddKubeConfigFlag(flagSet, &resetOptions.kubeconfigPath)
|
||||||
options.AddIgnorePreflightErrorsFlag(flagSet, &resetOptions.ignorePreflightErrors)
|
options.AddIgnorePreflightErrorsFlag(flagSet, &resetOptions.ignorePreflightErrors)
|
||||||
@ -215,11 +224,16 @@ func (r *resetData) Cfg() *kubeadmapi.InitConfiguration {
|
|||||||
return r.cfg
|
return r.cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
// DryRun returns the DryRun flag.
|
// DryRun returns the dryRun flag.
|
||||||
func (r *resetData) DryRun() bool {
|
func (r *resetData) DryRun() bool {
|
||||||
return r.dryRun
|
return r.dryRun
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// CleanupTmpDir returns the cleanupTmpDir flag.
|
||||||
|
func (r *resetData) CleanupTmpDir() bool {
|
||||||
|
return r.cleanupTmpDir
|
||||||
|
}
|
||||||
|
|
||||||
// CertificatesDir returns the CertificatesDir.
|
// CertificatesDir returns the CertificatesDir.
|
||||||
func (r *resetData) CertificatesDir() string {
|
func (r *resetData) CertificatesDir() string {
|
||||||
return r.certificatesDir
|
return r.certificatesDir
|
||||||
|
Loading…
Reference in New Issue
Block a user