Eighth Korean l10n work for release 1.18
- Translate tasks/administer-cluster/declare-network-policy in Korean (#22526) - Translate tasks/debug-application-cluster/debug-init-containers in Korean (#22608) - Fix a missing markdown syntax to enable external link (#22661) - Translate tasks/administer-cluster/change-pv-reclaim-policy in Korean (#22551) - Update docs/contribute/participate/ for Korean (#22605) - Update outdated files in dev-1.18-ko.8 (#22466) - Translate tasks/administer-cluster/dns-custom-nameservers in Korean (#22524) Co-authored-by: Daehyun Paik <paik@a30a.dev> Co-authored-by: Jerry Park <jaehwa@gmail.com> Co-authored-by: bluefriday <bluefriday86@gmail.com> Co-authored-by: June Yi <june.yi@samsung.com> Co-authored-by: Jesang Myung <jesang.myung@gmail.com> Co-authored-by: Seokho Son <shsongist@gmail.com>
This commit is contained in:
@@ -1,5 +1,6 @@
|
||||
---
|
||||
title: "구성"
|
||||
weight: 80
|
||||
description: >
|
||||
쿠버네티스가 파드 구성을 위해 제공하는 리소스
|
||||
---
|
||||
|
||||
|
||||
@@ -126,25 +126,32 @@ spec:
|
||||
configMap:
|
||||
# 마운트하려는 컨피그맵의 이름을 제공한다.
|
||||
name: game-demo
|
||||
# 컨피그맵에서 파일로 생성할 키 배열
|
||||
items:
|
||||
- key: "game.properties"
|
||||
path: "game.properties"
|
||||
- key: "user-interface.properties"
|
||||
path: "user-interface.properties"
|
||||
```
|
||||
|
||||
|
||||
컨피그맵은 단일 라인 속성(single line property) 값과 멀티 라인의 파일과 비슷한(multi-line file-like) 값을
|
||||
구분하지 않는다.
|
||||
더 중요한 것은 파드와 다른 오브젝트가 이러한 값을 소비하는 방식이다.
|
||||
|
||||
이 예제에서, 볼륨을 정의하고 `demo` 컨테이너에
|
||||
`/config` 로 마운트하면 4개의 파일이 생성된다.
|
||||
`/config` 로 마운트하면 컨피그맵에 4개의 키가 있더라도
|
||||
`/config/game.properties` 와 `/config/user-interface.properties`
|
||||
2개의 파일이 생성된다. 이것은 파드 정의가
|
||||
`volume` 섹션에서 `items` 배열을 지정하기 때문이다.
|
||||
`items` 배열을 완전히 생략하면, 컨피그맵의 모든 키가
|
||||
키와 이름이 같은 파일이 되고, 4개의 파일을 얻게 된다.
|
||||
|
||||
- `/config/player_initial_lives`
|
||||
- `/config/ui_properties_file_name`
|
||||
- `/config/game.properties`
|
||||
- `/config/user-interface.properties`
|
||||
## 컨피그맵 사용하기
|
||||
|
||||
`/config` 에 `.properties` 확장자를 가진 파일만
|
||||
포함시키려면, 두 개의 다른 컨피그맵을 사용하고, 파드에
|
||||
대해서는 `spec` 의 두 컨피그맵을 참조한다. 첫 번째 컨피그맵은
|
||||
`player_initial_lives` 와 `ui_properties_file_name` 을 정의한다. 두 번째
|
||||
컨피그맵은 kubelet이 `/config` 에 넣는 파일을 정의한다.
|
||||
컨피그맵은 데이터 볼륨으로 마운트할 수 있다. 컨피그맵은 파드에 직접적으로
|
||||
노출되지 않고, 시스템의 다른 부분에서도 사용할 수 있다. 예를 들어,
|
||||
컨피그맵은 시스템의 다른 부분이 구성을 위해 사용해야 하는 데이터를 보유할 수 있다.
|
||||
|
||||
{{< note >}}
|
||||
컨피그맵을 사용하는 가장 일반적인 방법은 동일한 네임스페이스의
|
||||
@@ -157,12 +164,6 @@ spec:
|
||||
사용할 수도 있다.
|
||||
{{< /note >}}
|
||||
|
||||
## 컨피그맵 사용하기
|
||||
|
||||
컨피그맵은 데이터 볼륨으로 마운트할 수 있다. 컨피그맵은 파드에 직접적으로
|
||||
노출되지 않고, 시스템의 다른 부분에서도 사용할 수 있다. 예를 들어,
|
||||
컨피그맵은 시스템의 다른 부분이 구성을 위해 사용해야 하는 데이터를 보유할 수 있다.
|
||||
|
||||
### 파드에서 컨피그맵을 파일로 사용하기
|
||||
|
||||
파드의 볼륨에서 컨피그맵을 사용하려면 다음을 수행한다.
|
||||
|
||||
@@ -657,7 +657,7 @@ Allocated resources:
|
||||
(Total limits may be over 100 percent, i.e., overcommitted.)
|
||||
CPU Requests CPU Limits Memory Requests Memory Limits
|
||||
------------ ---------- --------------- -------------
|
||||
680m (34%) 400m (20%) 920Mi (12%) 1070Mi (14%)
|
||||
680m (34%) 400m (20%) 920Mi (11%) 1070Mi (13%)
|
||||
```
|
||||
|
||||
위의 출력에서, 파드가 1120m 이상의 CPU 또는 6.23Gi의 메모리를
|
||||
@@ -758,5 +758,3 @@ LastState: map[terminated:map[exitCode:137 reason:OOM Killed startedAt:2015-07-0
|
||||
* [ResourceRequirements](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#resourcerequirements-v1-core) API 레퍼런스 읽어보기
|
||||
|
||||
* XFS의 [프로젝트 쿼터](http://xfs.org/docs/xfsdocs-xml-dev/XFS_User_Guide/tmp/en-US/html/xfs-quotas.html)에 대해 읽어보기
|
||||
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ weight: 20
|
||||
|
||||
노드 위에서 파드를 구동할 때, 파드는 그 자체적으로 많은 시스템 리소스를 사용한다.
|
||||
이러한 리소스는 파드 내의 컨테이너들을 구동하기 위한 리소스 이외에 추가적으로 필요한 것이다.
|
||||
_파드 오버헤드_ 는 컨테이너 리소스 요청과 상한 위에서 파드의 인프라에 의해
|
||||
_파드 오버헤드_ 는 컨테이너 리소스 요청과 상한 위에서 파드의 인프라에 의해
|
||||
소비되는 리소스를 계산하는 기능이다.
|
||||
|
||||
|
||||
@@ -20,25 +20,25 @@ _파드 오버헤드_ 는 컨테이너 리소스 요청과 상한 위에서 파
|
||||
|
||||
<!-- body -->
|
||||
|
||||
쿠버네티스에서 파드의 오버헤드는 파드의
|
||||
[런타임클래스](/ko/docs/concepts/containers/runtime-class/) 와 관련된 오버헤드에 따라
|
||||
[어드미션](/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks)
|
||||
쿠버네티스에서 파드의 오버헤드는 파드의
|
||||
[런타임클래스](/ko/docs/concepts/containers/runtime-class/) 와 관련된 오버헤드에 따라
|
||||
[어드미션](/docs/reference/access-authn-authz/extensible-admission-controllers/#what-are-admission-webhooks)
|
||||
이 수행될 때 지정된다.
|
||||
|
||||
파드 오버헤드가 활성화 되면, 파드를 노드에 스케줄링 할 때 컨테이너 리소스 요청의 합에
|
||||
파드의 오버헤드를 추가해서 스케줄링을 고려한다. 마찬가지로, Kubelet은 파드의 cgroups 크기를 변경하거나
|
||||
파드 오버헤드가 활성화 되면, 파드를 노드에 스케줄링 할 때 컨테이너 리소스 요청의 합에
|
||||
파드의 오버헤드를 추가해서 스케줄링을 고려한다. 마찬가지로, Kubelet은 파드의 cgroups 크기를 변경하거나
|
||||
파드의 축출 등급을 부여할 때에도 파드의 오버헤드를 포함하여 고려한다.
|
||||
|
||||
## 파드 오버헤드 활성화하기 {#set-up}
|
||||
|
||||
기능 활성화를 위해 클러스터에서
|
||||
`PodOverhead` [기능 게이트](/docs/reference/command-line-tools-reference/feature-gates/) 가 활성화 되어 있고 (1.18 버전에서는 기본적으로 활성화),
|
||||
기능 활성화를 위해 클러스터에서
|
||||
`PodOverhead` [기능 게이트](/docs/reference/command-line-tools-reference/feature-gates/) 가 활성화 되어 있고 (1.18 버전에서는 기본적으로 활성화),
|
||||
`overhead` 필드를 정의하는 `RuntimeClass` 가 사용되고 있는지 확인해야 한다.
|
||||
|
||||
## 사용 예제
|
||||
|
||||
파드 오버헤드 기능을 사용하기 위하여, `overhead` 필드를 정의하는 런타임클래스가 필요하다.
|
||||
예를 들어, 가상 머신 및 게스트 OS에 대하여 파드 당 120 MiB를 사용하는
|
||||
예를 들어, 가상 머신 및 게스트 OS에 대하여 파드 당 120 MiB를 사용하는
|
||||
가상화 컨테이너 런타임의 런타임클래스의 경우 다음과 같이 정의 할 수 있다.
|
||||
|
||||
```yaml
|
||||
@@ -54,7 +54,7 @@ overhead:
|
||||
cpu: "250m"
|
||||
```
|
||||
|
||||
`kata-fc` 런타임클래스 핸들러를 지정하는 워크로드는 리소스 쿼터 계산,
|
||||
`kata-fc` 런타임클래스 핸들러를 지정하는 워크로드는 리소스 쿼터 계산,
|
||||
노드 스케줄링 및 파드 cgroup 크기 조정을 위하여 메모리와 CPU 오버헤드를 고려한다.
|
||||
|
||||
주어진 예제 워크로드 test-pod의 구동을 고려해보자.
|
||||
@@ -83,9 +83,9 @@ spec:
|
||||
memory: 100Mi
|
||||
```
|
||||
|
||||
어드미션 수행 시에, [어드미션 컨트롤러](/docs/reference/access-authn-authz/admission-controllers/)는
|
||||
런타임클래스에 기술된 `overhead` 를 포함하기 위하여 워크로드의 PodSpec 항목을 갱신한다. 만약 PodSpec이 이미 해당 필드에 정의되어 있으면,
|
||||
파드는 거부된다. 주어진 예제에서, 오직 런타임클래스의 이름만이 정의되어 있기 때문에, 어드미션 컨트롤러는 파드가
|
||||
어드미션 수행 시에, [어드미션 컨트롤러](/docs/reference/access-authn-authz/admission-controllers/)는
|
||||
런타임클래스에 기술된 `overhead` 를 포함하기 위하여 워크로드의 PodSpec 항목을 갱신한다. 만약 PodSpec이 이미 해당 필드에 정의되어 있으면,
|
||||
파드는 거부된다. 주어진 예제에서, 오직 런타임클래스의 이름만이 정의되어 있기 때문에, 어드미션 컨트롤러는 파드가
|
||||
`overhead` 를 포함하도록 변경한다.
|
||||
|
||||
런타임클래스의 어드미션 수행 후에, 파드의 스펙이 갱신된 것을 확인할 수 있다.
|
||||
@@ -99,11 +99,11 @@ kubectl get pod test-pod -o jsonpath='{.spec.overhead}'
|
||||
map[cpu:250m memory:120Mi]
|
||||
```
|
||||
|
||||
만약 리소스쿼터 항목이 정의되어 있다면, 컨테이너의 리소스 요청의 합에는
|
||||
만약 리소스쿼터 항목이 정의되어 있다면, 컨테이너의 리소스 요청의 합에는
|
||||
`overhead` 필드도 추가된다.
|
||||
|
||||
kube-scheduler 는 어떤 노드에 파드가 기동 되어야 할지를 정할 때, 파드의 `overhead` 와
|
||||
해당 파드에 대한 컨테이너의 리소스 요청의 합을 고려한다. 이 예제에서, 스케줄러는
|
||||
kube-scheduler 는 어떤 노드에 파드가 기동 되어야 할지를 정할 때, 파드의 `overhead` 와
|
||||
해당 파드에 대한 컨테이너의 리소스 요청의 합을 고려한다. 이 예제에서, 스케줄러는
|
||||
리소스 요청과 파드의 오버헤드를 더하고, 2.25 CPU와 320 MiB 메모리가 사용 가능한 노드를 찾는다.
|
||||
|
||||
일단 파드가 특정 노드에 스케줄링 되면, 해당 노드에 있는 kubelet 은 파드에 대한 새로운 {{< glossary_tooltip text="cgroup" term_id="cgroup" >}}을 생성한다.
|
||||
@@ -142,7 +142,7 @@ CPU 2250m와 메모리 320MiB 가 리소스로 요청되었으며, 이 결과는
|
||||
|
||||
## 파드 cgroup 상한 확인하기
|
||||
|
||||
워크로드가 실행 중인 노드에서 파드의 메모리 cgroup들을 확인 해보자. 다음의 예제에서, [`crictl`](https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md)은 노드에서 사용되며,
|
||||
워크로드가 실행 중인 노드에서 파드의 메모리 cgroup들을 확인 해보자. 다음의 예제에서, [`crictl`](https://github.com/kubernetes-sigs/cri-tools/blob/master/docs/crictl.md)은 노드에서 사용되며,
|
||||
CRI-호환 컨테이너 런타임을 위해서 노드에서 사용할 수 있는 CLI 를 제공한다.
|
||||
파드의 오버헤드 동작을 보여주는 좋은 예이며,
|
||||
사용자가 노드에서 직접 cgroup들을 확인하지 않아도 된다.
|
||||
@@ -178,8 +178,8 @@ sudo crictl inspectp -o=json $POD_ID | grep cgroupsPath
|
||||
```
|
||||
|
||||
### 관찰성
|
||||
`kube_pod_overhead` 항목은 [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics)
|
||||
에서 사용할 수 있어, 파드 오버헤드가 사용되는 시기를 식별하고,
|
||||
`kube_pod_overhead` 항목은 [kube-state-metrics](https://github.com/kubernetes/kube-state-metrics)
|
||||
에서 사용할 수 있어, 파드 오버헤드가 사용되는 시기를 식별하고,
|
||||
정의된 오버헤드로 실행되는 워크로드의 안정성을 관찰할 수 있다.
|
||||
이 기능은 kube-state-metrics 의 1.9 릴리스에서는 사용할 수 없지만, 다음 릴리스에서는 가능할 예정이다.
|
||||
그 전까지는 소스로부터 kube-state-metric 을 빌드해야 한다.
|
||||
@@ -191,5 +191,3 @@ sudo crictl inspectp -o=json $POD_ID | grep cgroupsPath
|
||||
|
||||
* [런타임클래스](/ko/docs/concepts/containers/runtime-class/)
|
||||
* [파드오버헤드 디자인](https://github.com/kubernetes/enhancements/blob/master/keps/sig-node/20190226-pod-overhead.md)
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user