Skip to content

Commit 178bfdb

Browse files
ultradiojihoon-seoseokho-son
committed
[ko] Translate /concepts/storage/storage-capacity.md in Korean
Co-authored-by: Jihoon Seo <[email protected]> Co-authored-by: Seokho Son <[email protected]>
1 parent e917746 commit 178bfdb

File tree

2 files changed

+138
-0
lines changed

2 files changed

+138
-0
lines changed
Lines changed: 117 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,117 @@
1+
---
2+
3+
4+
5+
6+
7+
8+
title: 스토리지 용량
9+
content_type: concept
10+
weight: 45
11+
---
12+
13+
<!-- overview -->
14+
15+
스토리지 용량은 제한이 있으며, 파드가 실행되는 노드의 상황에 따라 달라질 수 있다.
16+
예를 들어, 일부 노드에서 NAS(Network Attached Storage)에 접근할 수 없는 경우가 있을 수 있으며,
17+
또는 각 노드에 종속적인 로컬 스토리지를 사용하는 경우일 수도 있다.
18+
19+
{{< feature-state for_k8s_version="v1.19" state="alpha" >}}
20+
{{< feature-state for_k8s_version="v1.21" state="beta" >}}
21+
22+
이 페이지에서는 쿠버네티스가 어떻게 스토리지 용량을 추적하고
23+
스케줄러가 남아 있는 볼륨을 제공하기 위해 스토리지 용량이 충분한 노드에
24+
파드를 스케줄링하기 위해 이 정보를 어떻게 사용하는지 설명한다.
25+
스토리지 용량을 추적하지 않으면, 스케줄러는
26+
볼륨을 제공할 충분한 용량이 없는 노드를 선정할 수 있으며,
27+
스케줄링을 여러 번 다시 시도해야 한다.
28+
29+
스토리지 용량 추적은 {{< glossary_tooltip
30+
text="컨테이너 스토리지 인터페이스(CSI)" term_id="csi" >}} 드라이버에서 지원하며,
31+
CSI 드라이버를 설치할 때 [사용하도록 설정](#스토리지-용량-추적-활성화)해야 한다.
32+
33+
<!-- body -->
34+
35+
## API
36+
37+
이 기능에는 다음 두 가지 API 확장이 있다.
38+
- CSIStorageCapacity 오브젝트:
39+
CSI 드라이버가 설치된 네임스페이스에
40+
CSI 드라이버가 이 오브젝트를 생성한다. 각 오브젝트는
41+
하나의 스토리지 클래스에 대한 용량 정보를 담고 있으며,
42+
어떤 노드가 해당 스토리지에 접근할 수 있는지를 정의한다.
43+
- [ `CSIDriverSpec.StorageCapacity` 필드](/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#csidriverspec-v1-storage-k8s-io):
44+
`true`로 설정하면, 쿠버네티스 스케줄러가
45+
CSI 드라이버를 사용하는 볼륨의 스토리지 용량을 고려하게 된다.
46+
47+
## 스케줄링
48+
49+
다음과 같은 경우 쿠버네티스 스케줄러에서 스토리지 용량 정보를 사용한다.
50+
- `CSIStorageCapacity` 기능 게이트(feature gate)가 true이고,
51+
- 파드가 아직 생성되지 않은 볼륨을 사용하고,
52+
- 해당 볼륨은 CSI 드라이버를 참조하고
53+
`WaitForFirstConsumer`
54+
[볼륨 바인딩 모드](/ko/docs/concepts/storage/storage-classes/#볼륨-바인딩-모드)를 사용하는
55+
{{< glossary_tooltip text="스토리지클래스(StorageClass)" term_id="storage-class" >}}를 사용하고,
56+
- 드라이버의 `CSIDriver` 오브젝트에 `StorageCapacity` 속성이
57+
true로 설정되어 있다.
58+
59+
이 경우 스케줄러는 파드에 제공할
60+
충분한 스토리지가 있는 노드만 고려한다.
61+
이 검사는 아주 간단한데,
62+
볼륨의 크기를 노드를 포함하는 토폴로지를 가진 `CSIStorageCapacity` 오브젝트에
63+
나열된 용량과 비교한다.
64+
65+
볼륨 바인딩 모드가 `Immediate` 인 볼륨의 경우에는 스토리지 드라이버는
66+
볼륨을 사용하는 파드와 관계없이 볼륨을 생성할 위치를 정한다.
67+
볼륨을 생성한 후에, 스케줄러는
68+
볼륨을 사용할 수 있는 노드에 파드를 스케줄링한다.
69+
70+
[CSI 임시 볼륨](/ko/docs/concepts/storage/volumes/#csi)의 경우에는
71+
볼륨 유형이 로컬 볼륨이고
72+
큰 자원이 필요하지 않은 특정 CSI 드라이버에서만 사용된다는 가정하에,
73+
항상 스토리지 용량을 고려하지 않고
74+
스케줄링한다.
75+
76+
## 리스케줄링
77+
78+
`WaitForFirstConsumer` 볼륨을 가진 파드에 대해
79+
노드가 선정되었더라도 아직은 잠정적인 결정이다. 다음 단계에서
80+
선정한 노드에서 볼륨을 사용할 수 있어야 한다는 힌트를 주고
81+
CSI 스토리지 드라이버에 볼륨 생성을 요청한다
82+
83+
쿠버네티스는 시간이 지난 스토리지 용량 정보를 기반으로
84+
노드를 선정할 수도 있으므로, 볼륨을 실제로 생성하지 않을 수도 있다.
85+
그런 다음 노드 선정이 재설정되고 쿠버네티스 스케줄러가
86+
파드를 위한 노드를 찾는 것을 재시도한다.
87+
88+
## 제한사항
89+
90+
스토리지 용량 추적은 첫 시도에 스케줄링이 성공할 가능성을 높이지만,
91+
스케줄러가 시간이 지난 정보를 기반으로
92+
결정해야 할 수도 있기 때문에 이를 보장하지는 않는다.
93+
일반적으로 스토리지 용량 정보가 없는 스케줄링과
94+
동일한 재시도 메커니즘으로 스케줄링 실패를 처리한다.
95+
96+
스케줄링이 영구적으로 실패할 수 있는 한 가지 상황은
97+
파드가 여러 볼륨을 사용하는 경우이다.
98+
토폴로지 세그먼트에 하나의 볼륨이 이미 생성되어
99+
다른 볼륨에 충분한 용량이 남아 있지 않을 수 있다.
100+
이러한 상황을 복구하려면
101+
용량을 늘리거나 이미 생성된 볼륨을 삭제하는 등의 수작업이 필요하며,
102+
자동으로 처리하려면
103+
[추가 작업](https://github.com/kubernetes/enhancements/pull/1703)이 필요하다.
104+
105+
## 스토리지 용량 추적 활성화
106+
107+
스토리지 용량 추적은 베타 기능이며,
108+
쿠버네티스 1.21 이후 버전부터 쿠버네티스 클러스터에 기본적으로 활성화되어 있다.
109+
클러스터에서 스토리지 용량 추적 기능을 활성화하는 것뿐만 아니라, CSI 드라이버에서도 이 기능을 지원해야 한다.
110+
자세한 내용은 드라이버 문서를 참조한다.
111+
112+
## {{% heading "whatsnext" %}}
113+
114+
- 설계에 대한 자세한 내용은
115+
[파드 스케줄링 스토리지 용량 제약 조건](https://github.com/kubernetes/enhancements/blob/master/keps/sig-storage/1472-storage-capacity-tracking/README.md)을 참조한다.
116+
- 이 기능의 추가 개발에 대한 자세한 내용은 [개선 추적 이슈 #1472](https://github.com/kubernetes/enhancements/issues/1472)를 참조한다.
117+
- [쿠버네티스 스케줄러](/ko/docs/concepts/scheduling-eviction/kube-scheduler/)에 대해 살펴본다.
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
title: 컨테이너 스토리지 인터페이스(CSI)
3+
id: csi
4+
date: 2018-06-25
5+
full_link: /ko/docs/concepts/storage/volumes/#csi
6+
short_description: >
7+
컨테이너 스토리지 인터페이스(CSI)는 컨테이너에 스토리지 시스템을 노출하는 표준 인터페이스를 정의한다.
8+
9+
10+
aka:
11+
tags:
12+
- storage
13+
---
14+
컨테이너 스토리지 인터페이스(CSI)는 컨테이너에 스토리지 시스템을 노출하는 표준 인터페이스를 정의한다.
15+
16+
17+
<!--more-->
18+
CSI를 통해 공급업체는 쿠버네티스 저장소(트리 외 플러그인)를 추가하지 않고도 쿠버네티스용 사용자 스토리지 플러그인을 생성할 수 있다. 스토리지 제공자가 CSI 드라이버를 사용하려면, 먼저 [클러스터에 배포](https://kubernetes-csi.github.io/docs/deploying.html)해야 한다. 그런 다음 해당 CSI 드라이버를 사용하는 {{< glossary_tooltip text="스토리지클래스(StorageClass)" term_id="storage-class" >}}를 생성할 수 있다.
19+
20+
* [쿠버네티스 문서에서 CSI](/ko/docs/concepts/storage/volumes/#csi)
21+
* [사용 가능한 CSI 드라이버 목록](https://kubernetes-csi.github.io/docs/drivers.html)

0 commit comments

Comments
 (0)