Merge pull request #35816 from KimDoubleB/ko_use-cascading-deletion

[ko] Translate docs/tasks/administer-cluster/use-cascading-deletion to Korean
pull/36665/head
Kubernetes Prow Robot 2022-09-06 01:18:55 -07:00 committed by GitHub
commit 7b76973490
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 353 additions and 0 deletions

View File

@ -0,0 +1,353 @@
---
title: 클러스터에서 캐스케이딩 삭제 사용
content_type: task
---
<!--overview-->
이 페이지에서는 {{<glossary_tooltip text="가비지 수집" term_id="garbage-collection">}} 중
클러스터에서 사용할 [캐스케이딩 삭제](ko/docs/concepts/architecture/garbage-collection/#cascading-deletion)
타입을 지정하는 방법을 보여준다.
## {{% heading "prerequisites" %}}
{{< include "task-tutorial-prereqs.md" >}}
또한 다양한 타입들의 캐스케이딩 삭제를 실험하려면
[샘플 디플로이먼트를 생성](ko/docs/tasks/run-application/run-stateless-application-deployment/#nginx-디플로이먼트-생성하고-탐색하기)할 필요가 있다. 각 타입에 대해 디플로이먼트를
다시 생성해야 할 수도 있다.
## 파드에서 소유자 참조 확인
파드에서 `ownerReferences` 필드가 존재하는지 확인한다.
```shell
kubectl get pods -l app=nginx --output=yaml
```
출력은 다음과 같이 `ownerReferences` 필드를 가진다.
```yaml
apiVersion: v1
...
ownerReferences:
- apiVersion: apps/v1
blockOwnerDeletion: true
controller: true
kind: ReplicaSet
name: nginx-deployment-6b474476c4
uid: 4fdcd81c-bd5d-41f7-97af-3a3b759af9a7
...
```
## 포그라운드(foreground) 캐스케이딩 삭제 사용 {#use-foreground-cascading-deletion}
기본적으로 쿠버네티스는 종속 오브젝트를 삭제하기 위해서
[백그라운드 캐스케이딩 삭제](/ko/docs/concepts/architecture/garbage-collection/#background-deletion)를 사용한다. 클러스터를 실행하는 쿠버네티스 버전에 따라
`kubectl` 또는 쿠버네티스 API를 사용해
포그라운드 캐스케이딩 삭제로 전환할 수 있다. {{<version-check>}}
{{<tabs name="foreground_deletion">}}
{{% tab name="쿠버네티스 1.20.x 이후 버전" %}}
`kubectl` 또는 쿠버네티스 API를 사용해
포그라운드 캐스케이딩 삭제로 오브젝트들을 삭제할 수 있다.
**kubectl 사용**
다음 명령어를 실행한다.
<!--TODO: verify release after which the --cascade flag is switched to a string in https://github.com/kubernetes/kubectl/commit/fd930e3995957b0093ecc4b9fd8b0525d94d3b4e-->
```shell
kubectl delete deployment nginx-deployment --cascade=foreground
```
**쿠버네티스 API 사용**
1. 로컬 프록시 세션을 시작한다.
```shell
kubectl proxy --port=8080
```
1. 삭제를 작동시키기 위해 `curl`을 사용한다.
```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"
```
출력에는 다음과 같이
`foregroundDeletion` {{<glossary_tooltip text="파이널라이저(finalizer)" term_id="finalizer">}}가 포함되어 있다.
```
"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"
]
...
```
{{% /tab %}}
{{% tab name="쿠버네티스 1.20.x 전 버전" %}}
쿠버네티스 API를 사용해
포그라운드 캐스케이딩 삭제로 오브젝트들을 삭제할 수 있다.
상세한 내용은 [쿠버네티스 버전에 따른 문서](ko/docs/home/supported-doc-versions/)를 참고한다.
1. 로컬 프록시 세션을 시작한다.
```shell
kubectl proxy --port=8080
```
1. 삭제를 작동시키기 위해 `curl`을 사용한다.
```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"
```
출력에는 다음과 같이
`foregroundDeletion` {{<glossary_tooltip text="파이널라이저(finalizer)" term_id="finalizer">}}가 포함되어 있다.
```
"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"
]
...
```
{{% /tab %}}
{{</tabs>}}
## 백그라운드 캐스케이딩 삭제 사용 {#use-background-cascading-deletion}
1. [샘플 디플로이먼트를 생성한다](/ko/docs/tasks/run-application/run-stateless-application-deployment/#nginx-디플로이먼트-생성하고-탐색하기).
1. 클러스터를 실행하는 쿠버네티스 버전에 따라
디플로이먼트를 삭제하기 위해 `kubectl` 또는 쿠버네티스 API를 사용한다. {{<version-check>}}
{{<tabs name="background_deletion">}}
{{% tab name="쿠버네티스 1.20.x 이후 버전" %}}
`kubectl` 또는 쿠버네티스 API를 사용해
백그라운드 캐스케이딩 삭제로 오브젝트들을 삭제할 수 있다.
쿠버네티스는 기본적으로 백그라운드 캐스케이딩 삭제를 사용하므로, `--cascade` 플래그
또는 `propagationPolicy` 인수 없이
다음 명령을 실행해도 같은 작업을 수행한다.
**kubectl 사용**
다음 명령어를 실행한다.
```shell
kubectl delete deployment nginx-deployment --cascade=background
```
**쿠버네티스 API 사용**
1. 로컬 프록시 세션을 시작한다.
```shell
kubectl proxy --port=8080
```
1. 삭제를 작동시키기 위해 `curl`을 사용한다.
```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"
```
출력은 다음과 유사하다.
```
"kind": "Status",
"apiVersion": "v1",
...
"status": "Success",
"details": {
"name": "nginx-deployment",
"group": "apps",
"kind": "deployments",
"uid": "cc9eefb9-2d49-4445-b1c1-d261c9396456"
}
```
{{% /tab %}}
{{% tab name="쿠버네티스 1.20.x 전 버전" %}}
쿠버네티스는 기본적으로 백그라운드 캐스케이딩 삭제를 사용하므로, `--cascade` 플래그
또는 `propagationPolicy: Background` 인수 없이
다음 명령을 실행해도 같은 작업을 수행한다.
상세한 내용은 [쿠버네티스 버전에 따른 문서](ko/docs/home/supported-doc-versions/)를 참고한다.
**kubectl 사용**
다음 명령어를 실행한다.
```shell
kubectl delete deployment nginx-deployment --cascade=true
```
**쿠버네티스 API 사용**
1. 로컬 프록시 세션을 시작한다.
```shell
kubectl proxy --port=8080
```
1. 삭제를 작동시키기 위해 `curl`을 사용한다.
```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"
```
출력은 다음과 유사하다.
```
"kind": "Status",
"apiVersion": "v1",
...
"status": "Success",
"details": {
"name": "nginx-deployment",
"group": "apps",
"kind": "deployments",
"uid": "cc9eefb9-2d49-4445-b1c1-d261c9396456"
}
```
{{% /tab %}}
{{</tabs>}}
## 소유자 오브젝트 및 종속된 고아(orphan) 오브젝트 삭제 {#set-orphan-deletion-policy}
기본적으로, 쿠버네티스에 오브젝트를 삭제하도록 지시하면
{{<glossary_tooltip text="컨트롤러" term_id="controller">}}는
종속 오브젝트들도 제거한다. 클러스터를 실행하는
쿠버네티스 버전에 따라 `kubectl` 또는 쿠버네티스 API를 사용해
종속 오브젝트를 쿠버네티스 *고아*로 만들 수 있다. {{<version-check>}}
{{<tabs name="orphan_objects">}}
{{% tab name="쿠버네티스 1.20.x 이후 버전" %}}
**kubectl 사용**
다음 명령어를 실행한다.
```shell
kubectl delete deployment nginx-deployment --cascade=orphan
```
**쿠버네티스 API 사용**
1. 로컬 프록시 세션을 시작한다.
```shell
kubectl proxy --port=8080
```
1. 삭제를 작동시키기 위해 `curl`을 사용한다.
```shell
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Orphan"}' \
-H "Content-Type: application/json"
```
출력에는 다음과 같이 `finalizers` 필드에 `orphan`이 포함되어 있다.
```
"kind": "Deployment",
"apiVersion": "apps/v1",
"namespace": "default",
"uid": "6f577034-42a0-479d-be21-78018c466f1f",
"creationTimestamp": "2021-07-09T16:46:37Z",
"deletionTimestamp": "2021-07-09T16:47:08Z",
"deletionGracePeriodSeconds": 0,
"finalizers": [
"orphan"
],
...
```
{{% /tab %}}
{{% tab name="쿠버네티스 1.20.x 전 버전" %}}
상세한 내용은 [쿠버네티스 버전에 따른 문서](ko/docs/home/supported-doc-versions/)를 참고한다.
**kubectl 사용**
다음 명령어를 실행한다.
```shell
kubectl delete deployment nginx-deployment --cascade=orphan
```
**쿠버네티스 API 사용**
1. 로컬 프록시 세션을 시작한다.
```shell
kubectl proxy --port=8080
```
1. 삭제를 작동시키기 위해 `curl`을 사용한다.
```shell
curl -X DELETE localhost:8080/apis/apps/v1/namespaces/default/deployments/nginx-deployment \
-d '{"kind":"DeleteOptions","apiVersion":"v1","propagationPolicy":"Orphan"}' \
-H "Content-Type: application/json"
```
출력에는 다음과 같이 `finalizers` 필드에 `orphan`이 포함되어 있다.
```
"kind": "Deployment",
"apiVersion": "apps/v1",
"namespace": "default",
"uid": "6f577034-42a0-479d-be21-78018c466f1f",
"creationTimestamp": "2021-07-09T16:46:37Z",
"deletionTimestamp": "2021-07-09T16:47:08Z",
"deletionGracePeriodSeconds": 0,
"finalizers": [
"orphan"
],
...
```
{{% /tab %}}
{{</tabs>}}
디플로이먼트가 관리하는 파드들이 계속 실행 중인지 확인할 수 있다.
```shell
kubectl get pods -l app=nginx
```
## {{% heading "whatsnext" %}}
* 쿠버네티스의 [소유자와 종속 오브젝트](/docs/concepts/overview/working-with-objects/owners-dependents/)에 대해 알아보자.
* 쿠버네티스 [파이널라이저(finalizers)](/docs/concepts/overview/working-with-objects/finalizers/)에 대해 알아보자.
* [가비지(garbage) 수집](/ko/docs/concepts/architecture/garbage-collection/)에 대해 알아보자.