⎈ k8s knowledge compiler

Use Cascading Deletion in a Cluster [page]deterministic

tasks

This page shows you how to specify the type of [cascading deletion](/docs/concepts/architecture/garbage-collection/#cascading-deletion) to use in your cluster during [garbage collection](#gloss:garbage-collection).

##

You also need to [create a sample Deployment](/docs/tasks/run-application/run-stateless-application-deployment/#creating-and-exploring-an-nginx-deployment) to experiment with the different types of cascading deletion. You will need to recreate the Deployment for each type.

## Check owner references on your pods

Check that the `ownerReferences` field is present on your pods:

```shell kubectl get pods -l app=nginx --output=yaml ```

The output has an `ownerReferences` field similar to this:

```yaml apiVersion: v1 ... ownerReferences: - apiVersion: apps/v1 blockOwnerDeletion: true controller: true kind: ReplicaSet name: nginx-deployment-6b474476c4 uid: 4fdcd81c-bd5d-41f7-97af-3a3b759af9a7 ... ```

## Use foreground cascading deletion {#use-foreground-cascading-deletion}

By default, Kubernetes uses [background cascading deletion](/docs/concepts/architecture/garbage-collection/#background-deletion) to delete dependents of an object. You can switch to foreground cascading deletion using either `kubectl` or the Kubernetes API, depending on the Kubernetes version your cluster runs.

You can delete objects using foreground cascading deletion using `kubectl` or the Kubernetes API.

Using kubectl

Run the following command:

```shell kubectl delete deployment nginx-deployment --cascade=foreground ```

Using the Kubernetes API

1. Start a local proxy session:

```shell kubectl proxy --port=8080 ```

1. Use `curl` to trigger deletion:

```shell curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \ -d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Foreground"}' \ -H "Content-Type: application/json" ```

The output contains a `foregroundDeletion` [finalizer](#gloss:finalizer) like this:

``` "kind": "Deployment", "apiVersion": "apps/v1", "metadata": { "name": "nginx-deployment", "namespace": "default", "uid": "d1ce1b02-cae8-4288-8a53-30e84d8fa505", "resourceVersion": "1363097", "creationTimestamp": "2021-07-08T20:24:37Z", "deletionTimestamp": "2021-07-08T20:27:39Z", "finalizers": [ "foregroundDeletion" ] ... ```

## Use background cascading deletion {#use-background-cascading-deletion}

1. [Create a sample Deployment](/docs/tasks/run-application/run-stateless-application-deployment/#creating-and-exploring-an-nginx-deployment). 1. Use either `kubectl` or the Kubernetes API to delete the Deployment, depending on the Kubernetes version your cluster runs.

You can delete objects using background cascading deletion using `kubectl` or the Kubernetes API.

Kubernetes uses background cascading deletion by default, and does so even if you run the following commands without the `--cascade` flag or the `propagationPolicy` argument.

Using kubectl

Run the following command:

```shell kubectl delete deployment nginx-deployment --cascade=background ```

Using the Kubernetes API

1. Start a local proxy session:

```shell kubectl proxy --port=8080 ```

1. Use `curl` to trigger deletion:

```shell curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \ -d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Background"}' \ -H "Content-Type: application/json" ```

The output is similar to this:

``` "kind": "Status", "apiVersion": "v1", ... "status": "Success", "details": { "name": "nginx-deployment", "group": "apps", "kind": "deployments", "uid": "cc9eefb9-2d49-4445-b1c1-d261c9396456" } ```

## Delete owner objects and orphan dependents {#set-orphan …(trimmed)

Sources

tasks/administer-cluster/use-cascading-deletion.md · docUse Cascading Deletion in a Cluster

Related (9)

references Garbage Collectiongarbage collection conf=1
references Finalizerfinalizer conf=1
references Controllercontroller conf=1
part_of {{% heading "prerequisites" %}}describes conf=1
part_of Check owner references on your podsdescribes conf=1
part_of {{% heading "whatsnext" %}}describes conf=1

← all Docs