diff --git a/pkg/api/persistentvolume/util.go b/pkg/api/persistentvolume/util.go index 4afb69c50b8..bf703f7aa69 100644 --- a/pkg/api/persistentvolume/util.go +++ b/pkg/api/persistentvolume/util.go @@ -69,6 +69,10 @@ func warningsForPersistentVolumeSpecAndMeta(fieldPath *field.Path, pvSpec *api.P ) } + if pvSpec.PersistentVolumeReclaimPolicy == api.PersistentVolumeReclaimRecycle { + warnings = append(warnings, fmt.Sprintf("%s: The Recycle reclaim policy is deprecated. Instead, the recommended approach is to use dynamic provisioning.", fieldPath.Child("spec", "persistentVolumeReclaimPolicy"))) + } + if pvSpec.NodeAffinity != nil && pvSpec.NodeAffinity.Required != nil { termFldPath := fieldPath.Child("spec", "nodeAffinity", "required", "nodeSelectorTerms") // use of deprecated node labels in node affinity diff --git a/pkg/api/persistentvolume/util_test.go b/pkg/api/persistentvolume/util_test.go index b479aff55a7..d00aa9de060 100644 --- a/pkg/api/persistentvolume/util_test.go +++ b/pkg/api/persistentvolume/util_test.go @@ -174,6 +174,17 @@ func TestWarnings(t *testing.T) { `spec.nodeAffinity.required.nodeSelectorTerms[0].matchExpressions[0].key: beta.kubernetes.io/os is deprecated since v1.14; use "kubernetes.io/os" instead`, }, }, + { + name: "PersistentVolumeReclaimRecycle deprecation warning", + template: &api.PersistentVolume{ + Spec: api.PersistentVolumeSpec{ + PersistentVolumeReclaimPolicy: api.PersistentVolumeReclaimRecycle, + }, + }, + expected: []string{ + `spec.persistentVolumeReclaimPolicy: The Recycle reclaim policy is deprecated. Instead, the recommended approach is to use dynamic provisioning.`, + }, + }, { name: "PV CephFS deprecation warning", template: &api.PersistentVolume{