Sixth Korean l10n work for release 1.18
- Update outdated files in dev-1.18-ko.6 partly (#21714) - Translate StorageClass to Korean word (#21805) - Translate StatefulSet to Korean word in pods.md (#21794) - Translate tasks/run-application/delete-stateful-set/ in Korean (#21686) - Translate tasks/administer-cluster/change-default-storage-class in Korean (#21801) - update outdated docs (#21940) - Modify spacing term StatefulSet in Korean (#21871) - Translate /tasks/administer-cluster/coredns in Korean (#21876) - Fix typo in k8s.io/ko/docs/contribute/new-content/new-content/ (#21975) - Translation error correction in /concepts/containers/runtime-class.md (#21868) - Translate tasks/tls/certificate-rotation/ in Korean (#21838) - Translate /tasks/configure-pod-container/static-pod in Korean (#21798) - Update to Outdated files in the dev-1.18-ko.6 branch - (1/4) (#21911) - Fix English bugs in Korean documentation (#21994) - Update outdated dev-1.18-ko.6 partly (#22067) Co-authored-by: Jerry Park <jaehwa@gmail.com> Co-authored-by: PyungHo Yoon <learder@gmail.com> Co-authored-by: Yuk, Yongsu <ysyukr@gmail.com> Co-authored-by: Jerry Park <jaehwa@gmail.com> Co-authored-by: Seokho Son <shsongist@gmail.com> Co-authored-by: Jordy Ruiter <jordy.ruiter@gmail.com> Co-authored-by: bluefriday <bluefriday86@gmail.com> Co-authored-by: Dajin Gwon <d.gweon@samsung.com> Co-authored-by: Hyungseok Lee <hs0426.lee@samsung.com> Co-authored-by: Jihoon Seo <jihoon.seo@etri.re.kr> Co-authored-by: coolguyhong <podolsmith@naver.com> Co-authored-by: jmyung <jesang.myung@gmail.com> Co-authored-by: June Yi <june.yi@samsung.com>
This commit is contained in:
@@ -25,7 +25,8 @@ weight: 10
|
||||
서비스 실행이 필요하다. 이미 실행중인 metrics-server가 있다면
|
||||
다음 단계를 건너뛸 수 있다.
|
||||
|
||||
Minikube를 사용 중이라면, 다음 명령어를 실행해 metric-server를 활성화 할 수 있다.
|
||||
Minikube를 사용 중이라면, 다음 명령어를 실행해 metric-server를
|
||||
활성화할 수 있다.
|
||||
|
||||
```shell
|
||||
minikube addons enable metrics-server
|
||||
@@ -52,7 +53,8 @@ v1beta1.metrics.k8s.io
|
||||
|
||||
## 네임스페이스 생성
|
||||
|
||||
이 예제에서 생성할 자원과 클러스터 내 나머지를 분리하기 위해 네임스페이스를 생성한다.
|
||||
이 예제에서 생성할 자원과 클러스터 내 나머지를 분리하기 위해
|
||||
네임스페이스를 생성한다.
|
||||
|
||||
```shell
|
||||
kubectl create namespace mem-example
|
||||
@@ -110,8 +112,9 @@ resources:
|
||||
kubectl top pod memory-demo --namespace=mem-example
|
||||
```
|
||||
|
||||
출력은 파드가 약 150MiB 해당하는 약 162,900,000 바이트 메모리를 사용하는 것을 보여준다.
|
||||
이는 파드의 100 MiB 요청 보다 많으나 파드의 200 MiB 상한보다는 적다.
|
||||
출력은 파드가 약 150 MiB 해당하는 약 162,900,000 바이트 메모리를 사용하는 것을 보여준다.
|
||||
이는 파드의 100 MiB 요청 보다 많으나
|
||||
파드의 200 MiB 상한보다는 적다.
|
||||
|
||||
```
|
||||
NAME CPU(cores) MEMORY(bytes)
|
||||
@@ -138,7 +141,7 @@ kubectl delete pod memory-demo --namespace=mem-example
|
||||
|
||||
{{< codenew file="pods/resource/memory-request-limit-2.yaml" >}}
|
||||
|
||||
구성 파일의 'args' 섹션에서 컨테이너가
|
||||
구성 파일의 `args` 섹션에서 컨테이너가
|
||||
100 MiB 상한을 훨씬 초과하는 250 MiB의 메모리를 할당하려는 것을 볼 수 있다.
|
||||
|
||||
파드 생성:
|
||||
@@ -242,7 +245,8 @@ kubectl delete pod memory-demo-2 --namespace=mem-example
|
||||
|
||||
이 예제에서는 메모리 요청량이 너무 커 클러스터 내 모든 노드의 용량을 초과하는 파드를 생성한다.
|
||||
다음은 클러스터 내 모든 노드의 용량을 초과할 수 있는 1000 GiB 메모리 요청을 포함하는
|
||||
컨테이너를 갖는 파드의 구성 파일이다.
|
||||
컨테이너를 갖는
|
||||
파드의 구성 파일이다.
|
||||
|
||||
{{< codenew file="pods/resource/memory-request-limit-3.yaml" >}}
|
||||
|
||||
@@ -302,8 +306,7 @@ kubectl delete pod memory-demo-3 --namespace=mem-example
|
||||
컨테이너에 메모리 상한을 지정하지 않으면 다음 중 하나가 적용된다.
|
||||
|
||||
* 컨테이너가 사용할 수 있는 메모리 상한은 없다. 컨테이너가
|
||||
실행 중인 노드에서 사용 가능한 모든 메모리를 사용하여 OOM Killer가 실행 될 수 있다. 또한 메모리 부족으로 인한 종료 시 메모리 상한이
|
||||
없는 컨테이너가 종료될 가능성이 크다.
|
||||
실행 중인 노드에서 사용 가능한 모든 메모리를 사용하여 OOM Killer가 실행될 수 있다. 또한 메모리 부족으로 인한 종료 시 메모리 상한이 없는 컨테이너가 종료될 가능성이 크다.
|
||||
|
||||
* 기본 메모리 상한을 갖는 네임스페이스 내에서 실행중인 컨테이너는
|
||||
자동으로 기본 메모리 상한이 할당된다. 클러스터 관리자들은
|
||||
@@ -356,3 +359,6 @@ kubectl delete namespace mem-example
|
||||
* [API 오브젝트에 할당량 구성 ](/docs/tasks/administer-cluster/quota-api-object/)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -1,22 +1,23 @@
|
||||
---
|
||||
title: 초기화 컨테이너에 대한 구성
|
||||
content_template: templates/task
|
||||
content_type: task
|
||||
weight: 130
|
||||
---
|
||||
|
||||
{{% capture overview %}}
|
||||
<!-- overview -->
|
||||
이 페이지는 애플리케이션 실행 전에 파드를 초기화하기 위해 어떻게 초기화 컨테이너를
|
||||
구성해야 하는지 보여준다.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture prerequisites %}}
|
||||
|
||||
## {{% heading "prerequisites" %}}
|
||||
|
||||
|
||||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture steps %}}
|
||||
|
||||
<!-- steps -->
|
||||
|
||||
## 초기화 컨테이너를 갖는 파드 생성
|
||||
|
||||
@@ -78,9 +79,10 @@ init-demo 파드 내 실행 중인 nginx 컨테이너의 셸을 실행한다.
|
||||
<p>Kubernetes is open source giving you the freedom to take advantage ...</p>
|
||||
...
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
{{% capture whatsnext %}}
|
||||
|
||||
## {{% heading "whatsnext" %}}
|
||||
|
||||
|
||||
* [같은 파드 내 실행 중인 컨테이너들간 통신](/ko/docs/tasks/access-application-cluster/communicate-containers-same-pod-shared-volume/)에
|
||||
대해 배우기.
|
||||
@@ -88,4 +90,6 @@ init-demo 파드 내 실행 중인 nginx 컨테이너의 셸을 실행한다.
|
||||
* [볼륨](/ko/docs/concepts/storage/volumes/)에 대해 배우기.
|
||||
* [초기화 컨테이너 디버깅](/docs/tasks/debug-application-cluster/debug-init-containers/)에 대해 배우기.
|
||||
|
||||
{{% /capture %}}
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ weight: 100
|
||||
<!-- overview -->
|
||||
|
||||
이 페이지는 프라이빗 도커 레지스트리나 리포지터리로부터 이미지를 받아오기 위해 시크릿(Secret)을
|
||||
사용하는 파드(Pod)를 생성하는 방법을 보여준다.
|
||||
사용하는 파드를 생성하는 방법을 보여준다.
|
||||
|
||||
|
||||
|
||||
|
||||
@@ -0,0 +1,238 @@
|
||||
---
|
||||
|
||||
|
||||
title: 스태틱(static) 파드 생성하기
|
||||
weight: 170
|
||||
content_template: task
|
||||
---
|
||||
|
||||
<!-- overview -->
|
||||
|
||||
|
||||
*스태틱 파드* 는 {{< glossary_tooltip text="API 서버" term_id="kube-apiserver" >}}
|
||||
없이 특정 노드에 있는 kubelet 데몬에 의해
|
||||
직접 관리된다.
|
||||
컨트롤 플레인에 의해 관리되는 파드(예를 들어 {{< glossary_tooltip text="디플로이먼트(Deployment)" term_id="deployment" >}})와는 달리,
|
||||
kubelet 이 각각의 스태틱 파드를 감시한다.
|
||||
(만약 충돌이 날 경우 다시 구동한다.)
|
||||
|
||||
스태틱 파드는 항상 특정 노드에 있는 하나의 {{< glossary_tooltip term_id="kubelet" >}}에 매여 있다.
|
||||
|
||||
Kubelet 은 각각의 스태틱 파드에 대하여 쿠버네티스 API 서버에서 {{< glossary_tooltip text="미러 파드(mirror pod)" term_id="mirror-pod" >}}를
|
||||
생성하려고 자동으로 시도한다.
|
||||
즉, 노드에서 구동되는 파드는 API 서버에 의해서 볼 수 있지만,
|
||||
API 서버에서 제어될 수는 없다.
|
||||
|
||||
{{< note >}}
|
||||
만약 클러스터로 구성된 쿠버네티스를 구동하고 있고, 스태틱 파드를 사용하여
|
||||
모든 노드에서 파드를 구동하고 있다면,
|
||||
스태틱 파드를 사용하는 대신 {{< glossary_tooltip text="데몬셋(DaemonSet)" term_id="daemonset" >}}
|
||||
을 사용하는 것이 바람직하다.
|
||||
{{< /note >}}
|
||||
|
||||
|
||||
|
||||
## {{% heading "prerequisites" %}}
|
||||
|
||||
|
||||
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
|
||||
|
||||
이 페이지는 파드를 실행하기 위해 {{< glossary_tooltip term_id="docker" >}}를 사용하며,
|
||||
노드에서 Fedora 운영 체제를 구동하고 있다고 가정한다.
|
||||
다른 배포판이나 쿠버네티스 설치 지침과는 다소 상이할 수 있다.
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<!-- steps -->
|
||||
|
||||
## 스태틱 파드 생성하기 {#static-pod-creation}
|
||||
|
||||
[파일 시스템이 호스팅 하는 구성 파일](/ko/docs/tasks/configure-pod-container/static-pod/#configuration-files)이나 [웹이 호스팅 하는 구성 파일](/ko/docs/tasks/configure-pod-container/static-pod/#pods-created-via-http)을 사용하여 스태틱 파드를 구성할 수 있다.
|
||||
|
||||
### 파일시스템이 호스팅 하는 스태틱 파드 매니페스트 {#configuration-files}
|
||||
|
||||
매니페스트는 특정 디렉토리에 있는 JSON 이나 YAML 형식의 표준 파드 정의이다. [kubelet 구성 파일](/docs/tasks/administer-cluster/kubelet-config-file)의 `staticPodPath: <the directory>` 필드를 사용하자. 이 디렉토리를 정기적으로 스캔하여, 디렉토리 안의 YAML/JSON 파일이 생성되거나 삭제되었을 때 스태틱 파드를 생성하거나 삭제한다.
|
||||
Kubelet 이 특정 디렉토리를 스캔할 때 점(.)으로 시작하는 단어를 무시한다는 점을 유의하자.
|
||||
|
||||
예를 들어, 다음은 스태틱 파드로 간단한 웹 서버를 구동하는 방법을 보여준다.
|
||||
|
||||
1. 스태틱 파드를 실행할 노드를 선택한다. 이 예제에서는 `my-model` 이다.
|
||||
|
||||
```shell
|
||||
ssh my-node1
|
||||
```
|
||||
|
||||
2. `/etc/kubelet.d` 와 같은 디렉토리를 선택하고 웹 서버 파드의 정의를 해당 위치에, 예를 들어 `/etc/kubelet.d/static-web.yaml` 에 배치한다.
|
||||
|
||||
```shell
|
||||
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
mkdir /etc/kubelet.d/
|
||||
cat <<EOF >/etc/kubelet.d/static-web.yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: static-web
|
||||
labels:
|
||||
role: myrole
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: nginx
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
EOF
|
||||
```
|
||||
|
||||
3. 노드에서 kubelet 실행 시에 `--pod-manifest-path=/etc/kubelet.d/` 와 같이 인자를 제공하여 해당 디렉토리를 사용하도록 구성한다. Fedora 의 경우 이 줄을 포함하기 위하여 `/etc/kubernetes/kubelet` 파일을 다음과 같이 수정한다.
|
||||
|
||||
```
|
||||
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --pod-manifest-path=/etc/kubelet.d/"
|
||||
```
|
||||
혹은 [kubelet 구성 파일](/docs/tasks/administer-cluster/kubelet-config-file)에 `staticPodPath: <the directory>` 필드를 추가한다.
|
||||
|
||||
4. kubelet을 재시작한다. Fedora의 경우 아래와 같이 수행한다.
|
||||
|
||||
```shell
|
||||
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
systemctl restart kubelet
|
||||
```
|
||||
|
||||
### 웹이 호스팅 하는 스태틱 파드 매니페스트 {#pods-created-via-http}
|
||||
|
||||
Kubelet은 `--manifest-url=<URL>` 의 인수로 지정된 파일을 주기적으로 다운로드하여
|
||||
해당 파일을 파드의 정의가 포함된 JSON/YAML 파일로 해석한다.
|
||||
[파일시스템이 호스팅 하는 매니페스트](#configuration-files) 의 작동 방식과
|
||||
유사하게 kubelet은 스케줄에 맞춰 매니페스트 파일을 다시 가져온다. 스태틱 파드의 목록에
|
||||
변경된 부분이 있을 경우, kubelet 은 이를 적용한다.
|
||||
|
||||
이 방법을 사용하기 위하여 다음을 수행한다.
|
||||
|
||||
1. kubelet 에게 파일의 URL을 전달하기 위하여 YAML 파일을 생성하고 이를 웹 서버에 저장한다.
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: Pod
|
||||
metadata:
|
||||
name: static-web
|
||||
labels:
|
||||
role: myrole
|
||||
spec:
|
||||
containers:
|
||||
- name: web
|
||||
image: nginx
|
||||
ports:
|
||||
- name: web
|
||||
containerPort: 80
|
||||
protocol: TCP
|
||||
```
|
||||
|
||||
2. 선택한 노드에서 `--manifest-url=<manifest-url>` 을 실행하여 웹 메니페스트를 사용하도록 kubelet을 구성한다. Fedora 의 경우 이 줄을 포함하기 위하여 `/etc/kubernetes/kubelet` 파일을 수정한다.
|
||||
|
||||
```
|
||||
KUBELET_ARGS="--cluster-dns=10.254.0.10 --cluster-domain=kube.local --manifest-url=<manifest-url>"
|
||||
```
|
||||
|
||||
3. Kubelet을 재시작한다. Fedora의 경우 아래와 같이 수행한다.
|
||||
|
||||
```shell
|
||||
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
systemctl restart kubelet
|
||||
```
|
||||
|
||||
## 스태틱 파드 행동 관찰하기 {#behavior-of-static-pods}
|
||||
|
||||
Kubelet 을 시작하면, 정의된 모든 스태틱 파드가 자동으로 시작된다.
|
||||
스태틱 파드를 정의하고, kubelet을 재시작했으므로, 새로운 스태틱
|
||||
파드가 이미 실행 중이어야 한다.
|
||||
|
||||
(노드에서) 구동되고 있는 (스태틱 파드를 포함한) 컨테이너들을 볼 수 있다.
|
||||
```shell
|
||||
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
docker ps
|
||||
```
|
||||
|
||||
결과는 다음과 유사하다.
|
||||
|
||||
```
|
||||
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
|
||||
f6d05272b57e nginx:latest "nginx" 8 minutes ago Up 8 minutes k8s_web.6f802af4_static-web-fk-node1_default_67e24ed9466ba55986d120c867395f3c_378e5f3c
|
||||
```
|
||||
|
||||
API 서버에서 미러 파드를 볼 수 있다.
|
||||
|
||||
```shell
|
||||
kubectl get pods
|
||||
```
|
||||
```
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
static-web-my-node1 1/1 Running 0 2m
|
||||
```
|
||||
|
||||
{{< note >}}
|
||||
Kubelet에 API 서버에서 미러 파드를 생성할 수 있는 권한이 있는지 미리 확인해야 한다. 그렇지 않을 경우 API 서버에 의해서 생성 요청이 거부된다.
|
||||
[파드시큐리티폴리시(PodSecurityPolicy)](/docs/concepts/policy/pod-security-policy/) 에 대해 보기.
|
||||
{{< /note >}}
|
||||
|
||||
|
||||
스태틱 파드에 있는 {{< glossary_tooltip term_id="label" text="레이블" >}} 은
|
||||
미러 파드로 전파된다. {{< glossary_tooltip term_id="selector" text="셀렉터" >}} 등을
|
||||
통하여 이러한 레이블을 사용할 수 있다.
|
||||
|
||||
만약 API 서버로부터 미러 파드를 지우기 위하여 `kubectl` 을 사용하려 해도,
|
||||
kubelet 은 스태틱 파드를 지우지 _않는다._
|
||||
|
||||
```shell
|
||||
kubectl delete pod static-web-my-node1
|
||||
```
|
||||
```
|
||||
pod "static-web-my-node1" deleted
|
||||
```
|
||||
파드가 여전히 구동 중인 것을 볼 수 있다.
|
||||
```shell
|
||||
kubectl get pods
|
||||
```
|
||||
```
|
||||
NAME READY STATUS RESTARTS AGE
|
||||
static-web-my-node1 1/1 Running 0 12s
|
||||
```
|
||||
|
||||
kubelet 이 구동 중인 노드로 돌아가서 도커 컨테이너를 수동으로
|
||||
중지할 수 있다.
|
||||
일정 시간이 지나면, kubelet이 파드를 자동으로 인식하고 다시 시작하는
|
||||
것을 볼 수 있다.
|
||||
|
||||
```shell
|
||||
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
docker stop f6d05272b57e # 예제를 수행하는 사용자의 컨테이너 ID로 변경한다.
|
||||
sleep 20
|
||||
docker ps
|
||||
```
|
||||
```
|
||||
CONTAINER ID IMAGE COMMAND CREATED ...
|
||||
5b920cbaf8b1 nginx:latest "nginx -g 'daemon of 2 seconds ago ...
|
||||
```
|
||||
|
||||
## 스태틱 파드의 동적 추가 및 제거
|
||||
|
||||
실행 중인 kubelet 은 주기적으로, 설정된 디렉토리(예제에서는 `/etc/kubelet.d`)에서 변경 사항을 스캔하고, 이 디렉토리에 새로운 파일이 생성되거나 삭제될 경우, 파드를 생성/삭제 한다.
|
||||
|
||||
```shell
|
||||
# 예제를 수행하는 사용자가 파일시스템이 호스팅하는 스태틱 파드 설정을 사용한다고 가정한다.
|
||||
# kubelet 이 동작하고 있는 노드에서 이 명령을 수행한다.
|
||||
#
|
||||
mv /etc/kubelet.d/static-web.yaml /tmp
|
||||
sleep 20
|
||||
docker ps
|
||||
# 구동 중인 nginx 컨테이너가 없는 것을 확인한다.
|
||||
mv /tmp/static-web.yaml /etc/kubelet.d/
|
||||
sleep 20
|
||||
docker ps
|
||||
```
|
||||
```
|
||||
CONTAINER ID IMAGE COMMAND CREATED ...
|
||||
e7a62e3427f1 nginx:latest "nginx -g 'daemon of 27 seconds ago
|
||||
```
|
||||
Reference in New Issue
Block a user