Merge pull request #95076 from dougsland/deprecate-delete-local-data
kubectl: deprecate --delete-local-data Kubernetes-commit: f7cfe3ba0f0434f82208cc940c0770984e5758f5
This commit is contained in:
		
						commit
						6e0a2df5c6
					
				| 
						 | 
				
			
			@ -768,7 +768,7 @@
 | 
			
		|||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/apimachinery",
 | 
			
		||||
			"Rev": "a876aa51a713"
 | 
			
		||||
			"Rev": "1aed267868af"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/cli-runtime",
 | 
			
		||||
| 
						 | 
				
			
			@ -776,7 +776,7 @@
 | 
			
		|||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/client-go",
 | 
			
		||||
			"Rev": "4ef01cd5e2b2"
 | 
			
		||||
			"Rev": "534b10dd0412"
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			"ImportPath": "k8s.io/code-generator",
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										10
									
								
								go.mod
								
								
								
								
							
							
						
						
									
										10
									
								
								go.mod
								
								
								
								
							| 
						 | 
				
			
			@ -35,9 +35,9 @@ require (
 | 
			
		|||
	golang.org/x/sys v0.0.0-20200622214017-ed371f2e16b4
 | 
			
		||||
	gopkg.in/yaml.v2 v2.2.8
 | 
			
		||||
	k8s.io/api v0.0.0-20201103002210-18d4659ab40b
 | 
			
		||||
	k8s.io/apimachinery v0.0.0-20201103002032-a876aa51a713
 | 
			
		||||
	k8s.io/apimachinery v0.0.0-20201103082028-1aed267868af
 | 
			
		||||
	k8s.io/cli-runtime v0.0.0-20201102204136-d0f4150e4c60
 | 
			
		||||
	k8s.io/client-go v0.0.0-20201102202440-4ef01cd5e2b2
 | 
			
		||||
	k8s.io/client-go v0.0.0-20201103122446-534b10dd0412
 | 
			
		||||
	k8s.io/component-base v0.0.0-20201102202913-3b346c3e8128
 | 
			
		||||
	k8s.io/klog/v2 v2.2.0
 | 
			
		||||
	k8s.io/kube-openapi v0.0.0-20200923155610-8b5066479488
 | 
			
		||||
| 
						 | 
				
			
			@ -49,10 +49,12 @@ require (
 | 
			
		|||
 | 
			
		||||
replace (
 | 
			
		||||
	k8s.io/api => k8s.io/api v0.0.0-20201103002210-18d4659ab40b
 | 
			
		||||
	k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20201103002032-a876aa51a713
 | 
			
		||||
	k8s.io/apimachinery => k8s.io/apimachinery v0.0.0-20201103082028-1aed267868af
 | 
			
		||||
	k8s.io/cli-runtime => k8s.io/cli-runtime v0.0.0-20201102204136-d0f4150e4c60
 | 
			
		||||
	k8s.io/client-go => k8s.io/client-go v0.0.0-20201102202440-4ef01cd5e2b2
 | 
			
		||||
	k8s.io/client-go => k8s.io/client-go v0.0.0-20201103122446-534b10dd0412
 | 
			
		||||
	k8s.io/code-generator => k8s.io/code-generator v0.0.0-20201102201853-e7a6809e9fe3
 | 
			
		||||
	k8s.io/component-base => k8s.io/component-base v0.0.0-20201102202913-3b346c3e8128
 | 
			
		||||
	k8s.io/metrics => k8s.io/metrics v0.0.0-20201102204027-de1a3d1600b4
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
replace k8s.io/component-helpers => k8s.io/component-helpers v0.0.0-20201103005013-f4b28bd014f1
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
							
								
								
									
										4
									
								
								go.sum
								
								
								
								
							
							
						
						
									
										4
									
								
								go.sum
								
								
								
								
							| 
						 | 
				
			
			@ -509,9 +509,9 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
 | 
			
		|||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
 | 
			
		||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
 | 
			
		||||
k8s.io/api v0.0.0-20201103002210-18d4659ab40b/go.mod h1:b+K6RbdbECmbVaw11+iMzmt6th7YpfdynGdh/HKUa54=
 | 
			
		||||
k8s.io/apimachinery v0.0.0-20201103002032-a876aa51a713/go.mod h1:6s3VNb000AUbBIxR7q3WHlbBwfpEGqIJsCG5gIX+0LI=
 | 
			
		||||
k8s.io/apimachinery v0.0.0-20201103082028-1aed267868af/go.mod h1:6s3VNb000AUbBIxR7q3WHlbBwfpEGqIJsCG5gIX+0LI=
 | 
			
		||||
k8s.io/cli-runtime v0.0.0-20201102204136-d0f4150e4c60/go.mod h1:BPUgo08u37PddGZFkOYILKKyRdwmYp82Z1RunIwiQ+4=
 | 
			
		||||
k8s.io/client-go v0.0.0-20201102202440-4ef01cd5e2b2/go.mod h1:q8iYaakKTdWiTaU4ZsW7uUdg++3YOt99MPnpQ4BlG+w=
 | 
			
		||||
k8s.io/client-go v0.0.0-20201103122446-534b10dd0412/go.mod h1:eZXqnPJiVVWY2+7NwTdK2FTjO8hczO3Dyc4NYU9HPOs=
 | 
			
		||||
k8s.io/code-generator v0.0.0-20201102201853-e7a6809e9fe3/go.mod h1:oioc17TXBB973K4R+ytm5k9jY1BktboxJc7qu3i29V0=
 | 
			
		||||
k8s.io/component-base v0.0.0-20201102202913-3b346c3e8128/go.mod h1:/nWuTBUUN0ayOy6M2gPPEbJLcu3pBzdQG+RvOeE0nr8=
 | 
			
		||||
k8s.io/gengo v0.0.0-20200413195148-3a45101e95ac/go.mod h1:ezvh/TsK7cY6rbqRK0oQQ8IAqLxYwwyPxAX1Pzy0ii0=
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -187,7 +187,9 @@ func NewCmdDrain(f cmdutil.Factory, ioStreams genericclioptions.IOStreams) *cobr
 | 
			
		|||
	}
 | 
			
		||||
	cmd.Flags().BoolVar(&o.drainer.Force, "force", o.drainer.Force, "Continue even if there are pods not managed by a ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet.")
 | 
			
		||||
	cmd.Flags().BoolVar(&o.drainer.IgnoreAllDaemonSets, "ignore-daemonsets", o.drainer.IgnoreAllDaemonSets, "Ignore DaemonSet-managed pods.")
 | 
			
		||||
	cmd.Flags().BoolVar(&o.drainer.DeleteLocalData, "delete-local-data", o.drainer.DeleteLocalData, "Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).")
 | 
			
		||||
	cmd.Flags().BoolVar(&o.drainer.DeleteEmptyDirData, "delete-local-data", o.drainer.DeleteEmptyDirData, "Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).")
 | 
			
		||||
	cmd.Flags().MarkDeprecated("delete-local-data", "This option is deprecated and will be deleted. Use --delete-emptydir-data.")
 | 
			
		||||
	cmd.Flags().BoolVar(&o.drainer.DeleteEmptyDirData, "delete-emptydir-data", o.drainer.DeleteEmptyDirData, "Continue even if there are pods using emptyDir (local data that will be deleted when the node is drained).")
 | 
			
		||||
	cmd.Flags().IntVar(&o.drainer.GracePeriodSeconds, "grace-period", o.drainer.GracePeriodSeconds, "Period of time in seconds given to each pod to terminate gracefully. If negative, the default value specified in the pod will be used.")
 | 
			
		||||
	cmd.Flags().DurationVar(&o.drainer.Timeout, "timeout", o.drainer.Timeout, "The length of time to wait before giving up, zero means infinite")
 | 
			
		||||
	cmd.Flags().StringVarP(&o.drainer.Selector, "selector", "l", o.drainer.Selector, "Selector (label query) to filter on")
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -626,6 +626,16 @@ func TestDrain(t *testing.T) {
 | 
			
		|||
			expected:     cordonedNode,
 | 
			
		||||
			pods:         []corev1.Pod{jobPod},
 | 
			
		||||
			rcs:          []corev1.ReplicationController{rc},
 | 
			
		||||
			args:         []string{"node", "--force", "--delete-emptydir-data=true"},
 | 
			
		||||
			expectFatal:  false,
 | 
			
		||||
			expectDelete: true,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description:  "Ensure compatibility for --delete-local-data until fully deprecated",
 | 
			
		||||
			node:         node,
 | 
			
		||||
			expected:     cordonedNode,
 | 
			
		||||
			pods:         []corev1.Pod{jobPod},
 | 
			
		||||
			rcs:          []corev1.ReplicationController{rc},
 | 
			
		||||
			args:         []string{"node", "--force", "--delete-local-data=true"},
 | 
			
		||||
			expectFatal:  false,
 | 
			
		||||
			expectDelete: true,
 | 
			
		||||
| 
						 | 
				
			
			@ -690,11 +700,11 @@ func TestDrain(t *testing.T) {
 | 
			
		|||
			expectDelete: true,
 | 
			
		||||
		},
 | 
			
		||||
		{
 | 
			
		||||
			description:  "pod with EmptyDir and --delete-local-data",
 | 
			
		||||
			description:  "pod with EmptyDir and --delete-emptydir-data",
 | 
			
		||||
			node:         node,
 | 
			
		||||
			expected:     cordonedNode,
 | 
			
		||||
			pods:         []corev1.Pod{emptydirPod},
 | 
			
		||||
			args:         []string{"node", "--force", "--delete-local-data=true"},
 | 
			
		||||
			args:         []string{"node", "--force", "--delete-emptydir-data=true"},
 | 
			
		||||
			expectFatal:  false,
 | 
			
		||||
			expectDelete: true,
 | 
			
		||||
		},
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -52,7 +52,7 @@ type Helper struct {
 | 
			
		|||
	GracePeriodSeconds  int
 | 
			
		||||
	IgnoreAllDaemonSets bool
 | 
			
		||||
	Timeout             time.Duration
 | 
			
		||||
	DeleteLocalData     bool
 | 
			
		||||
	DeleteEmptyDirData  bool
 | 
			
		||||
	Selector            string
 | 
			
		||||
	PodSelector         string
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -31,7 +31,7 @@ import (
 | 
			
		|||
const (
 | 
			
		||||
	daemonSetFatal      = "DaemonSet-managed Pods (use --ignore-daemonsets to ignore)"
 | 
			
		||||
	daemonSetWarning    = "ignoring DaemonSet-managed Pods"
 | 
			
		||||
	localStorageFatal   = "Pods with local storage (use --delete-local-data to override)"
 | 
			
		||||
	localStorageFatal   = "Pods with local storage (use --delete-emptydir-data to override)"
 | 
			
		||||
	localStorageWarning = "deleting Pods with local storage"
 | 
			
		||||
	unmanagedFatal      = "Pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet (use --force to override)"
 | 
			
		||||
	unmanagedWarning    = "deleting Pods not managed by ReplicationController, ReplicaSet, Job, DaemonSet or StatefulSet"
 | 
			
		||||
| 
						 | 
				
			
			@ -218,7 +218,7 @@ func (d *Helper) localStorageFilter(pod corev1.Pod) PodDeleteStatus {
 | 
			
		|||
	if pod.Status.Phase == corev1.PodSucceeded || pod.Status.Phase == corev1.PodFailed {
 | 
			
		||||
		return MakePodDeleteStatusOkay()
 | 
			
		||||
	}
 | 
			
		||||
	if !d.DeleteLocalData {
 | 
			
		||||
	if !d.DeleteEmptyDirData {
 | 
			
		||||
		return MakePodDeleteStatusWithError(localStorageFatal)
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue