First Korean I10n work for release-1.14 (#13730)

* First Korean I10n work for release-1.14

- ko: Fix nav-menu sync in tutorials/statefulset #13374 (#13474)
- ko: add outdated files in dev-1.14-ko.1 branch (#13473)
- Translate title of concepts/../image.md Ko (#13507)
- ko: add translation tutorial/stateful-application/cassandra #12450 (#13515)
- Translate reference/kubectl/cheatsheet in Korean (#13549)
- Translate tasks/access-application-cluster/access-cluster in Korean (#13565)
- ko: add tutorials/stateful-application/mysql-wordpress-persistent-vol… (#13516)
- Issue 12838 object management kubectl imperative config (#13657)
- Translate standardized glossary Tag Fandamental in Korean (#13552)

Co-authored-by:    Kim Young Dae <38598117+zer0big@users.noreply.github.com>

Co-authored-by:    Yoon <learder@gmail.com>

Co-authored-by:    lapee79 <lapee79@gmail.com>

Co-authored-by:    Jesang Myung <jesang.myung@gmail.com>

Co-authored-by:    Seokho <shsongist@gmail.com>

Co-authored-by:    Claudia J.Kang <claudiajkang@gmail.com>

Co-authored-by:    June Yi <june.yi@samsung.com>

* Fix conflict : pick-right-solution
This commit is contained in:
Claudia J.Kang
2019-04-10 09:42:12 +09:00
committed by Kubernetes Prow Robot
parent 866fc48195
commit 34074d33ff
78 changed files with 2782 additions and 1028 deletions
@@ -0,0 +1,5 @@
---
title: "상태 유지가 필요한(stateful) 애플리케이션"
weight: 50
---
@@ -67,11 +67,11 @@ kubectl get pods -w -l app=nginx
```
두번째 터미널에서
[`kubectl create`](/docs/reference/generated/kubectl/kubectl-commands/#create)로
[`kubectl apply`](/docs/reference/generated/kubectl/kubectl-commands/#apply)로
`web.yaml`에 정의된 헤드리스 서비스와 스테이트풀셋을 생성한다.
```shell
kubectl create -f web.yaml
kubectl apply -f web.yaml
service/nginx created
statefulset.apps/web created
```
@@ -154,7 +154,7 @@ web-1
확인할 수 있다.
```shell
kubectl run -i --tty --image busybox dns-test --restart=Never --rm /bin/sh
kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm
nslookup web-0.nginx
Server: 10.0.0.10
Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local
@@ -212,7 +212,7 @@ for i in 0 1; do kubectl exec web-$i -- sh -c 'hostname'; done
web-0
web-1
kubectl run -i --tty --image busybox dns-test --restart=Never --rm /bin/sh
kubectl run -i --tty --image busybox:1.28 dns-test --restart=Never --rm /bin/sh
nslookup web-0.nginx
Server: 10.0.0.10
Address 1: 10.0.0.10 kube-dns.kube-system.svc.cluster.local
@@ -774,7 +774,7 @@ kubectl get pods -w -l app=nginx
볼 것이라는 것을 명심하자.
```shell
kubectl create -f web.yaml
kubectl apply -f web.yaml
statefulset.apps/web created
Error from server (AlreadyExists): error when creating "web.yaml": services "nginx" already exists
```
@@ -874,7 +874,7 @@ service "nginx" deleted
스테이트풀셋과 헤드리스 서비스를 한번 더 다시 생성하자.
```shell
kubectl create -f web.yaml
kubectl apply -f web.yaml
service/nginx created
statefulset.apps/web created
```
@@ -938,7 +938,7 @@ kubectl get po -l app=nginx -w
다른 터미널에서 매니페스트 안에 스테이트풀셋과 서비스를 생성하자.
```shell
kubectl create -f web-parallel.yaml
kubectl apply -f web-parallel.yaml
service/nginx created
statefulset.apps/web created
```
@@ -0,0 +1,258 @@
---
title: "예시: 카산드라를 스테이트풀셋으로 배포하기"
reviewers:
content_template: templates/tutorial
weight: 30
---
{{% capture overview %}}
이 튜토리얼은 네이티브 클라우드 [카산드라](http://cassandra.apache.org/)를 쿠버네티스에서 배포하는 방법을 소개한다. 이 예제에서 커스텀 카산드라 *시드 제공자(SeedProvider)* 는 카산드라가 클러스터에 조인한 새 카산드라 노드를 발견할 수 있게 한다.
*스테이트풀셋* 은 상태있는 애플리케이션을 클러스터 환경에서 쉽게 배포할 수 있게 한다. 이 튜토리얼에서 이용할 기능의 자세한 정보는 [*스테이트풀셋*](/docs/concepts/workloads/controllers/statefulset/) 문서를 참조하자.
**도커에서 카산드라**
이 튜토리얼의 *파드* 는 구글의 [컨테이너 레지스트리](https://cloud.google.com/container-registry/docs/)에
[`gcr.io/google-samples/cassandra:v13`](https://github.com/kubernetes/examples/blob/master/cassandra/image/Dockerfile) 이미지를 이용한다.
이 도커 이미지는 [debian-base](https://github.com/kubernetes/kubernetes/tree/master/build/debian-base)에
기반하였고 OpenJDK 8을 포함한다.
이 이미지는 아파치 데비안 리포의 표준 카산드라 설치본을 포함한다.
환경변수를 이용하여 `cassandra.yaml`에 삽입된 값을 바꿀 수 있다.
| 환경 변수 | 기본값 |
| ------------- |:-------------: |
| `CASSANDRA_CLUSTER_NAME` | `'Test Cluster'` |
| `CASSANDRA_NUM_TOKENS` | `32` |
| `CASSANDRA_RPC_ADDRESS` | `0.0.0.0` |
{{% /capture %}}
{{% capture objectives %}}
* 카산드라 헤드리스 [*서비스*](/docs/concepts/services-networking/service/)를 생성하고 검증한다.
* [스테이트풀셋](/docs/concepts/workloads/controllers/statefulset/)을 이용하여 카산드라 링을 생성한다.
* [스테이트풀셋](/docs/concepts/workloads/controllers/statefulset/)을 검증한다.
* [스테이트풀셋](/docs/concepts/workloads/controllers/statefulset/)을 수정한다.
* [스테이트풀셋](/docs/concepts/workloads/controllers/statefulset/)과 포함된 [파드](/docs/concepts/workloads/pods/pod/)를 삭제한다.
{{% /capture %}}
{{% capture prerequisites %}}
이 튜토리얼을 완료하려면, [파드](/docs/concepts/workloads/pods/pod/), [서비스](/docs/concepts/services-networking/service/), [스테이트풀셋](/docs/concepts/workloads/controllers/statefulset/)의 기본 개념에 친숙해야한다. 추가로
* *kubectl* 커맨드라인 도구를 [설치와 설정](/docs/tasks/tools/install-kubectl/)하자.
* [`cassandra-service.yaml`](/examples/application/cassandra/cassandra-service.yaml)와
[`cassandra-statefulset.yaml`](/examples/application/cassandra/cassandra-statefulset.yaml)를 다운로드한다.
* 실행 중인 쿠버네티스 클러스터를 소유
{{< note >}}
아직 클러스터가 없다면 [시작하기](/docs/setup/pick-right-solution/)를 읽도록 하자.
{{< /note >}}
### 추가적인 Minikube 설정 요령
{{< caution >}}
[Minikube](/docs/getting-started-guides/minikube/)는 1024MB 메모리와 1개 CPU가 기본 설정이다. 이 튜토리얼에서 Minikube를 기본 리소스 설정으로 실행하면 리소스 부족 오류가 발생한다. 이런 오류를 피하려면 Minikube를 다음 설정으로 실행하자.
```shell
minikube start --memory 5120 --cpus=4
```
{{< /caution >}}
{{% /capture %}}
{{% capture lessoncontent %}}
## 카산드라 헤드리스 서비스 생성하기
쿠버네티스 [서비스](/docs/concepts/services-networking/service/)는 동일 작업을 수행하는 [파드](/docs/concepts/workloads/pods/pod/)의 집합을 기술한다.
다음의 `서비스`는 쿠버네티스 클러스터에서 카산드라 파드와 클라이언트 간에 DNS 찾아보기 용도로 사용한다.
{{< codenew file="application/cassandra/cassandra-service.yaml" >}}
1. 다운로드 받은 매니페스트 파일 디렉터리에 터미널 윈도우를 열자.
1. `cassandra-service.yaml` 파일에서 카산드라 스테이트풀셋 노드를 모두 추적하는 서비스를 생성한다.
```shell
kubectl apply -f https://k8s.io/examples/application/cassandra/cassandra-service.yaml
```
### 검증하기 (선택)
카산드라 서비스 살펴보기
```shell
kubectl get svc cassandra
```
결과는 다음과 같다.
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
cassandra ClusterIP None <none> 9042/TCP 45s
```
이와 다른 응답이라면 서비스 생성에 실패한 것이다. 일반적인 문제에 대한 [서비스 디버깅하기](/docs/tasks/debug-application-cluster/debug-service/)를 읽어보자.
## 카산드라 링을 생성하는 스테이트풀셋 이용하기
스테이트풀셋 매니페스트에는 다음을 포함하는데 3개 파드로 구성된 카산드라 링을 생성한다.
{{< note >}}
이 예는 Minikube를 위한 기본 프로비저너이다. 다음 스테이트풀셋을 작업하는 클라우드 환경에서 갱신한다.
{{< /note >}}
{{< codenew file="application/cassandra/cassandra-statefulset.yaml" >}}
1. 필요하면 스테이트풀셋 갱신
1. `cassandra-statefulset.yaml` 파일로 카산드라 스테이트풀셋 생성
```shell
kubectl apply -f https://k8s.io/examples/application/cassandra/cassandra-statefulset.yaml
```
## 카산드라 스테이트풀셋 검증하기
1. 카산드라 스테이트풀셋 얻기
```shell
kubectl get statefulset cassandra
```
응답은 다음과 같다.
```
NAME DESIRED CURRENT AGE
cassandra 3 0 13s
```
`StatefulSet`리소스는 순차적으로 파드를 배포한다.
1. 순차적으로 생성된 현황을 보기 위해 파드를 살펴보자.
```shell
kubectl get pods -l="app=cassandra"
```
응답은 다음과 같다.
```shell
NAME READY STATUS RESTARTS AGE
cassandra-0 1/1 Running 0 1m
cassandra-1 0/1 ContainerCreating 0 8s
```
모든 3개 파드가 배포되기까지 몇 분이 소요될 수 있다. 배포 후에는 같은 명령은 다음같이 응답한다.
```
NAME READY STATUS RESTARTS AGE
cassandra-0 1/1 Running 0 10m
cassandra-1 1/1 Running 0 9m
cassandra-2 1/1 Running 0 8m
```
3. 링의 상태를 보여주는 카산드라 [nodetool](https://wiki.apache.org/cassandra/NodeTool)을 실행하자.
```shell
kubectl exec -it cassandra-0 -- nodetool status
```
이 응답은 다음과 비슷하게 보일 것이다.
```
Datacenter: DC1-K8Demo
======================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN 172.17.0.5 83.57 KiB 32 74.0% e2dd09e6-d9d3-477e-96c5-45094c08db0f Rack1-K8Demo
UN 172.17.0.4 101.04 KiB 32 58.8% f89d6835-3a42-4419-92b3-0e62cae1479c Rack1-K8Demo
UN 172.17.0.6 84.74 KiB 32 67.1% a6a1e8c2-3dc5-4417-b1a0-26507af2aaad Rack1-K8Demo
```
## 카산드라 스테이트풀셋 수정하기
`kubectl edit`를 사용하여 카산드라 스테이트풀셋의 크기를 수정한다.
1. 다음 명령어를 실행한다.
```shell
kubectl edit statefulset cassandra
```
이 명령은 터미널에서 편집기를 연다. 변경해야할 행은 `replicas` 필드이다. 다음 예제는 `StatefulSet` 파일에서 발췌했다.
```yaml
# Please edit the object below. Lines beginning with a '#' will be ignored,
# and an empty file will abort the edit. If an error occurs while saving this file will be
# reopened with the relevant failures.
#
apiVersion: apps/v1 # for versions before 1.9.0 use apps/v1beta2
kind: StatefulSet
metadata:
creationTimestamp: 2016-08-13T18:40:58Z
generation: 1
labels:
app: cassandra
name: cassandra
namespace: default
resourceVersion: "323"
selfLink: /apis/apps/v1/namespaces/default/statefulsets/cassandra
uid: 7a219483-6185-11e6-a910-42010a8a0fc0
spec:
replicas: 3
```
1. 레플리카 개수를 4로 바꾸고, 매니페스트를 저장한다.
The `StatefulSet` now contains 4 Pods.
1. 검증하기 위해 카산드라 스테이트풀셋을 살펴보자
```shell
kubectl get statefulset cassandra
```
결과는 다음과 같다.
```
NAME DESIRED CURRENT AGE
cassandra 4 4 36m
```
{{% /capture %}}
{{% capture cleanup %}}
스테이트풀셋을 삭제하거나 스케일링하는 것은 스테이트풀셋에 연관된 볼륨을 삭제하지 않는다. 당신의 데이터가 스테이트풀셋의 관련된 모든 리소스를 자동으로 제거하는 것보다 더 가치있기에 이 설정은 당신의 안전을 위한 것이다.
{{< warning >}}
스토리지 클래스와 리클레임 정책에 따라 *퍼시스턴스볼륨클레임* 을 삭제하면 그와 연관된 볼륨도 삭제될 수 있다. 볼륨 요청이 삭제되어도 데이터를 접근할 수 있다고 절대로 가정하지 말자.
{{< /warning >}}
1. 다음 명령어(한 줄로 연결된)를 실행하여 카산드라 `스테이트풀셋`을 모두 제거하자.
```shell
grace=$(kubectl get po cassandra-0 -o=jsonpath='{.spec.terminationGracePeriodSeconds}') \
&& kubectl delete statefulset -l app=cassandra \
&& echo "Sleeping $grace" \
&& sleep $grace \
&& kubectl delete pvc -l app=cassandra
```
1. 다음 명령어를 실행하여 카산드라 서비스를 제거하자.
```shell
kubectl delete service -l app=cassandra
```
{{% /capture %}}
{{% capture whatsnext %}}
* 어떻게 [스테이트풀셋 스케일](/docs/tasks/run-application/scale-stateful-set/)하는지 살펴본다.
* [*쿠버네티스시드제공자*](https://github.com/kubernetes/examples/blob/master/cassandra/java/src/main/java/io/k8s/cassandra/KubernetesSeedProvider.java)에 대해 더 살펴본다.
* 커스텀 [시드 제공자 설정](https://git.k8s.io/examples/cassandra/java/README.md)를 살펴본다.
{{% /capture %}}
@@ -0,0 +1,233 @@
---
title: "예시: WordPress와 MySQL을 퍼시스턴트 볼륨에 배포하기"
reviewers:
content_template: templates/tutorial
weight: 20
card:
name: tutorials
weight: 40
title: "스테이트풀셋 예시: Wordpress와 퍼시스턴트 볼륨"
---
{{% capture overview %}}
이 튜토리얼은 WordPress 사이트와 MySQL 데이터베이스를 Minikube를 이용하여 어떻게 배포하는지 보여준다. 애플리케이션 둘 다 퍼시스턴트 볼륨과 퍼시스턴트볼륨클레임을 데이터를 저장하기 위해 사용한다.
[퍼시스턴트볼륨](/docs/concepts/storage/persistent-volumes/)(PV)는 관리자가 수동으로 프로비저닝한 클러스터나 쿠버네티스 [스토리지클래스](/docs/concepts/storage/storage-classes)를 이용해 동적으로 프로비저닝된 저장소의 일부이다. [퍼시스턴트볼륨클레임](/docs/concepts/storage/persistent-volumes/#persistentvolumeclaims)(PVC)은 PV로 충족할 수 있는 사용자에 의한 스토리지 요청이다. 퍼시스턴트볼륨은 파드 라이프사이클과 독립적이며 재시작, 재스케줄링이나 파드를 삭제할 때에도 데이터를 보존한다.
{{< warning >}}
이 배포는 프로덕션 사용예로는 적절하지 않은데 이는 단일 인스턴스의 WordPress와 MySQL을 이용했기 때문이다. 프로덕션이라면 [WordPress Helm Chart](https://github.com/kubernetes/charts/tree/master/stable/wordpress)로 배포하기를 고려해보자.
{{< /warning >}}
{{< note >}}
이 튜토리얼에 제공된 파일들은 GA 디플로이먼트 API를 사용하며 쿠버네티스 버전 1.9 이상을 이용한다. 이 튜토리얼을 쿠버네티스 하위 버전에서 적용한다면 API 버전을 적절히 갱신하거나 이 튜토리얼의 이전 버전을 참고하자.
{{< /note >}}
{{% /capture %}}
{{% capture objectives %}}
* 퍼시스턴트볼륨클레임과 퍼시스턴트볼륨 생성
* 다음을 포함하는 `kustomization.yaml` 생성
* 시크릿 생성자
* MySQL 리소스 구성
* WordPress 리소스 구성
* `kubectl apply -k ./`로 생성한 kustomization 을 적용
* 정리
{{% /capture %}}
{{% capture prerequisites %}}
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
이 예시는 `kubectl` 1.14 이상 버전에서 동작한다.
다음 설정 파일을 다운로드한다.
1. [mysql-deployment.yaml](/examples/application/wordpress/mysql-deployment.yaml)
1. [wordpress-deployment.yaml](/examples/application/wordpress/wordpress-deployment.yaml)
{{% /capture %}}
{{% capture lessoncontent %}}
## 퍼시스턴트볼륨클레임과 퍼시스턴트볼륨 생성
MySQL과 Wordpress는 각각 데이터를 저장할 퍼시스턴트볼륨이 필요하다. 퍼시스턴트볼륨클레임은 배포 단계에 생성된다.
많은 클러스터 환경에서 설치된 기본 스토리지클래스(StorageClass)가 있다. 퍼시스턴트볼륨클레임에 스토리지클래스를 지정하지 않으면 클러스터의 기본 스토리지클래스를 사용한다.
퍼시스턴트볼륨클레임이 생성되면 퍼시스턴트볼륨이 스토리지클래스 설정을 기초로 동적으로 프로비저닝된다.
{{< warning >}}
로컬 클러스터에서 기본 스토리지클래스는 `hostPath` 프로비저너를 사용한다. `hostPath`는 개발과 테스트 목적에만 적합하다. `hostPath` 볼륨인 경우 데이터는 스케쥴링된 파드의 노드에 `/tmp` 살아있고 노드 간에 이동하지 않는다. 파드가 죽어서 클러스터 내에 다른 노드로 스케줄링되거나 해당 노드가 재부팅되면 그 데이터는 잃어버린다.
{{< /warning >}}
{{< note >}}
`hostPath` 프로비저너를 사용해야 하는 클러스터를 기동하는 경우라면 `--enable-hostpath-provisioner` 플래그를 `controller-manager` 컴포넌트에 꼭 설정해야 한다.
{{< /note >}}
{{< note >}}
만약 구글 쿠버네티스 엔진으로 운영하는 쿠버네티스 클러스터를 가지고 있다면 [가이드](https://cloud.google.com/kubernetes-engine/docs/tutorials/persistent-disk)를 따르도록 한다.
{{< /note >}}
## kustomization.yaml 생성하기
### 시크릿 생성자 추가
[시크릿](/docs/concepts/configuration/secret/)은 암호나 키 같은 민감한 데이터들을 저장하는 개체이다. 1.14 버전부터 `kubectl`은 kustomization 파일을 이용해서 쿠버네티스 개체를 관리한다. `kustomization.yaml`의 제네레니터로 시크릿을 생성할 수 있다.
다음 명령어로 `kustomization.yaml` 내에 시크릿 제네레이터를 추가한다. `YOUR_PASSWORD`는 사용하기 원하는 암호로 변경해야 한다.
```shell
cat <<EOF >./kustomization.yaml
secretGenerator:
- name: mysql-pass
literals:
- password=YOUR_PASSWORD
EOF
```
## MySQL과 WordPress에 필요한 리소스 구성 추가하기
다음 매니페스트는 MySQL 디플로이먼트 단일 인스턴스를 기술한다. MySQL 컨케이너는 퍼시스턴트볼륨을 /var/lib/mysql에 마운트한다. `MYSQL_ROOT_PASSWORD` 환경변수는 시크릿에서 가져와 데이터베이스 암호로 설정한다.
{{< codenew file="application/wordpress/mysql-deployment.yaml" >}}
1. MySQL 디플로이먼트 구성 파일을 다운로드한다.
```shell
curl -LO https://k8s.io/examples/application/wordpress/mysql-deployment.yaml
```
2. WordPress 구성 파일을 다운로드한다.
```shell
curl -LO https://k8s.io/examples/application/wordpress/wordpress-deployment.yaml
```
3. 두 파일을 `kustomization.yaml`에 추가하자.
```shell
cat <<EOF >>./kustomization.yaml
resources:
- mysql-deployment.yaml
- wordpress-deployment.yaml
EOF
```
## 적용하고 확인하기
`kustomization.yaml`은 WordPress 사이트와 MySQL 데이터베이스를 배포하는 모든 리소스를 포함한다.
다음과 같이 디렉터리를 적용할 수 있다.
```shell
kubectl apply -k ./
```
이제 모든 개체가 존재하는지 확인할 수 있다.
1. 시크릿이 존재하는지 다음 명령어를 실행하여 확인한다.
```shell
kubectl get secrets
```
응답은 아래와 비슷해야 한다.
```shell
NAME TYPE DATA AGE
mysql-pass-c57bb4t7mf Opaque 1 9s
```
2. 퍼시스턴트볼륨이 동적으로 프로비저닝되었는지 확인한다.
```shell
kubectl get pvc
```
{{< note >}}
PV를 프로비저닝하고 정착(bound)시키는데 수 분이 걸릴 수 있다.
{{< /note >}}
응답은 아래와 비슷해야 한다.
```shell
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
mysql-pv-claim Bound pvc-8cbd7b2e-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s
wp-pv-claim Bound pvc-8cd0df54-4044-11e9-b2bb-42010a800002 20Gi RWO standard 77s
```
3. 다음 명령어를 실행하여 파드가 실행 중인지 확인한다.
```shell
kubectl get pods
```
{{< note >}}
파드의 상태가 `RUNNING`가 되기까지 수 분이 걸릴 수 있다.
{{< /note >}}
응답은 아래와 비슷해야 한다.
```
NAME READY STATUS RESTARTS AGE
wordpress-mysql-1894417608-x5dzt 1/1 Running 0 40s
```
4. 다음 명령어를 실행하여 서비스가 실행 중인지 확인해보자.
```shell
kubectl get services wordpress
```
응답은 아래와 비슷해야 한다.
```
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
wordpress ClusterIP 10.0.0.89 <pending> 80:32406/TCP 4m
```
{{< note >}}
Minikube에서는 서비스를 `NodePort`으로만 노출할 수 있다. EXTERNAL-IP는 항상 Pending 상태이다.
{{< /note >}}
5. 다음 명령어를 실행하여 WordPress 서비스의 IP 주소를 얻어온다.
```shell
minikube service wordpress --url
```
응답은 아래와 비슷해야 한다.
```
http://1.2.3.4:32406
```
6. IP 주소를 복사해서 웹 브라우저에서 사이트를 열어 보자.
아래 스크린샷과 유사한 WordPress 설정 페이지를 볼 수 있어야 한다.
![wordpress-init](https://raw.githubusercontent.com/kubernetes/examples/master/mysql-wordpress-pd/WordPress.png)
{{< warning >}}
이 페이지의 WordPress 설치를 내버려 두지 말자. 다른 사용자가 이 페이지를 발견하고 귀하의 인스턴스에 웹 사이트를 설정하고 악의적인 컨텐츠를 게시하는데 사용할 수 있다. <br/><br/>WordPress를 사용자명과 암호를 넣어 생성하거나 인스턴스를 삭제하자.
{{< /warning >}}
{{% /capture %}}
{{% capture cleanup %}}
1. 다음 명령을 실핼하여 시크릿, 디플로이먼트, 서비스와 퍼시스턴트볼륨클레임을 삭제하자.
```shell
kubectl delete -k ./
```
{{% /capture %}}
{{% capture whatsnext %}}
* [인트로스펙션과 디버깅](/docs/tasks/debug-application-cluster/debug-application-introspection/)를 알아보자.
* [](/docs/concepts/workloads/controllers/jobs-run-to-completion/)를 알아보자.
* [포트 포워딩](/docs/tasks/access-application-cluster/port-forward-access-application-cluster/)를 알아보자.
* 어떻게 [컨테이너에서 셸을 사용하는지](/docs/tasks/debug-application-cluster/get-shell-running-container/)를 알아보자.
{{% /capture %}}