@@ -6,19 +6,15 @@ weight: 40
6
6
7
7
8
8
9
- 본 페이지는 파드가 DownwardAPIVolumeFile을 사용하여 파드에서 실행되는 컨테이너에
10
- 자신에 대한 정보를 노출하는 방법에 대해 설명한다. DownwardAPIVolumeFile은 파드 필드와
11
- 컨테이너 필드를 노출할 수 있다.
12
-
13
-
9
+ 본 페이지는 파드가
10
+ [ ` DownwardAPIVolumeFile ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumefile-v1-core)을 사용하여
11
+ 파드에서 실행되는 컨테이너에 자신에 대한 정보를 노출하는 방법에 대해 설명한다.
12
+ ` DownwardAPIVolumeFile ` 은 파드 필드와 컨테이너 필드를 노출할 수 있다.
14
13
15
14
## {{% heading "prerequisites" %}}
16
15
17
-
18
16
{{< include "task-tutorial-prereqs.md" >}} {{< version-check >}}
19
17
20
-
21
-
22
18
23
19
24
20
## 다운워드(Downward) API
@@ -28,7 +24,8 @@ weight: 40
28
24
* [ 환경 변수] ( /ko/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#다운워드-downward-api )
29
25
* 볼륨 파일
30
26
31
- 파드 및 컨테이너 필드를 노출하는 이 두 가지 방법을 * 다운워드 API* 라고 한다.
27
+ 파드 및 컨테이너 필드를 노출하는 이 두 가지 방법을
28
+ "다운워드 API"라고 한다.
32
29
33
30
## 파드 필드 저장
34
31
@@ -42,11 +39,14 @@ weight: 40
42
39
43
40
` downwardAPI ` 아래의 배열을 살펴보자. 배열의 각 요소는
44
41
[ DownwardAPIVolumeFile] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumefile-v1-core)이다.
45
- 첫 번째 요소는 파드의 ` metadata.labels ` 필드 값이 ` labels ` 라는 파일에 저장되어야 함을 지정한다.
46
- 두 번째 요소는 파드의 ` annotations ` 필드 값이 ` annotations ` 라는 파일에 저장되어야 함을 지정한다.
42
+ 첫 번째 요소는 파드의 ` metadata.labels ` 필드 값이
43
+ ` labels ` 라는 파일에 저장되어야 함을 지정한다.
44
+ 두 번째 요소는 파드의 ` annotations ` 필드 값이
45
+ ` annotations ` 라는 파일에 저장되어야 함을 지정한다.
47
46
48
47
{{< note >}}
49
- 이 예제의 필드는 파드에 있는 컨테이너의 필드가 아니라 파드 필드이다.
48
+ 이 예제의 필드는 파드에 있는 컨테이너의 필드가 아니라
49
+ 파드 필드이다.
50
50
{{< /note >}}
51
51
52
52
파드를 생성한다.
@@ -78,7 +78,7 @@ build="two"
78
78
builder=" john-doe"
79
79
```
80
80
81
- 파드에서 실행 중인 컨테이너의 셸을 가져오자 .
81
+ 파드에서 실행 중인 컨테이너의 셸을 가져온다 .
82
82
83
83
``` shell
84
84
kubectl exec -it kubernetes-downwardapi-volume-example -- sh
@@ -90,7 +90,8 @@ kubectl exec -it kubernetes-downwardapi-volume-example -- sh
90
90
/# cat /etc/podinfo/labels
91
91
```
92
92
93
- 출력을 통해 모든 파드의 레이블이 ` labels ` 파일에 기록되었음을 확인할 수 있다.
93
+ 출력을 통해 모든 파드의 레이블이
94
+ ` labels ` 파일에 기록되었음을 확인할 수 있다.
94
95
95
96
``` shell
96
97
cluster=" test-cluster1"
@@ -130,12 +131,12 @@ total 8
130
131
131
132
심볼릭 링크를 사용하면 메타데이터의 동적(dynamic) 원자적(atomic) 갱신이 가능하다.
132
133
업데이트는 새 임시 디렉터리에 기록되고, ` ..data ` 심볼릭 링크는
133
- [ rename(2)] ( http://man7.org/linux/man-pages/man2/rename.2.html ) 을 사용하여
134
- 원자적(atomic)으로 갱신한다.
134
+ [ rename(2)] ( http://man7.org/linux/man-pages/man2/rename.2.html ) 을 사용하여 원자적(atomic)으로 갱신한다.
135
135
136
136
{{< note >}}
137
137
다운워드 API를 [ subPath] ( /ko/docs/concepts/storage/volumes/#using-subpath )
138
- 볼륨 마운트로 사용하는 컨테이너는 다운워드 API 업데이트를 수신하지 않는다.
138
+ 볼륨 마운트로 사용하는 컨테이너는
139
+ 다운워드 API 업데이트를 수신하지 않는다.
139
140
{{< /note >}}
140
141
141
142
셸을 종료한다.
@@ -146,15 +147,19 @@ total 8
146
147
147
148
## 컨테이너 필드 저장
148
149
149
- 이전 연습에서는 파드 필드를 DownwardAPIVolumeFile에 저장하였다.
150
- 이 다음 연습에서는 컨테이너 필드를 저장한다. 다음은 하나의 컨테이너를 가진 파드의 구성 파일이다.
150
+ 이전 연습에서는 파드 필드를
151
+ [ ` DownwardAPIVolumeFile ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumefile-v1-core)에 저장하였다.
152
+ 이 다음 연습에서는 컨테이너 필드를 저장한다.
153
+ 다음은 하나의 컨테이너를 가진 파드의 구성 파일이다.
151
154
152
155
{{< codenew file="pods/inject/dapi-volume-resources.yaml" >}}
153
156
154
- 구성 파일에서 파드에 ` downwardAPI ` 볼륨이 있고 컨테이너는 ` /etc/podinfo ` 에 볼륨을
155
- 마운트하는 것을 확인할 수 있다.
157
+ 구성 파일에서 파드에 [ ` downwardAPI ` 볼륨] ( /ko/docs/concepts/storage/volumes/#downwardapi ) 이 있고
158
+ 컨테이너는 ` /etc/podinfo ` 에
159
+ 볼륨을 마운트하는 것을 확인할 수 있다.
156
160
157
- ` downwardAPI ` 아래의 ` items ` 배열을 살펴보자. 배열의 각 요소는 DownwardAPIVolumeFile이다.
161
+ ` downwardAPI ` 아래의 ` items ` 배열을 살펴보자. 배열의 각 요소는
162
+ [ ` DownwardAPIVolumeFile ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumefile-v1-core)이다.
158
163
159
164
첫 번째 요소는 ` client-container ` 라는 컨테이너에서
160
165
` 1m ` 으로 지정된 형식의 ` limits.cpu ` 필드 값이
@@ -178,45 +183,56 @@ kubectl exec -it kubernetes-downwardapi-volume-example-2 -- sh
178
183
``` shell
179
184
/# cat /etc/podinfo/cpu_limit
180
185
```
186
+
181
187
비슷한 명령을 통해 ` cpu_request ` , ` mem_limit ` 및
182
188
` mem_request ` 파일을 확인할 수 있다.
183
189
184
-
185
-
186
190
187
191
192
+
188
193
## 다운워드 API의 기능
189
194
190
- 다음 정보는 환경 변수 및 ` downwardAPI ` 볼륨을 통해 컨테이너에서 사용할 수 있다.
195
+ 다음 정보는 환경 변수 및 ` downwardAPI ` 볼륨을 통해
196
+ 컨테이너에서 사용할 수 있다.
191
197
192
198
* ` fieldRef ` 를 통해 다음 정보를 사용할 수 있다.
199
+
193
200
* ` metadata.name ` - 파드의 이름
194
201
* ` metadata.namespace ` - 파드의 네임스페이스(Namespace)
195
202
* ` metadata.uid ` - 파드의 UID
196
- * ` metadata.labels[''] ` - 파드의 레이블 ` ` 값 (예를 들어, ` metadata.labels['mylabel'] ` )
197
- * ` metadata.annotations[''] ` - 파드의 어노테이션 ` ` 값 (예를 들어, ` metadata.annotations['myannotation'] ` )
203
+ * ` metadata.labels[''] ` - 파드의 레이블 ` ` 값
204
+ (예를 들어, ` metadata.labels['mylabel'] ` )
205
+ * ` metadata.annotations[''] ` - 파드의 어노테이션 ` ` 값
206
+ (예를 들어, ` metadata.annotations['myannotation'] ` )
207
+
198
208
* ` resourceFieldRef ` 를 통해 다음 정보를 사용할 수 있다.
209
+
199
210
* 컨테이너의 CPU 한도(limit)
200
211
* 컨테이너의 CPU 요청(request)
201
212
* 컨테이너의 메모리 한도(limit)
202
213
* 컨테이너의 메모리 요청(request)
203
- * 컨테이너의 hugepages 한도(limit) (` DownwardAPIHugePages ` [ 기능 게이트(feature gate)] ( /ko/docs/reference/command-line-tools-reference/feature-gates/ ) 가 활성화된 경우)
204
- * 컨테이너의 hugepages 요청(request) (` DownwardAPIHugePages ` [ 기능 게이트(feature gate)] ( /ko/docs/reference/command-line-tools-reference/feature-gates/ ) 가 활성화된 경우)
214
+ * 컨테이너의 hugepages 한도(limit) (` DownwardAPIHugePages `
215
+ [ 기능 게이트(feature gate)] ( /ko/docs/reference/command-line-tools-reference/feature-gates/ ) 가 활성화된 경우)
216
+ * 컨테이너의 hugepages 요청(request) (` DownwardAPIHugePages `
217
+ [ 기능 게이트(feature gate)] ( /ko/docs/reference/command-line-tools-reference/feature-gates/ ) 가 활성화된 경우)
205
218
* 컨테이너의 임시-스토리지 한도(limit)
206
219
* 컨테이너의 임시-스토리지 요청(request)
207
220
208
- ` downwardAPI ` 볼륨 ` fieldRef ` 를 통해 다음 정보를 사용할 수 있다.
221
+ ` downwardAPI ` 볼륨 ` fieldRef ` 를 통해
222
+ 다음 정보를 사용할 수 있다.
209
223
210
224
* ` metadata.labels ` - 한 줄에 하나의 레이블이 있는
211
- ` label-key="escaped-label-value" ` 형식의 모든 파드 레이블
212
- * ` metadata.annotations ` - 한 줄에 하나의 어노테이션이 있는 ` annotation-key="escaped-annotation-value" ` 형식의 모든 파드 어노테이션
225
+ ` label-key="escaped-label-value" ` 형식의 모든 파드 레이블
226
+ * ` metadata.annotations ` - 한 줄에 하나의 어노테이션이 있는
227
+ ` annotation-key="escaped-annotation-value" ` 형식의 모든 파드 어노테이션
213
228
214
229
환경 변수를 통해 다음 정보를 사용할 수 있다.
215
230
216
231
* ` status.podIP ` - 파드의 IP 주소
217
- * ` spec.serviceAccountName ` - 파드의 서비스 계정 이름, v1.4.0-alpha.3부터 사용 가능
218
- * ` spec.nodeName ` - 노드의 이름, v1.4.0-alpha.3부터 사용 가능
219
- * ` status.hostIP ` - 노드의 IP, v1.7.0-alpha.1 이후 사용 가능
232
+ * ` spec.serviceAccountName ` - 파드의 서비스 계정 이름
233
+ * ` spec.nodeName ` - 스케줄러가 항상 파드를 스케줄링하려고 시도할
234
+ 노드의 이름
235
+ * ` status.hostIP ` - 파드가 할당될 노드의 IP 주소
220
236
221
237
{{< note >}}
222
238
컨테이너에 대해 CPU 및 메모리 한도(limit)가 지정되지 않은 경우 다운워드 API는 기본적으로
@@ -231,7 +247,8 @@ CPU 및 메모리에 대해 할당 가능한 노드 값으로 설정한다.
231
247
232
248
## 다운워드 API에 대한 동기
233
249
234
- 컨테이너가 쿠버네티스에 과도하게 결합되지 않고 자체에 대한 정보를 갖는 것이 때때로 유용하다.
250
+ 컨테이너가 쿠버네티스에 과도하게 결합되지 않고
251
+ 자체에 대한 정보를 갖는 것이 때때로 유용하다.
235
252
다운워드 API를 사용하면 컨테이너가 쿠버네티스 클라이언트 또는 API 서버를 사용하지 않고
236
253
자체 또는 클러스터에 대한 정보를 사용할 수 있다.
237
254
@@ -241,19 +258,16 @@ CPU 및 메모리에 대해 할당 가능한 노드 값으로 설정한다.
241
258
더 나은 옵션은 파드의 이름을 식별자로 사용하고
242
259
파드의 이름을 잘 알려진 환경 변수에 삽입하는 것이다.
243
260
244
-
245
-
246
-
247
261
## {{% heading "whatsnext" %}}
248
262
249
-
250
- * [ PodSpec] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core)
251
- * [ 볼륨 ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#volume-v1-core)
252
- * [ DownwardAPIVolumeSource ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumesource -v1-core)
253
- * [ DownwardAPIVolumeFile ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumefile-v1-core)
254
- * [ ResourceFieldSelector ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#resourcefieldselector -v1-core)
255
-
256
-
257
-
258
-
259
-
263
+ * 파드의 목표 상태(desired state)를 정의하는
264
+ [ ` PodSpec ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#podspec-v1-core) API 정의를 확인한다.
265
+ * 컨테이너가 접근할 파드 내의 일반 볼륨을 정의하는
266
+ [ ` Volume ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#volume -v1-core) API 정의를 확인한다.
267
+ * 다운워드 API 정보를 포함하는 볼륨을 정의하는
268
+ [ ` DownwardAPIVolumeSource ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumesource -v1-core) API 정의를 확인한다.
269
+ * 다운워드 API 볼륨 내 파일을 채우기 위한
270
+ 오브젝트 또는 리소스 필드로의 레퍼런스를 포함하는
271
+ [ ` DownwardAPIVolumeFile ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#downwardapivolumefile-v1-core) API 정의를 확인한다.
272
+ * 컨테이너 리소스 및 이들의 출력 형식을 지정하는
273
+ [ ` ResourceFieldSelector ` ] (/docs/reference/generated/kubernetes-api/{{< param "version" >}}/#resourcefieldselector-v1-core) API 정의를 확인한다.
0 commit comments