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