From cf1e6984828da3496a72745a1b5e24f6b6f69c31 Mon Sep 17 00:00:00 2001 From: KimDoubleB Date: Tue, 2 Aug 2022 10:04:36 +0900 Subject: [PATCH] [ko] Translate docs/tasks/administer-cluster/use-cascading-deletion to Korean --- .../use-cascading-deletion.md | 353 ++++++++++++++++++ 1 file changed, 353 insertions(+) create mode 100644 content/ko/docs/tasks/administer-cluster/use-cascading-deletion.md diff --git a/content/ko/docs/tasks/administer-cluster/use-cascading-deletion.md b/content/ko/docs/tasks/administer-cluster/use-cascading-deletion.md new file mode 100644 index 0000000000..fa15524c55 --- /dev/null +++ b/content/ko/docs/tasks/administer-cluster/use-cascading-deletion.md @@ -0,0 +1,353 @@ +--- +title: 클러스터에서 캐스케이딩 삭제 사용 +content_type: task +--- + + + +이 페이지에서는 {{}} 중 +클러스터에서 사용할 [캐스케이딩 삭제](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를 사용해 +포그라운드 캐스케이딩 삭제로 전환할 수 있다. {{}} + +{{}} +{{% tab name="쿠버네티스 1.20.x 이후 버전" %}} +`kubectl` 또는 쿠버네티스 API를 사용해 +포그라운드 캐스케이딩 삭제로 오브젝트들을 삭제할 수 있다. + +**kubectl 사용** + +다음 명령어를 실행한다. + + +```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` {{}}가 포함되어 있다. + + ``` + "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` {{}}가 포함되어 있다. + + ``` + "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 %}} +{{}} + +## 백그라운드 캐스케이딩 삭제 사용 {#use-background-cascading-deletion} + +1. [샘플 디플로이먼트를 생성한다](/ko/docs/tasks/run-application/run-stateless-application-deployment/#nginx-디플로이먼트-생성하고-탐색하기). +1. 클러스터를 실행하는 쿠버네티스 버전에 따라 + 디플로이먼트를 삭제하기 위해 `kubectl` 또는 쿠버네티스 API를 사용한다. {{}} + +{{}} +{{% 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 %}} +{{}} + + +## 소유자 오브젝트 및 종속된 고아(orphan) 오브젝트 삭제 {#set-orphan-deletion-policy} + +기본적으로, 쿠버네티스에 오브젝트를 삭제하도록 지시하면 +{{}}는 +종속 오브젝트들도 제거한다. 클러스터를 실행하는 +쿠버네티스 버전에 따라 `kubectl` 또는 쿠버네티스 API를 사용해 +종속 오브젝트를 쿠버네티스 *고아*로 만들 수 있다. {{}} + +{{}} +{{% 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 %}} +{{}} + +디플로이먼트가 관리하는 파드들이 계속 실행 중인지 확인할 수 있다. + +```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/)에 대해 알아보자.